
# 为服务添加灰度版本
一个服务仅支持发布一个灰度版本，并支持为版本添加灰度策略。
#### 基本概念
- 灰度版本 一个服务仅支持发布一个灰度版本，可以对灰度版本配置相应的灰度策略。
  
 
- 灰度策略 当您需要在生产环境发布一个新的待上线版本时，您可以选择添加一个灰度版本，并配置相应的灰度策略，将原有的生产环境的默认版本的流量引流一部分至此。经过评估稳定后，可以将此灰度版本接管所有流量，下线原来的版本，从而接管原有的生产环境的版本上的流量。
  
#### 创建金丝雀发布
1. 登录[应用服务网格控制台](https://console.huaweicloud.com/istio/?locale=zh-cn)，在左侧导航栏中选择"灰度发布"。在金丝雀发布下，单击"创建"。
2. 配置灰度版本基本信息。 
   - **灰度发布服务**
     单击"选择服务"，选择添加灰度版本的服务。
     
   
   - **部署集群**
     灰度发布服务所属的集群。
     
   
   - **发布任务名称**
     系统自动生成，可根据实际需求进行修改。
     
   
   - **版本号**
     新增服务中灰度版本号。
     
   
   
   
   - **版本描述**
     灰度版本描述信息。
     
   
   
   
   
3. 根据界面提示的流程图，熟悉灰度发布版本流程，单击"创建"。
4. 部署灰度版本。 
   - **实例数量**
     灰度版本的实例数量。灰度版本可以有一个或多个实例，用户可根据实际需求进行修改。每个灰度版本的实例都由相同的容器部署而成。
     
   
   - **镜像名称**
     默认为该服务的镜像。
     
   
   - **镜像版本**
     请选择需要添加灰度的镜像版本。
     
   
   
   
   
5. 单击"部署灰度版本"，灰度版本开始创建。 
   请确保灰度版本的实例状态为正常时，再开始下一步进行灰度策略的配置。
   
   
6. 单击"配置灰度策略"，进行灰度策略配置（可选）。 
   策略类型：分为"基于请求内容发布"和"基于流量比例发布"两种类型，通过页签选择确定。
   - **基于请求内容发布**
     对当前版本配置相应的请求内容规则，服务流量在满足此规则的情况下，会走此版本。例如http请求，请求头cookie必须满足"访问条件"走版本A。
     - Cookie内容： 正则匹配：此处需要您使用正则表达式来匹配相应的规则。
       
     
     - 自定义Header：
       - 完全匹配：当且仅当表达式完全符合此情况时，流量才会走到这个版本。
       
       - 正则匹配：此处需要您使用正则表达式来匹配相应的规则。 可以自定义请求头的key和value，value支持完全匹配和正则匹配。
         
        
     
     - 允许访问的操作系统：请选择允许访问的操作系统，包括iOS、android、windows、macOS。
     
     - 允许访问的浏览器：请选择允许访问的浏览器，包括Chrome、IE。
     
     - 灰度策略规则描述：当前服务的流量转发的规则描述信息及Yaml的查看。
       
   
   - **基于流量比例发布**
     对当前版本配置相应的流量权重，服务流量将会按照权重比率以对应的概率分发当前版本。例如10%的流量走版本A，90%的流量走版本B。
     - 版本流量配比：根据输入的流量配比来确定流量分发的比重。 范围限制为\[0,默认版本权重w\]。例如，当您配置为10，则10%的服务流量会走向此版本，(w-10)%的流量会走向默认版本，即从默认版本分走一部分流量。
       
     
     - 灰度策略规则描述：当前服务的流量转发的规则描述信息及Yaml的查看。
       
   
   
   ![](https://support.huaweicloud.com/usermanual-asm/public_sys-resources/note_3.0-zh-cn.png)
   - 如果当前服务已有灰度版本并配置了灰度策略，则策略类型不可选（灰度版本只能配置一种策略类型），默认为已经配置的策略类型。
   
   - 基于请求内容发布策略只对直接访问的入口服务有效。如果希望对所有服务有效，需要业务代码对HTTP请求的header信息进行传播。 **例如：**如果您基于review组件，配置了基于请求内容的灰度发布策略，通过访问productpage组件的界面，是无法看到效果的。
     原因为，您的客户端访问productpage组件携带了HTTP请求的header信息，而productpage组件请求reviews组件时，将这些header信息丢失了（详情可参考[如何使用Istio调用链埋点](https://support.huaweicloud.com/usermanual-asm/asm_01_0012.html#asm_01_0012__section437112311448)），从而失去了基于请求内容的灰度发布效果。
     
    
   
   
7. 设置完成后，单击"策略下发"。 
   灰度策略的生效需要几秒时间，您可以在监测灰度运行状态页面，观察灰度版本的运行状态。
   
   
 
#### 创建蓝绿发布
1. 登录[应用服务网格控制台](https://console.huaweicloud.com/istio/?locale=zh-cn)，在左侧导航栏中选择"灰度发布"。在蓝绿发布下，单击"创建"。
2. 配置灰度版本基本信息。 
   - **蓝绿发布服务**
     单击"选择服务"，选择待发布服务。
     
   
   - **部署集群**
     灰度发布服务所属的集群。
     
   
   - **发布任务名称**
     系统自动生成，可根据实际需求进行修改。
     
   
   - **版本号**
     新增服务中灰度版本号。
     
   
   
   
   - **版本描述**
     灰度版本描述信息。
     
   
   
   
   
3. 根据界面提示的流程图，熟悉灰度发布版本流程，单击"创建"。
4. 部署灰度版本。 
   - **实例数量**
     灰度版本的实例数量。灰度版本可以有一个或多个实例，用户可根据实际需求进行修改。每个灰度版本的实例都由相同的容器部署而成。
     
   
   - **镜像名称**
     默认为该服务的镜像。
     
   
   - **镜像版本**
     请选择需要添加灰度的镜像版本。
     
   
   
   
   
5. 单击"部署新版本"，新版本开始创建。 
   请确保灰度版本的实例状态为正常时，再开始下一步进行灰度策略的配置。
   
   
6. 单击"蓝绿策略配置与监控"，您可以在监测灰度运行状态页面，观察灰度版本的运行状态。
 
