jenkins-1:kubernetes中部署的jenkins配置k8s集群连接
前置阅读:
目录:
(1).安装相关插件
(2).创建admin证书
1.安装证书工具
2.准备证书签名请求
3.创建证书和私钥
4.配置证书
(3).jenkins中配置kubernetes集群
(4).参考资料
(1).安装相关插件
然后重启jenkins,选中重启即可。
(2).创建admin证书
1.安装证书工具
安装cfssl
此工具生成证书非常方便, pem证书与crt证书,编码一致可直接使用
登录k8s master节点执行
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
chmod +x cfssl_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssljson_linux-amd64
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl-certinfo_linux-amd64
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
2.准备证书签名请求
vim admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "HangZhou",
"L": "XS",
"O": "system:masters",
"OU": "System"
}
]
}
证书请求中的O 指定该证书的 Group 为 system:masters
而 RBAC 预定义的 ClusterRoleBinding 将 Group system:masters 与 ClusterRole cluster-admin 绑定,这就赋予了该证书具有所有集群权限 。
3.创建证书和私钥
cfssl gencert -ca=/etc/kubernetes/pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key --profile=kubernetes admin-csr.json | cfssljson -bare admin
最终生成以下3个文件:
admin.csr
admin-key.pem
admin.pem
4.配置证书
生成pkc格式证书
我们可以通过openssl来转换成pkc格式:
openssl pkcs12 -export -out ./jenkins-admin.pfx -inkey ./admin-key.pem -in ./admin.pem -passout pass:secret
将jenkins-admin.pfx 下载至桌面,备后续使用。
(3).jenkins中配置kubernetes集群
点击系统管理-> 系统配置,在系统配置页面拉到最下方:
进入配置集群页面,选择“Kubernetes”:
选择“Kubernetes Cloud Detail”:
配置如下部分:
kubernetes服务证书key:cat /etc/kubernetes/pki/ca.crt的内容
kubernetes命名空间:default
然后点击添加凭据,上传之前下载的jenkins-admin.pfx文件,并输入密码:secret。
最后点击添加,返回前边页面选中刚才添加的这个凭据,点击链接测试,可以发现,jenkins和kubernetes连通了:Connected to Kubernetes v1.20.2。
最后保存,完成jenkins配置kubernetes的连通。
刚才创建的凭据在这里可以看到:
系统管理 -> Manage Credentials -> 点击jenkins
可以看到之前创建的全局凭据:
点进去看到内容:
http://jenkins.jenkins.svc.cluster.local:8080
Jenkins 通道:jnlp-pod会通过这个svc和jenkins进行交互通信。
jenkins-agent.jenkins.svc.cluster.local:50000
修改jenkins-pod的标签:
(4).参考资料
1.Kubernetes plugin for Jenkins
https://plugins.jenkins.io/kubernetes/#documentation
2.基于 Jenkins 的 CI/CD (一)
https://www.qikqiak.com/k8s-book/docs/36.Jenkins%20Slave.html
3.Jenkins基于https的k8s配置
https://www.cnblogs.com/xiao987334176/p/11338827.html
4.jenkins基于k8s动态增减jnlp-slave节点进行构建
https://blog.csdn.net/you227/article/details/81079167
5.Jenkins 和 Kubernetes -云上的神秘代理
https://www.jenkins.io/zh/blog/2018/09/14/kubernetes-and-secret-agents/
5.K8S - Jenkins在K8S下的持续集成
https://www.jianshu.com/p/aaa16f1566d7
6.jenkins-kubernetes-plugin 介绍
https://www.jianshu.com/p/873b19350c4d