zoukankan      html  css  js  c++  java
  • 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文件,最后把文件里不必要的信息剔除即可。

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

    转载于:https://my.oschina.net/shyloveliyi/blog/2999380

  • 相关阅读:
    Eclipse / android studio 添加第三方jar包 步骤
    Android checkbox 自定义点击效果
    Android 程序打包和安装过程
    Android 基础
    (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法
    (转)eclipse 导入Android 项目 步骤
    微信开放平台注册 步骤
    Android Studio 初级安装
    数组
    作用域问题代码
  • 原文地址:https://www.cnblogs.com/twodog/p/12135284.html
Copyright © 2011-2022 走看看