通过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命名空间下部署该应用:

 

posted @ 2020-10-30 15:01  CoderZZZ  阅读(2016)  评论(1编辑  收藏  举报