Files
higress/plugins/wasm-go/extensions/frontend-gray

frontend-gray 前端灰度插件

功能说明

frontend-gray插件实现了前端用户灰度的的功能,通过此插件,不但可以用于业务A/B实验,同时通过可灰度配合可监控,可回滚策略保证系统发布运维的稳定性。

配置字段

名称 数据类型 填写要求 默认值 描述
grayKey string 非必填 - 用户ID的唯一标识可以来自Cookie或者Header中比如 userid如果没有填写则使用rules[].grayTagKeyrules[].grayTagValue过滤灰度规则
graySubKey string 非必填 - 用户身份信息可能以JSON形式透出比如userInfo:{ userCode:"001" },当前例子graySubKey取值为userCode
rules array of object 非必填 - 用户定义不同的灰度规则,适配不同的灰度场景
baseDeployment object 非必填 - 配置Base基线规则的配置
grayDeployments array of object 非必填 - 配置Gray灰度的生效规则以及生效版本

rules字段配置说明:

名称 数据类型 填写要求 默认值 描述
name string 必填 - 规则名称唯一标识,和deploy.gray[].name进行关联生效
grayKeyValue array of string 非必填 - 用户ID 白名单列表
grayTagKey string 非必填 - 用户分类打标的标签key值来自Cookie
grayTagValue array of string 非必填 - 用户分类打标的标签value值来自Cookie

baseDeployment字段配置说明:

名称 数据类型 填写要求 默认值 描述
version string 必填 - Base版本的版本号作为兜底的版本

grayDeployments字段配置说明:

名称 数据类型 填写要求 默认值 描述
version string 必填 - Gray版本的版本号如果命中灰度规则则使用此版本
name string 必填 - 规则名称和rules[].name关联,
enabled boolean 必填 - 是否启动当前灰度规则

配置示例

基础配置

grayKey: userid
rules:
- name: inner-user
  grayKeyValue:
  - '00000001'
  - '00000005'
- name: beta-user
  grayKeyValue:
  - '00000002'
  - '00000003'
  grayTagKey: level
  grayTagValue:
  - level3
  - level5
baseDeployment:
  version: base
grayDeployments:
  - name: beta-user
    version: gray
    enabled: true

cookie中的用户唯一标识为 userid,当前灰度规则配置了beta-user的规则。

当满足下面调试的时候,会使用version: gray版本

  • cookie中userid等于00000002或者00000003
  • cookie中level等于level3或者level5的用户

否则使用version: base版本

用户信息存在JSON中

grayKey: appInfo
graySubKey: userId
rules:
- name: inner-user
  grayKeyValue:
  - '00000001'
  - '00000005'
- name: beta-user
  grayKeyValue:
  - '00000002'
  - '00000003'
  grayTagKey: level
  grayTagValue:
  - level3
  - level5
baseDeployment:
  version: base
grayDeployments:
  - name: beta-user
    version: gray
    enabled: true

cookie存在appInfo的JSON数据其中包含userId字段为当前的唯一标识 当前灰度规则配置了beta-user的规则。 当满足下面调试的时候,会使用version: gray版本

  • cookie中userid等于00000002或者00000003
  • cookie中level等于level3或者level5的用户

否则使用version: base版本