Skip to main content

higress服务可以实现后端服务的流量灰度吗

用户问题 :#

higress服务可以实现后端服务的流量灰度吗


专家官方解答 :#

Higress 服务确实可以实现后端服务的流量灰度发布。根据提供的知识内容,Higress 支持以下几种灰度发布策略:

  1. 基于Header的灰度发布

    • 你可以通过设置higress.io/canary-by-header注解来根据请求头中的特定键名分配流量到灰度服务。例如,当请求头中包含higress: always时,流量将被导向灰度服务。
    • 更进一步,结合higress.io/canary-by-header-value可以基于请求头的键值对精确控制流量切分,如分别配置v1v2值到不同的灰度版本服务。
  2. 基于Cookie的灰度发布

    • 使用higress.io/canary-by-cookie注解,可以根据请求携带的Cookie中特定键的值(必须为always)来路由流量至灰度服务。
  3. 基于权重的灰度发布

    • 利用higress.io/canary-weighthigress.io/canary-weight-total注解可以灵活地按百分比分配流量。例如,你可以设定不同灰度版本与生产版本之间的流量比例。

具体实施步骤#

实现基于Header的灰度发布#

假设我们要为服务demo-service设置一个简单的灰度发布场景,其中请求头higress: always的请求应该被路由到灰度版本demo-service-canary

  1. 创建灰度服务Ingress配置

    apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  annotations:    higress.io/canary: "true"    higress.io/canary-by-header: "higress"  name: demo-canaryspec:  ingressClassName: higress  rules:  - http:      paths:      - path: /hello        pathType: Exact        backend:          service:            name: demo-service-canary            port:              number: 80
  2. 确保有基础的服务Ingress配置

    apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: demospec:  ingressClassName: higress  rules:  - http:      paths:      - path: /hello        pathType: Exact        backend:          service:            name: demo-service            port:              number: 80

实现基于权重的灰度发布#

若要按照不同权重分配流量至多个版本,需分别为每个灰度版本服务创建独立的Ingress资源,并设置相应的higress.io/canary-weight

解释#

上述步骤利用了Higress的高级流量治理能力,通过Ingress资源的注解配置实现了灵活的灰度发布策略。基于Header和Cookie的灰度发布让您可以根据请求特征精确控制流量流向,而基于权重的灰度发布则提供了更细粒度的流量分配,无需客户端做特殊配置即可平滑地测试新版本服务。这些策略共同确保了在部署新功能或更新时,能最小化对现有用户的潜在影响,是进行持续集成和持续部署(CI/CD)流程中不可或缺的一环。

---------------

参考链接 :#

  • 专家经验:灰度发布和跨域-通过Ingress Annotation实现高阶流量治理
---------------

答疑服务说明:#

本内容经由技术专家审阅的用户问答的镜像生成,我们提供了专家智能答疑服务,在页面的右下的浮窗”专家答疑“。您也可以访问 : 全局专家答疑 。 咨询其他产品的的问题

反馈#

如问答有错漏,欢迎点:差评给我们反馈。