专栏首页杂烩Rancher流水线配置文档

Rancher流水线配置文档

一、概述

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

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

    CD,可分为部署镜像。

二、配置

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

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是

mvn clean package

2.3发布镜像    

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

# 基于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文件,内容如下:    

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文件,最后把文件里不必要的信息剔除即可。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • spring的spel 转

     Spring 3.0 创建了一种新的方式用以配置对象的注入(set注入或者构造参数注入),它便是SpEL (Spring Expression Languag...

    尚浩宇
  • Rancher2.1.4使用记录 原

        说实话,Rancher的官方文档真的很全,围绕着UI的方方面面都面面俱到。但看多了却发现,很多东西都浅尝辄止,尤其某个东西实在不懂的时候,看文档只能让自...

    尚浩宇
  • Centos7安装Docker私服Harbor

        Harbor是由供职在VMWARE的几个中国人合伙研发,市面上已经存在众多Docker私服,为啥还会出现Harbor?因为Harbor的重心不同于其他,...

    尚浩宇
  • Python的输入和输出问题详解

    print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,如果你觉得理解的还不够透彻可以去小编的Python技术球球qun:278136312 qun里...

    py3study
  • Percona-tookit学习笔记(二)

    例如:pt-mysql-summary --user=root--password=root -h localhost|pt-align  【pt-mysql-...

    二狗不要跑
  • Python自学之路-内置函数说明及实例(三)

    filter函数用于过滤序列。过滤的方式则是采用传入的函数,去循环序列的元素调用,如果函数计算的结果为True则保留元素,否则将舍弃该元素。

    Bug生活2048
  • python2中为什么在进行类定义时最好

    Person类很明显能够看出区别,不继承object对象,只拥有了doc , module 和 自己定义的name变量, 也就是说这个类的命名空间只有三个对象可...

    py3study
  • Python3 初学实践案例(3)argparse 命令行参数库的使用

    Python3 初学实践案例(3)argparse 命令行参数库的使用 在前面一篇博文中 http://blog.csdn.net/fungleo/articl...

    FungLeo
  • 零基础学编程041:欧拉公式的几何意义

    欧拉公式号称是最美的出自上帝之手的数学公式,即 ? ,这个公式里 e 和 π 都是无理数,i 是 -1 的平方根,是一个虚数,0和1是最简单的整数,欧拉公式把...

    申龙斌
  • 分享 | 如何用代码教你做“社会人”

    Turtle库是Python中一个很流行的绘图函数库,主要是依据坐标轴来绘制图像,画笔则是一只小海龟,通过控制海龟的在坐标平面的移动,从而绘制各种各样的图像。

    潘永斌

扫码关注云+社区

领取腾讯云代金券