k8s 证书更新
如果底层容器运行时使用的是Docker
,可参考kubesphere证书更新。如果容器运行时是Containerd
,也可参考如上文章,区别是重启容器的命令。如是多节点master
,也可以依次重启各个master节点。
配置 k8s 集群对接
主要更新三个内容:连接k8s的凭据、k8s config、pod模板基础镜像(其实更新的是config)。
新建 k8s 凭据
登录 Jenkins,点击右上角「用户」 → 左下角「凭据」:
然后点击 Jenkins,选择全局凭据(Unrestricted)
添加凭据,类型选择X.509 Client Certificate
,下面证书文件需要使用Base64 编码/解码:
-
Client Key: .kube/config文件中
client-key-data
对应的 key 文件 -
Client Certificate: .kube/config文件中
client-certificate-data
对应的 crt 或是 pem 文件 -
Server CA Certificate:.kube/config 文件中
certificate-authority-data
对应的 crt 或是 pem 文件,K8S 的最高权限证书 -
ID:可不填写,默认会自动生成一串字符串,也可以自行设置
-
描述:描述下这个凭据的作用,比如这个可以写 对接 K8S 集群凭据
填写完毕,点击确定。
更新 k8s 集群的对接配置
登录 Jenkins,点击 系统管理 → 系统配置 → 滑动到页面最下面:
点击 a separate configuration page:
-
Kubernetes 地址:kubernetes服务地址,也就是 apiserver 的地址,一般是master 节点 NodeIP+6443 端口
-
Kubernetes 服务证书 key:
/etc/kubernetes/pki/ca.crt
文件的内容 -
凭据:刚才创建的 certificate 凭据
-
Jenkins 地址:Agent 连接 Jenkins Master 的地址
其他都使用默认配置,点击连接测试,连接测试成功,点击 Save 存储。
更新 K8S pod template 配置
更新pod详情中:容器列表 --> Docker 镜像。如果不更新则报错:
HTTP 401 Unauthorized
。
这里提供一个更新Dockerfile模板:
FROM docker.test.net/ops/jenkins-agent:v5.0-1-jdk11
MAINTAINER wtf <wutf@test.net>
COPY config /home/jenkins/.kube
构建镜像:
docker build -t docker.test.net/ops/jenkins-agent:v5.0-2-jdk11 .
上传镜像到harbor仓库:
docker push docker.test.net/ops/jenkins-agent:v5.0-2-jdk11
更新 Jenkins 容器配置
jenkins 数据目录已经持久化,更新路径:
/var/jenkins_home/.kube/config
中 config 文件。
如果不更新则代码提交,触发流水发布,但是k8s内并没有拉起一个jenkins agent pod
。