本文主要演示如何在阿里云Serverless Kubernetes服务上快速搭建jenkins持续集成环境,并基于提供的示例应用快速完成应用源码编译、镜像构建和推送以及应用部署的流水线。
前置条件
您已经创建了ACK Serverless Kubernetes集群。
快速部署Jenkins on ASK
部署jenkins:
$ git clone https://github.com/AliyunContainerService/jenkins-on-serverless.git $ cd jenkins-on-serverless
在部署之前,您还需要创建一个NAS共享存储卷(参考https://help.aliyun.com/document_detail/189293.html)来保存/var/jenkins_home下的数据,目标jenkins master pod重启后配置丢失。使用NAS共享存储卷修改serverless-k8s-jenkins-deploy.yaml中注释部分字段:
```
#volumeMounts:
# - mountPath: /var/jenkins_home
# name: jenkins-home
.....
#volumes:
# - name: jenkins-home
# nfs:
# path: /
# server:
```
部署:
$ kubectl apply -f serverless-k8s-jenkins-deploy.yaml
查看jenkins服务访问地址:
通过以下命令可以查看初始化密码,默认用户名是admin:
登录jenkins:
点击安装推荐的插件:
创建管理员账户:
保存并完成配置:
在Jenkins首页点击 Configure a cloud 继续配置连接Kubernetes集群用于动态分配构建节点:
点击Go to plugins manager:
选择Kubernetes插件并点击Download now and install after restart:
等待插件下载完毕并自动重启(页面显示的安装进度有问题,可以直接访问Jenkins首页查看是否跳转至登录页面):
重新登录Jenkins:
继续配置Kubernetes集群:
Kubernetes 地址: https://kubernetes.default.svc:443
禁用 HTTPS 证书检查: 勾选
命名空间: 自定义,动态生成的slave pod运行在指定的命名空间下,如default
凭据:参考“如何创建连接ASK集群的凭证”
Jenkins地址和通道配置: 参考 “如何配置jenkins地址和jenkins通道”
Pod Template配置: 参考https://developer.aliyun.com/article/783848
如何创建连接ASK集群的凭证
获取token连接kubernetes集群:
$ kubectl get secret NAME TYPE DATA AGE ack-jenkins-sa-token-q9g6v kubernetes.io/service-account-token 3 28m default-token-bn9zr kubernetes.io/service-account-token 3 27h $ kubectl get secret ack-jenkins-sa-token-q9g6v -o jsonpath={.data.token} |base64 -d xxxxxxxxxxxxxxxx
创建Secret Text类型凭证,Secret内容为xxxxxxxxxxxxxxxx,名字自定义,本示例为ask-jenkins-token
在系统管理->系统配置->Kubernetes cloud云中继续配置Kubernetes地址,选择凭据ask-jenkins-token,点击连接测试验证连接是否正常。
如何配置jenkins地址和jenkins通道
点击保存。
如何挂载maven缓存、如何为kaniko推送容器镜像设置权限等问题请参考:https://developer.aliyun.com/article/783848