通過Rancher pipeline實現服務的自動構建部署


目錄

  • 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.ymldeployment.yamlDockerfilesettings.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.ymlbuild階段會用到該文件。

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命名空間下部署該應用:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM