前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rancher流水线配置文档

Rancher流水线配置文档

作者头像
尚浩宇
发布2019-03-12 10:59:26
1.9K0
发布2019-03-12 10:59:26
举报
文章被收录于专栏:杂烩杂烩

一、概述

    Rancher流水线从逻辑上可以分为两部分,即CI和CD。

    CI,可分化为克隆代码、代码打包、发布镜像三部分。

    CD,可分为部署镜像。

二、配置

    完整的流水线脚本,类似如下:

代码语言:javascript
复制
stages:
- name: build
  steps:
  - runScriptConfig:
      image: maven:3.6.0-jdk-8-alpine
      shellScript: mvn clean package
- name: push-image
  steps:
  - publishImageConfig:
      dockerfilePath: ./Dockerfile
      buildContext: .
      tag: scc/hyperloop-baseapi:${CICD_EXECUTION_SEQUENCE}
      pushRemote: true
      registry: registry.cn-hangzhou.aliyuncs.com
- name: deploy
  steps:
  - applyYamlConfig:
      path: ./deployment.yaml
timeout: 60

2.1克隆代码

    此部分为Rancher强制默认,不可操作。

2.2代码打包

    一般根据代码语言执行对应的脚本,比如java+maven是

代码语言:javascript
复制
mvn clean package

2.3发布镜像    

    在代码根路径下创建Dockerfile文件,内容如下:

代码语言:javascript
复制
# 基于java8
FROM openjdk:8-jdk-slim
# 切换到 /opt目录
WORKDIR /opt
# 将编译的jar拷贝的当前目录
ADD target/baseapi.jar .
# 配置启动命令(两种方式,一种是写死在dockerfile,一种是在rancher上配置,相比前者,后者更灵活)
#CMD java -Dlog.kafka.address=$kafka_address -Dlog.kafka.topic=$kafka_topic -Ddisconf.conf_server_host=$conf_server -Ddisconf.env=$Env  -jar /opt/webapps/$jar_file
#CMD java -server -DlogRedisAddress=192.168.1.97 -Dpinpoint.applicationName=baseapi -Dspring.cloud.consul.enabled=true -Dspring.profiles.active=test -Xms512m -Xmx512m -jar /opt/apps/baseapi.jar

    注意创建页面配置镜像版本号时,使用环境变量${CICD_EXECUTION_SEQUENCE}

2.4部署镜像

    在代码根路径下创建deployment.yaml文件,内容如下:    

代码语言:javascript
复制
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: baseapi
  namespace: myapps
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      workload.user.cattle.io/workloadselector: deployment-myapps-baseapi
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      annotations:
        cattle.io/timestamp: 2019-01-08T10:18:34Z
      creationTimestamp: null
      labels:
        workload.user.cattle.io/workloadselector: deployment-myapps-baseapi
    spec:
      containers:
      - args:
        - java
        - -server
        - -DlogRedisAddress=192.168.1.97
        - -Dspring.cloud.consul.enabled=true
        - -Dspring.profiles.active=test
        - -jar
        - baseapi.jar
        image: ${CICD_IMAGE}:${CICD_EXECUTION_SEQUENCE}
        imagePullPolicy: Always
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /health
            port: 9700
            scheme: HTTP
          initialDelaySeconds: 60
          periodSeconds: 2
          successThreshold: 1
          timeoutSeconds: 2
        name: baseapi
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /health
            port: 9700
            scheme: HTTP
          initialDelaySeconds: 60
          periodSeconds: 2
          successThreshold: 2
          timeoutSeconds: 2
        resources: {}
        securityContext:
          allowPrivilegeEscalation: false
          capabilities: {}
          privileged: false
          readOnlyRootFilesystem: false
          runAsNonRoot: false
        stdin: true
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        tty: true
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: ali
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

    一个快捷的方法就是先手动在Rancher上部署镜像,然后复制yml文件,最后把文件里不必要的信息剔除即可。

    最后建议触发方式选择默认的手动,避免因触发导致的镜像更新引发的版本不一致问题(针对测试同学)。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、配置
    • 2.1克隆代码
      • 2.2代码打包
        • 2.3发布镜像    
          • 2.4部署镜像
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档