本文主要演示如何在阿里云Kubernetes集群上快速搭建Jenkins持续集成环境,并基于提供的示例快速完成应用源码编译、应用镜像构建和推送以及流水线的应用部署。
前提条件
- 已创建Kubernetes集群。具体操作,请参见创建Kubernetes托管版集群。
- 已通过kubectl连接到Kubernetes集群。具体操作,请参见通过kubectl工具连接集群。
部署Jenkins
建议先按照以下步骤安装部署ack-jenkins应用,成功运行构建任务示例demo-pipeline,再依照此构建任务示例改造您的构建任务配置。
Kubernetes Cloud的配置说明
Jenkins使用Kubernetes Plugin连接Kubernetes集群并动态生成和释放Slave Pod。
- 在左侧导航栏选择返回工作台。
- 在Jenkins系统左侧导航栏选择系统管理。
- 在管理Jenkins页面的系统配置下单击节点管理。
- 在节点列表页面左侧导航栏选择Configure Clouds。
- 在配置集群页面单击Kubernetes Cloud details...。
在部署ack-jenkins时已自动化配置Kubernetes Cloud,以下为各个参数的具体说明:
参数 说明 名称 默认为 kubernetes
。Kubernetes地址 默认为 https://kubernetes.default.svc.cluster.local:443
,Jenkins系统安装在当前集群中,可以使用内部服务端点访问集群的API Server。Kubernetes命名空间 默认为 default
,动态Slave Pod会在命名空间default
下生成和销毁。Jenkins地址 默认为 http://ack-jenkins-default:8080
,Slave Pod连接Jenkins Master使用的服务端点。Jenkins通道 默认为 ack-jenkins-default-agent:50000
,Slave Pod使用Jnlp连接Jenkins Master。 - 在配置集群页面单击Pod Templates...,再单击Pod Templates details...。
在部署ack-jenkins时已自动化配置Pod Templates,以下为各个参数的具体说明:
参数 说明 名称 默认为 slave-pipeline
,Slave Pod的名称。命名空间 默认为 jenkins
。标签列表 默认为 slave-pipeline
,Jenkins构建任务通过此标签选择模板生成Slave Pod。容器列表 jnlp
用于连接Jenkins Master。kaniko
用于构建和推送容器镜像。Maven
用于构建和打包应用。kubectl
用于部署应用。
为Slave Pod配置Maven缓存
由于Slave Pod是在Kubernetes集群中动态生成的,可能运行于集群的任何一个Worker节点,所以要保证每次动态生成Slave Pod时都能使用到Maven缓存,就必须使用共享存储持久化存储卷。
使用kaniko构建和推送容器镜像
使用kaniko推送镜像时,需要设置镜像仓库的访问权限。
在本示例中,需要在Linux环境下(请注意不要在macOS下)生成访问镜像仓库的config.json文件。例如,需要构建和推送一个镜像registry.cn-hangzhou.aliyuncs.com/haoshuwei24/jenkins-demo:20200428
。
升级Jenkins
若您的Jenkins环境需要更换jenkins-master镜像,由于新版本Jenkins Master的自动化脚本会向/var/jenkins_home路径写数据,为了防止覆盖已有数据,请先为/var/jenkins_home目录对应的云盘存储卷做快照备份。具体操作,请参见使用云盘存储快照。