灰度服务配置
本章介绍通过IaC进行灰度服务配置的管理,包括灰度规则的管理及灰度阶段切换。对应的资源类型为WiseCloud::LoadBalancer::GrayConfig。
灰度比例转换为pod个数是通过向下取整法,例如:共6个pod,如果灰度比例配置为10%,灰度pod个数则为6 * 0.1 = 0.6,向下取整 = 0,但是必须保持1个的副本数,所以仍要置为1;如果灰度比例配置为20%,灰度pod个数则为6 * 0.2 = 1.2,向下取整 = 1。
使用限制
- 如果灰度集群(bindSlb.grayStatus配置为2)想要使用多阶段灰度升级,要求bindSlb.grayStatus在灰度期间保持配置为2。
- 首次部署时不要配置grayStage,因为要进行灰度升级首先要保证有一个正常运行的版本作为生产,而如果首次部署是满足不了这个条件的,所以要至少正确部署过一次之后才能进行灰度升级。
- 配置了grayInstances即代表要进入多阶段灰度升级,且百分比只能配置为1%~100%(字符串);但是如果第一阶段就直接配置为100%,则仍然执行普通升级模式。
- 灰度升级期间(包括进入灰度时),IaC配置中不允许修改grayStage.grayStatus、min_instances、max_instances和SLB相关配置,其他配置可以修改。
- 灰度升级过程中,如果grayInstances的比例达到了100%,grayProcess为INGRAY时,再进行比例缩小时,该场景只允许修改灰度比例。
- 灰度升级过程中,如果发现灰度版本配置错误,可以修改IaC配置将灰度集群进行重新部署,但是这时不允许修改grayInstances,即IaC配置和灰度比例只能修改其中一个。
- 多阶段灰度升级中,业务将grayInstances配置为100%(未配置grayProcess字段)或grayInstances配置为100%、grayProcess为FINISHED并部署成功后,才算灰度结束了;中间一个阶段部署成功了不算结束灰度,只算这一阶段部署成功了,此时仍然算在灰度升级过程中。
- 灰度过程中,不允许业务再执行普通部署,不允许在管理台上修改配置,只能通过IaC部署修改。
- 多阶段灰度升级和滚动升级同时使用时,maxUnavailable值必须配为0。
配置字段说明
灰度服务类型如表1所示,灰度服务配置字段说明请参见表2,各类型灰度路由引擎配置样例请参见配置样例,灰度升级配置demo请参见灰度升级配置demo。
|
参数名 |
类型 |
是否必选 |
说明 |
|---|---|---|---|
|
ruleType |
String |
是 |
类型:SLB、MicroService、Job、DMQ、Function。 |
|
currentStage |
int |
否 |
当前阶段,1=<currentStage<=sizeOf(Stages),默认为1。 |
|
currentStatus |
String |
否 |
当前状态,取值为Processing、Pause、Complete,默认为Complete。 |
|
functionName |
String |
否 |
ruleType为Function时必填,否则无效,长度<=200。 |
|
functionAliasName |
String |
否 |
ruleType为Function时必填,否则无效,长度<=255。 functionAliasName别名不能重复,一个别名只能有一条记录。 |
|
routeFlag |
String |
否 |
取值为Default/Special,默认为Default。 |
|
Stages |
List<GrayStage> |
是 |
灰度阶段 |
|
参数名 |
类型 |
是否必选 |
说明 |
|---|---|---|---|
|
stageIndex |
int |
否 |
阶段编号,最好按照顺序填写1 , 2 , 3 , 4… ,缺省为0 ,后台会排序后,按顺序赋值为1.2.3.4….。 |
|
greyRuleRelation |
String |
否 |
取值为or或and RouteType为SLB时必选,不为SLB时无效。 |
|
rules |
List<GrayRule> |
否 |
RouteType为SLB时必选,不为SLB时无效。 |
|
groupRelation |
String |
否 |
取值为or或and RouteType不为SLB时必选,为SLB时无效。 |
|
userExtendedParameter |
String |
否 |
RouteType为Job时有意义,非必选,不为job时无效,必须是json字符串格式。 |
|
groups |
List<GrayRuleGroup> |
否 |
RouteType为非SLB时必选,为SLB时无效。 |
|
参数名 |
类型 |
是否必选 |
说明 |
|---|---|---|---|
|
param |
String |
是 |
参数名variable为percent时可以为空,否则不能为空,长度<=50。
|
|
variable |
String |
是 |
|
|
position |
String |
否 |
位置
|
|
match |
String |
是 |
匹配方法
|
|
values |
String |
是 |
匹配值列表,多个值逗号分隔
|
|
参数名 |
类型 |
是否必选 |
说明 |
|---|---|---|---|
|
groupIndex |
Int |
否 |
建议按照顺序填写0,1,2,3,4… 不写默认从0开始排序,按顺序赋值为0,1,2,3,4….。 |
|
greyRuleRelation |
String |
是 |
取值为and或or |
|
microServiceVersion |
String |
否 |
微服务版本号,MicroServiceVersion和useInstanceProperty二选一。 Function类型可以两个都不选,DMQ类型只支持版本号。 如果配置组之间关系为与,各个配置组的版本号相同。 长度<=50 |
|
useInstanceProperty |
String |
否 |
微服务自定义灰度参数,MicroServiceVersion和useInstanceProperty二选一。 Function类型可以两个都不选,DMQ类型只支持版本号。 长度<=50 |
|
rules |
List<GrayRule> |
是 |
灰度规则列表 |
配置样例
SLB类型样例:
- name: clf_iac3.0_example_gray_SLB // name+type唯一定位到一个灰度服务资源
type: 'WiseCloud::LoadBalancer::GrayConfig' //资源类型为灰度服务配置
properties:
ruleType: SLB
stages:
- stageIndex: 1
rules:
- param: path
values: '5555'
match: equal
variable: path
position: path
greyRuleRelation: or
微服务类型样例:
- name: clf_iac3.0_example_gray_MicroService
type: 'WiseCloud::LoadBalancer::GrayConfig'
properties:
currentStatus: Processing
ruleType: MicroService
stages:
- stageIndex: 1
groupRelation: or
groups:
- microServiceVersion: latest
rules:
- param: aaa
values: '111'
match: equal
variable: custom
groupIndex: 1
greyRuleRelation: or
DMQ类型样例:
- name: clf_iac3.0_example_gray_DMQ
type: 'WiseCloud::LoadBalancer::GrayConfig'
properties:
ruleType: DMQ
stages:
- stageIndex: 1
groupRelation: and
groups:
- microServiceVersion: gray_1
rules:
- param: aaa
values: '2222'
match: pattern
variable: custom
- param: bbb
values: '1111'
match: equal
variable: custom
groupIndex: 1
greyRuleRelation: or
Job类型样例:
- name: clf_iac3.0_example_gray_Job
type: 'WiseCloud::LoadBalancer::GrayConfig'
properties:
ruleType: Job
stages:
- stageIndex: 1
groupRelation: or
groups:
- microServiceVersion: last
rules:
- param: ccc
values: ccc
match: equal
variable: custom
position: ''
groupIndex: 1
greyRuleRelation: or
- stageIndex: 2
groupRelation: or
groups:
- microServiceVersion: last
rules:
- param: ddd
values: ddd
match: tailEqual
variable: custom
groupIndex: 1
greyRuleRelation: or
Function类型样例:
- name: clf_iac3.0_example_gray_Function
type: 'WiseCloud::LoadBalancer::GrayConfig'
properties:
functionAliasName: >-
wisefunction:222cn:iot:mcb1fbf087634f199f3a4251c5b8a91e:function:pyd:quanzhong2wisefunction:cn:iot:mcb1fbf087634f199f3a4251c5b8a91e:function:pyd:quanzhong2wisefunction:cn:iot:mcb1fbf087634f199f3a4251c5b8a91e:function:pyd:quanzhong2
functionName: pyd
ruleType: Function
stages:
- stageIndex: 1
groupRelation: or
groups:
- rules:
- param: appid
values: '123456,22222'
match: equal
variable: custom
groupIndex: 1
greyRuleRelation: or