本文介绍如何在阿里云ACK Serverless集群中部署Jenkins并通过简单的应用示例演示其构建和部署的过程。
前提条件
已创建ACK Serverless集群。具体操作,请参见创建ACK Serverless集群。
已通过kubectl连接Kubernetes集群。具体操作,请参见通过kubectl连接Kubernetes集群。
注意事项
Jenkins系统的维护由开发者自行负责,此部分不提供企业级的技术支持。
步骤一:部署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!⎈
说明由于以上仓库属于海外Helm仓库,ACK Serverless集群在中国内地配置该Helm Repo时会稍微慢些,请您耐心等待。
安装Jenkins。
执行以下命令,创建命名空间
cicd
。kubectl create ns cicd
创建NAS共享存储卷。
共享存储卷用于保存Jenkins home中的数据,否则Jenkins Master Pod重启后,Jenkins的所有配置将会丢失。
当您选择CSI插件时,创建具体操作,请参见使用NAS静态存储卷。
当您选择Flexvolume插件时,创建具体操作,请参见使用NAS静态存储卷。
执行以下命令,将Jenkins部署至
cicd
命名空间中。helm -n cicd install jenkins jenkins/jenkins \ --set persistence.existingClaim=pvc-nas \ --set controller.serviceType="LoadBalancer" \ --set controller.adminPassword="admin"
persistence.existingClaim=pvc-nas:必选项,在
cicd
命名空间下创建的NAS存储卷的PVC名称为pvc-nas。controller.serviceType="LoadBalancer":可选项,默认为ClusterIP类型。
controller.adminPassword="admin":可选项,默认将生成随机密码。随机密码获取方式请参见如何通过LoadBalancer访问Jenkins服务以及获取默认随机密码。
更多部署相关参数,请参见helm-charts。
执行以下命令,查看并等待Jenkins Pod运行正常。
kubectl -n cicd get po
预期输出:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
浏览器访问Jenkins服务,并输入用户名和密码登录。
步骤二:创建流水线任务
以创建first-pipeline流水线任务为例,在构建流水线时,Jenkins会默认从当前ACK Serverless集群中动态启动一个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即可查看流水线构建结果。
如何通过LoadBalancer访问Jenkins服务以及获取默认随机密码
Jenkins的默认服务类型是ClusterIP类型,如需使用LoadBalancer暴露服务,请执行以下命令。
kubectl -n cicd patch svc jenkins -p '{"spec": {"type": "LoadBalancer"}}'
如果您在部署Jenkins时未指定登录密码,请执行以下命令,获取Jenkins默认随机密码。
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo