jenkins跨kubernetes集群ci/cd
目的:jenkins部署在测试环境实现动态构建,需要实现在一个pipeline中通过A集群k8s编译上传镜像到仓库,在同一个pipeline中把应用部署到B集群中部署 且只添加一个kubernetes云
B集群环境添加RBAC
kubectl create namespace jenkins
kubectl -n jenkins create serviceaccount jenkins-robot
kubectl -n jenkins create rolebinding jenkins-robot-binding --clusterrole=cluster-admin --serviceaccount=jenkins:jenkins-robot
kubectl -n jenkins get serviceaccount jenkins-robot
kubectl -n jenkins get serviceaccount jenkins-robot -o go-template --template='{{range .secrets}}{{.name}}{{"\n"}}{{end}}'
kubectl -n jenkins get secrets jenkins-robot-token-dpg67 -o go-template --template '{{index .data "token"}}' | base64 -d
在把上面base64解密出来的secrets 添加到jenkins中
pipeline测试
node('jnlp-slave') {
//定义项目信息
......
stage('Deploy Application kubernetes')
withKubeConfig(caCertificate: '', clusterName: '', contextName: '', credentialsId: 'hw-k8s-x.x.x', namespace: 'jenkins', serverUrl: 'https://ip:6443') {
sh("kubectl create deploy my-dep --image=busybox")
}
}
这样就可以实现在A集群中执行完CI在B集群中执行CD kubectl命令
以上权限留一个坑!~~~~~~~~~~~~