Jenkins用於實現持續整合和持續部署(CI/CD)流程,您可以在ACK叢集中部署Jenkins,確保服務的高可用,並降低營運成本。本文介紹如何在ACK叢集中部署Jenkins並通過簡單的應用樣本示範其構建和部署的過程。
前提條件
已安裝Helm CLI並使用kubectl串連叢集。具體操作,請參見Installing Helm、擷取叢集KubeConfig並通過kubectl工具串連叢集。
注意事項
Jenkins系統的維護由開發人員自行負責,此部分不提供企業級的支援人員。
Jenkins使用的Helm Chart與鏡像都來自海外源,可能出現拉取失敗的情況。您可以參考下列解決方案:
通過Container RegistryACR訂閱海外源鏡像,請參見通過製品訂閱擷取海外源鏡像。
建立Global AccelerationGA(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="****"persistence.storageClass:必選項,建立雲端硬碟儲存卷持久化儲存jenkins_home目錄檔案。設定為"alicloud-disk-available"時將自動選擇可用的雲端硬碟類型。persistence.size:必選項,雲端硬碟大小,阿里雲ECS雲端硬碟的最小規格為20 GiB。controller.serviceType:可選項,Service類型,預設為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
查看Service外部IP。
如果部署了LoadBalancer類型的Service,可以通過瀏覽器訪問Jenkins服務。
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
(可選)建立流水線任務
以建立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即可查看流水線構建結果。
常見問題
如何擷取Jenkins預設隨機密碼?
如果在部署Jenkins時未指定登入密碼,請執行以下命令擷取Jenkins預設隨機密碼。
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo