本文介紹如何在阿里云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