j9九游会登录/ 应用平台 appstage/ / / 在iac代码中定义流水线
更新时间:2025-05-21 gmt 08:00

在iac代码中定义流水线-j9九游会登录

iac代码中的流水线可以由用户定义,用户可以根据自己的需求定义整个环境在变更时的执行过程,在变更执行过程中,系统只会变更被流水线引用的资源,本章介绍如何定义流水线。

在哪里定义流水线

component间的编排在iac spec包中的meta.yaml文件中描述,涉及applypipeline/pipelines两个字段。pipelines中支持定义多个流程,applypipeline描述本次变更要使用的流程。pipeline能力丰富,通过设计pipeline可以实现精巧的多阶段部署、部分变更、主动暂停等复杂场景的变更编排。

图1 meta.yaml

如何定义流水线

meta.yaml文件涉及applypipeline/pipelines两个字段。pipelines中支持定义多个流程,applypipeline描述本次变更要使用的流程。pipeline能力丰富,通过设计pipeline可以实现精巧的多阶段部署、部分变更、主动暂停等复杂场景的变更编排。

样例如下:

type: wisecloud::environment      # 保留字,声明这是一个针对环境的iac代码
applypipeline: default            # 代码中指定的默认pipeline,指定的pipeline必须是在pipelines中声明的
pipelines:                        # 列表,可以定义多个pipeline,并在执行任务时选择
  - name: default                 # pipeline名称
    action: serial                # 此pipeline执行任务的策略 serial(串行)/ parallel(并行)
    tasks:                        # 声明流水线的子任务,通过声明pipeline的任务,实现对资源部署流程的编排
      - name: apply-chaosmonkey-stage1
        action: serial
        tasks:
          - name: deploy
            action: serial
            tasks:
              - name: apply-chaosmonkey-por
                action: apply
                component:
                  name: wiseeyechaosmonkeyportal
  - name: all
    action: serial
    tasks:
      - name: apply-chaosmonkey-stage1
        action: serial
        tasks:
          - name: deploy
            action: serial
            tasks:
              - name: apply-chaosmonkey-por
                action: apply
                component:
                  name: wiseeyechaosmonkeyportal
      - name: apply-chaosmonkey-stage2
        action: serial
        tasks:
          - name: deploy
            action: serial
            tasks:
              - name: apply-chaosmonkey-mgr
                action: apply
                component:
                  name: wiseeyechaosmonkeymgrservice
表1 meta.yaml字段说明

字段

说明

type

描述当前环境类型,当前为固定值wisecloud::environment。

applypipeline

定义默认选用的组件编排流水线名称,当前默认使用environment-deploy。

pipelines

pipelines中支持定义多个流程。

pipeline的任务声明

name/action都是一个流水线的基本信息,任务的编排是需要声明不同类型的task实现;当前支持的任务类型包括:serial(串行)/parallel(并行)/apply(声明式任务执行),其中,serial/parallel不涉及资源部署,我们仅通过此类任务将需要部署的资源串联起来,从而推动环境变更的过程。如果把pipeline比作一棵树的声明,那么所有tasks都是这棵树的子节点,apply是这棵树的叶子节点,只有叶子节点被执行时才会对环境产生影响。

图2 pipeline任务声明
  • serial(串行)/parallel(并行)任务定义

    定义serial(串行)/parallel(并行)任务将环境的资源变更流程串联起来。

    • serial,串行执行,其参数tasks下的子任务会根据定义的顺序依次执行。
    • parallel,并行执行,其参数tasks下的子任务会同时执行。
    - name: deploy    # 任务名称
      action: serial  # 此任务下其子任务的执行策略 serial(串行)/ parallel(并行)
      tasks:          # 子任务,必填,子任务可以是任意类型的的任务;
        - name: apply-chaosmonkey-mgr
          action: apply
          component:
            name: wiseeyechaosmonkeymgrservice
  • apply(声明式任务执行)任务定义

    我们可以通过定义apply类型的任务声明一个环境的资源,这些资源可以是nuwacontainer,数据库,配置等;

    - name: apply-chaosmonkey-por      # 任务名称
      action: apply                    # 任务类型
      inform:                          # 执行后通知配置
        message: finish stage2 notification
      confirm:                         # 执行前确认配置
        message: pause before execute task
      component:                       # 需要执行变更的component
        name: wiseeyechaosmonkeyportal # component名称
        resources:                     # component下需要执行变更的资源
          - name: por-nghbfcj1
            type: wisecloud::microservice::nuwacontainer #
            properties:
              graystage:
                grayinstances: 100    # 灰度百分比
                graystatus: 2         # 灰度实例对接slb时的状态,1:生产,2:灰度
                grayprocess: finished # 灰度状态,灰度处理完成
表2 组件编排流水线(pipeline)对象定义

字段名称

字段类型

必选

描述

name

string

流水线的名称,用户可自定义。

action

string

编排方式,可选值serial/parallel。

  • serial,串行执行,其参数tasks下的子任务会根据定义的顺序依次执行。
  • parallel,并行执行,其参数tasks下的子任务会同时执行。

tasks

list

声明流水线的子任务,通过声明pipeline的任务,实现对资源部署流程的编排。

表3 pipelinetasks字段说明

字段名称

字段类型

必选

描述

name

string

子任务的名称,用户可自定义。

action

string

编排方式,可选值:serial/parallel/apply。

tasks

list

编排方式为serial/parallel时必选。

component

applycomponent

需要执行变更的component,编排方式为apply时必选。

任务的数据结构在设计上支持了无限层级嵌套,配合action属性可以实现任意的任务串并行编排。

表4 component字段说明

字段名称

必选

描述

name

组件名称,填写的值必须为已声明的组件,否则在校验阶段会报错。

resources

选择变更的资源,选填,该参数可用于部分部署。

如果不填写则会变更此component下所有资源,使用name type alias确认唯一资源(alias是资源的别名,如果component下不存在同名资源则不需要填写)。

如果填写component中不存在的资源,系统会在校验阶段报错;resources下可以定义properties,这样在执行此任务时,这些properties的值就会去覆盖你在resources.yaml下定义的资源参数。

相关文档

网站地图