本文将完成 GitLab+Jenkins+Tomcat
的 CI/CD,并通过 Jenkins 的参数化构建完成 jenkins 的回滚,本文采用的回滚方式,是我在 git tag 和 脚本 两种方案之间选择的脚本回滚,因为考虑到 tag 方式还需要额外维护 tag 外,每次回滚需要重新构建;而脚本回滚的方式,每次构建会将构建结果做一个备份,回滚时直接使用备份即可,无需重复构建。
使用 kubectl 命令时,最烦人的就是频繁的切换命名空间了,查看什么资源都得加命名空间,每次敲命令在习惯也会很烦。今天在网上看到一篇文章,很有用,可以记住上一次使用 kubectl 时操作的命名空间。
在测试一个 java demo 项目时,需要用到 maven 来编译,因为公司网络是需要走代理访问外网的,在我不知道 maven 需要单独配置代理的情况下,一直使用 mvn package
进行打包编译,一直报错,如下:
在实际的生产环境中遇到了这样的问题:集群中有大量 k8s 节点,在部署应用时,需要拉取私有仓库(harbor/registry)的私有项目镜像,也就是节点必须 docker login
之后才可以正常拉取到镜像。但是也不可能每个节点都这样去做,或者写脚本把用户密码明文暴露,显然是不合适的
需要将镜像仓库的认证凭据(域名/ip,用户名,密码)保存在 k8s 中
相信大家在使用 kubeadm init
时,会发现在 /etc/kubernetes/pki
目录下生成一大堆证书文件;还有一些 k8s 插件在部署时,会创建 RBAC,这些都是为了 kubernetes 的安全而产生的。
- Authentication(鉴权):鉴定访问集群的身份
- Authorization(授权):在确认身份的基础上,给定符合身份的权限
- Admission Control(准入控制):安检
在前面的学习中,发现做的例子都是 Deployment ,且大部分使用 web 应用去做示例,为什么不用 mysql 类似数据库来做示例呢。
在 LNMP 架构中,应该了解过动静分离,也就是动态数据和静态数据,是以是否需要去访问数据库去进行读写数据来区分的。
Kubernetes 同样也区分了有状态应用和无状态应用,之前常用的 Deployment 就是为无状态应用而使用的。本文中提到的 StatefulSet 就是为有状态应用使用的。