Jenkins用于实现持续集成和持续部署(CI/CD)流程,您可以在ACK集群中部署Jenkins,确保服务的高可用,并降低运维成本。本文介绍如何在ACK集群中部署Jenkins并通过简单的应用示例演示其构建和部署的过程。
前提条件
- 已安装Helm CLI并使用kubectl连接集群。具体操作,请参见Installing Helm、获取集群KubeConfig并通过kubectl工具连接集群。 
注意事项
Jenkins系统的维护由开发者自行负责,此部分不提供企业级的技术支持。
Jenkins使用的Helm Chart与镜像都来自海外源,可能出现拉取失败的情况。您可以参考下列解决方案:
- 创建全球加速GA(Global Accelerator)实例,使用其覆盖全球的网络加速服务直接拉取海外源镜像,请参见使用GA实现ACK跨域加速拉取容器镜像。 
步骤一:部署Jenkins
- 执行以下命令,配置Jenkins Helm Repo。 - helm repo add jenkins https://charts.jenkins.io helm repo update- 预期输出: - Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "jenkins" chart repository Update Complete. ⎈Happy Helming!⎈
- 安装Jenkins。 - 执行以下命令,创建命名空间 - cicd。- kubectl create ns cicd
- 执行以下命令,将Jenkins部署至 - cicd命名空间中。- helm -n cicd install jenkins jenkins/jenkins \ --set persistence.storageClass="alicloud-disk-essd" \ --set persistence.size="20Gi" \ --set controller.serviceType="LoadBalancer" \ --set controller.admin.password="admin"- persistence.storageClass="alicloud-disk-available":必选项,将自动选择可用的云盘类型并创建云盘存储卷持久化存储jenkins_home目录文件。 
- persistence.size="20Gi":必选项,阿里云ECS云盘的最小规格为20 GiB。 
- controller.serviceType="LoadBalancer":可选项,默认为ClusterIP类型。 
- controller.admin.password="admin":可选项,默认将生成随机密码。 
 - 更多部署相关参数,请参见helm-charts。 
- 执行以下命令,查看并等待Jenkins Pod运行正常。 - kubectl -n cicd get po- 预期输出: - NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
 
- Jenkins的默认Service类型是ClusterIP类型,如需通过浏览器访问Jenkins,请执行以下命令,变更Service类型。 - kubectl -n cicd patch svc jenkins -p '{"spec": {"type": "LoadBalancer"}}'- 然后执行以下命令查看Service外部IP。 - kubectl get -n cicd service- 预期输出: - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE jenkins LoadBalancer 192.168.***.*** 8.222.***.*** 8080:30949/TCP 2d17h jenkins-agent ClusterIP 192.168.***.* <none> 50000/TCP 2d17h
- 在浏览器中,使用上一步得到的IP地址及端口访问Jenkins服务,并输入用户名和密码登录。 说明- 如果您在部署Jenkins时未指定登录密码,请执行以下命令,获取Jenkins默认随机密码。 - kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
(可选)创建流水线任务
以创建first-pipeline流水线任务为例,在构建流水线时,Jenkins会默认从当前ACK集群中动态启动一个Slave Pod并执行构建任务,构建任务执行完毕后会立即释放该Slave Pod。更多Jenkins配置信息,请参见Jenkins。
- 登录Jenkins,在左侧导航栏单击New Item。 
- 在Enter an item name区域,输入名称first-pipeline,选择Pipeline类型,然后单击OK。 
- 在页面顶部单击Pipeline页签,选择Hello World模板,然后单击Save。  
- 在页面左侧导航栏中,单击Build Now执行构建。 
- 在页面左侧导航栏中,单击Build History,然后单击1#进入该流水线详情页面,然后单击Console Output即可查看流水线构建结果。