higress服务可以实现后端服务的流量灰度吗_专家答疑样例-Higress官网
云栖回顾 | 2024 云栖大会微服务和网关相关演讲材料点此了解

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

发布时间 2024-09-26


用户问题 :

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/v1
    kind: Ingress
    metadata:
    annotations:
    higress.io/canary: "true"
    higress.io/canary-by-header: "higress"
    name: demo-canary
    spec:
    ingressClassName: higress
    rules:
    - http:
    paths:
    - path: /hello
    pathType: Exact
    backend:
    service:
    name: demo-service-canary
    port:
    number: 80
  2. 确保有基础的服务Ingress配置

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: demo
    spec:
    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实现高阶流量治理

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

答疑服务说明:

本内容经由技术专家审阅的用户问答的镜像生成,我们提供了专家智能答疑服务,使用方法: 用法1: 在页面的右下的浮窗”专家答疑“。 用法2: 点击专家答疑页(针对部分网站不支持插件嵌入的情况)

另:

有其他开源产品的使用问题?点击访问阿里AI专家答疑服务

反馈

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