1、安装k8s插件
登录 Jenkins,系统管理→ 插件管理 → 搜索 kubernetes,选择第二个 Kubernetes,点击 安装,安装完成后重启 Jenkins 。
2、对接k8s集群、申请k8s凭据
因为 Jenkins 服务器在 kubernetes 集群之外,所以我们准备以下文件才能从外面连接到 kubernetes 集群。
登录 Jenkins,点击右上角「用户」 → 左下角「凭据」:
然后点击 System,选择全局凭据(Unrestricted)
添加凭据,类型选择 X.509 Client Certificate
Client Key: /root/.kube/config文件中 client-key 对应的 key 文件
Client Certificate: /root/.kube/config文件中 client-certificate 对应的 crt 或是 pem 文件
Server CA Certificate: /root/.kube/config 文件中 certificate-authority 对应的 crt 或是 pem 文件,K8S 的最高权限证书
ID:可不填写,默认会自动生成一串字符串,也可以自行设置
描述:描述下这个凭据的作用,比如这个可以写 对接 K8S 集群凭据
填写完毕,点击确定。可以看到一个凭据,后面会用到
3、配置k8s集群对接
登录 Jenkins,点击 系统管理 → Clouds,新增一个云;(注:此处需要注意一下,有的jenkins版本Clouds是在系统配置中的最后面)
Kubernetes 地址:kubernetes服务地址,也就是 apiserver 的地址,一般是master 节点 NodeIP+6443 端口
Kubernetes 服务证书 key:kube-ca.crt 文件的内容
凭据:刚才创建的 certificate 凭据
Jenkins 地址:Agent 连接 Jenkins Master 的地址
4、在jenkins节点安装kubectl命令行工具
curl -LO "https://storage.googleapis.com/kubernetes-release/release/v1.21.1/bin/linux/amd64/kubectl"
chmod u+x ./kubectl
5、创建流水线测试容器部署
创建流水线
#!/usr/bin/env groovy
library 'pipeline-libraries'
pipeline {
agent any
environment{
DEVOPS_URL ='http://10.10.10.10:389/dppipeline'
pipelineId ='c4402a6dbd28430cad9050b9109a7c89'
instNumber ='13'
repoName =''
mavenSettingsId ='global-maven-settings-1'
DEVOPS_WEB_URL =''
}
stages {
stage('k8s'){
steps{
script{
def image = params.GG
echo "{image}"
withKubeConfig([credentialsId: 'cd5a993e-7763-426e-bb1a-be9548aa43e5',serverUrl: 'https://10.10.10.1:6443']) {
sh './kubectl get nodes'
sh './kubectl run hello-test --image=test/hello:1.5-01 --port=8080'
sh './kubectl set image deploy nginx -n devops-middleware nginx=test/hello:1.0'
}
}
}
}
}
}
流水线创建成功
登录业务集群查看pod发布正常