在iac代码中定义流水线-j9九游会登录
iac代码中的流水线可以由用户定义,用户可以根据自己的需求定义整个环境在变更时的执行过程,在变更执行过程中,系统只会变更被流水线引用的资源,本章介绍如何定义流水线。
在哪里定义流水线
component间的编排在iac spec包中的meta.yaml文件中描述,涉及applypipeline/pipelines两个字段。pipelines中支持定义多个流程,applypipeline描述本次变更要使用的流程。pipeline能力丰富,通过设计pipeline可以实现精巧的多阶段部署、部分变更、主动暂停等复杂场景的变更编排。
如何定义流水线
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
|
字段 |
说明 |
|---|---|
|
type |
描述当前环境类型,当前为固定值wisecloud::environment。 |
|
applypipeline |
定义默认选用的组件编排流水线名称,当前默认使用environment-deploy。 |
|
pipelines |
pipelines中支持定义多个流程。 |
pipeline的任务声明
name/action都是一个流水线的基本信息,任务的编排是需要声明不同类型的task实现;当前支持的任务类型包括:serial(串行)/parallel(并行)/apply(声明式任务执行),其中,serial/parallel不涉及资源部署,我们仅通过此类任务将需要部署的资源串联起来,从而推动环境变更的过程。如果把pipeline比作一棵树的声明,那么所有tasks都是这棵树的子节点,apply是这棵树的叶子节点,只有叶子节点被执行时才会对环境产生影响。
- 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 # 灰度状态,灰度处理完成
|
字段名称 |
字段类型 |
必选 |
描述 |
|---|---|---|---|
|
name |
string |
是 |
流水线的名称,用户可自定义。 |
|
action |
string |
是 |
编排方式,可选值serial/parallel。
|
|
tasks |
list |
是 |
声明流水线的子任务,通过声明pipeline的任务,实现对资源部署流程的编排。 |
|
字段名称 |
字段类型 |
必选 |
描述 |
|---|---|---|---|
|
name |
string |
否 |
子任务的名称,用户可自定义。 |
|
action |
string |
是 |
编排方式,可选值:serial/parallel/apply。 |
|
tasks |
list |
否 |
编排方式为serial/parallel时必选。 |
|
component |
applycomponent |
否 |
需要执行变更的component,编排方式为apply时必选。 |
任务的数据结构在设计上支持了无限层级嵌套,配合action属性可以实现任意的任务串并行编排。
|
字段名称 |
必选 |
描述 |
|---|---|---|
|
name |
是 |
组件名称,填写的值必须为已声明的组件,否则在校验阶段会报错。 |
|
resources |
否 |
选择变更的资源,选填,该参数可用于部分部署。 如果不填写则会变更此component下所有资源,使用name type alias确认唯一资源(alias是资源的别名,如果component下不存在同名资源则不需要填写)。 如果填写component中不存在的资源,系统会在校验阶段报错;resources下可以定义properties,这样在执行此任务时,这些properties的值就会去覆盖你在resources.yaml下定义的资源参数。 |
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨