目錄
- 1.項目配置
- 1.1 .rancher-pipeline.yml
- 1.2 deployment.yaml
- 1.3 Dockerfile
- 1.4 settings.xml
- 2.Rancher配置流水線
- 2.1 登錄Rancher
- 2.2 設置代碼庫
- 2.3 編輯配置
- 2.4 通知
- 2.4.1 添加通知
- 2.4.2 添加通知
- 2.4.3 啟用通知
- 2.4.4 樣例
- 3.運行流水線
- 3.1 運行
- 3.2 流水線運行
- 3.3 流水線執行完畢
1.項目配置
項目根目錄(與pom.xml同級)需要增加四個文件(.rancher-pipeline.yml、deployment.yaml、Dockerfile、settings.xml)
TODO內容需要根據項目進行更改:
1.1 .rancher-pipeline.yml
1 stages: 2 - name: bulid 3 steps: 4 - runScriptConfig: 5 image: maven:3.6.0-jdk-alpine 6 shellScript: |- 7 LOG_TAG="CHIP-INFO" 8 MVN_SETTINGS_PATH="/root/.m2" 9 if [ -d "${MVN_SETTINGS_PATH}" ];then 10 mv ./settings.xml ${MVN_SETTINGS_PATH} 11 if [ $? -eq 0 ];then 12 echo "[$LOG_TAG]Copy settings.xml to ${MVN_SETTINGS_PATH} success!" 13 else 14 echo "[$LOG_TAG]Copy settings.xml to ${MVN_SETTINGS_PATH} fail!" 15 fi 16 else 17 mkdir -p ${MVN_SETTINGS_PATH} && mv ./settings.xml ${MVN_SETTINGS_PATH} 18 echo "[$LOG_TAG]Create path:${MVN_SETTINGS_PATH} and copy settings.xml to ${MVN_SETTINGS_PATH}!" 19 fi 20 echo "[$LOG_TAG]Current pwd:`pwd`" 21 ls -l 22 echo "[$LOG_TAG]===========Execute Maven CMD Build Project Start===========" 23 mvn clean package -Dmaven.test.skip=true 24 echo "[$LOG_TAG]===========Execute Maven CMD Build Project End===========" 25 echo "[$LOG_TAG]Dir:target ls -l:`pwd`" 26 ls -l ./target 27 - name: publish 28 steps: 29 - publishImageConfig: 30 dockerfilePath: ./Dockerfile 31 buildContext: . 32 tag: 172.18.0.117:31134/zkxy-config:${CICD_EXECUTION_SEQUENCE} #TODO:zkxy-config改為配置的鏡像名稱 33 pushRemote: true 34 registry: 172.18.0.117:31134 #Docker私倉地址 35 env: 36 PLUGIN_DEBUG: "true" 37 PLUGIN_INSECURE: "true" 38 - name: deploy 39 steps: 40 - applyYamlConfig: 41 path: ./deployment.yaml 42 timeout: 60 43 notification: {}
1.2 deployment.yaml
1 kind: Service 2 apiVersion: v1 3 metadata: 4 name: zkxy-config #TODO:zkxy-config改為服務名稱 5 spec: 6 selector: 7 app: zkxy-config #TODO:zkxy-config改為服務名稱 8 type: NodePort 9 ports: 10 - protocol: TCP 11 port: 33002 #port是k8s集群內部訪問service的端口,即通過clusterIP:port可以訪問到某個service 12 targetPort: 32002 #容器的端口(最根本的端口),與制作容器時暴露的端口一致(DockerFile中EXPOSE) 13 nodePort: 32002 #nodePort是外部訪問k8s集群中service的端口,通過nodeIP:nodePort可以從外部訪問到某個service;有效端口范圍:30000-32767;有效端口范圍:30000-32767 14 apiVersion: apps/v1 15 kind: Deployment 16 metadata: 17 name: zkxy-config #TODO:zkxy-config改為服務名稱 18 labels: 19 app: zkxy-config #TODO:zkxy-config改為服務名稱 20 spec: 21 replicas: 1 22 selector: 23 matchLabels: 24 app: zkxy-config #TODO:zkxy-config改為服務名稱 25 template: 26 metadata: 27 labels: 28 app: zkxy-config #TODO:zkxy-config改為服務名稱 29 spec: 30 imagePullSecrets: 31 - name: private-repository 32 containers: 33 - name: zkxy-config #TODO:pod的名稱,必須字段,名稱唯一且對象創建后不可以被修改 34 #image: 172.18.0.116:31134/zkxy-config:latest #TODO:鏡像倉庫的路徑/鏡像的名稱:鏡像的標簽 35 image: ${CICD_IMAGE}:${CICD_EXECUTION_SEQUENCE} #TODO:鏡像倉庫的路徑/鏡像的名稱:鏡像的標簽,https://docs.rancher.cn/docs/rancher2/k8s-in-rancher/pipelines/example/_index#%E6%B5%81%E6%B0%B4%E7%BA%BF%E5%8F%98%E9%87%8F%E6%9B%BF%E6%8D%A2%E5%88%97%E8%A1%A8 36 imagePullPolicy: Always #Always(總是去倉庫下載),Never(從不去倉庫下載),IfNotPresent(如果本地沒有就去倉庫下載),默認是"IfNotPresent" 37 ports: 38 - containerPort: 32002 #TODO:containerPort是pod內部容器的端口,targetPort映射到containerPort;例如,mysql服務需要暴露3306端口,redis暴露6379端口
1.3 Dockerfile
Dockerfile的配置跟Jenkins中配置腳本時一樣,根據項目信息進行配置,包括jar包名稱和服務端口:
1 FROM java:8-jre 2 MAINTAINER zouxd@chip-cloud.com 3 ADD target/zkxy-config-0.0.1-SNAPSHOT.jar /zkxy-config-0.0.1-SNAPSHOT.jar 4 EXPOSE 32002 5 ENTRYPOINT ["/usr/bin/java","-jar","zkxy-config-0.0.1-SNAPSHOT.jar"]
1.4 settings.xml
settings.xml主要設置jenkins構建項目時Maven插件的配置信息。在 .rancher-pipeline.yml的build階段會用到該文件。
2.Rancher配置流水線
2.1 登錄Rancher
2.2 設置代碼庫
點擊設置代碼庫,配置gitlab登錄賬戶,拉取gitlab賬戶相關項目,設置成功后,相關項目出現在流水線中:
2.3 編輯配置
"編輯配置"想要自動構建的流水線:
選擇想要自動構建的分支,點擊"完成",彈出選擇“僅下載流水線配置”,點擊“確定”。
2.4 通知
2.4.1 添加通知
選擇集群,進入通知頁面
2.4.2 添加通知
2.4.3 啟用通知
設置流水線中選擇啟用通知,根據需要進行配置即可:
2.4.4 樣例
3.運行流水線
3.1 運行
選中部署的流水線,點擊“運行”,彈窗選擇想要的部署分支,點擊“運行”,啟動流水線自動部署:
3.2 流水線運行
啟動流水線運行,等待執行完成,此處編譯部署需要較長時間:
3.3 流水線執行完畢
流水線執行完畢,會在相應的pipline命名空間下部署該應用: