首页/云/Kubernetes 速查/ingress-nginx 金丝雀发布注解
本包目录(307 条)
kubectl 基础56 条工作负载36 条
网络与服务55 条
配置与存储54 条调度与资源52 条集群运维与排障54 条

ingress-nginx 金丝雀发布注解

通过 canary 注解把部分流量导到新版本服务:按权重或按请求头/ cookie 分流,无需额外网关。

Kubernetes 速查云更新于 2026-10-12

金丝雀 Ingress

金丝雀 Ingress
metadata:
  name: web-canary
  annotations:
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-weight: "20"     # 20% 流量
    # 或按请求头:
    # nginx.ingress.kubernetes.io/canary-by-header: "x-canary"
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web-v2
                port:
                  number: 80

观察与收尾

观察与收尾
kubectl get ingress -n prod | grep canary
kubectl -n ingress-nginx logs deploy/ingress-nginx-controller --tail=100 | grep -i canary
# 验证 OK 后:把主 Ingress 指向 v2,删除金丝雀 Ingress
canary-by-header 优先级高于 canary-weight;同名规则请与主 Ingress 保持一致的 host/path。

易错点

  • 金丝雀规则匹配不上主 Ingress 的 host/path 时完全不生效,先对齐规则再调权重
  • 权重是请求级随机分布,不代表会话粘性;有状态业务配合 header 分流更可控

数据来源与参考

  • ingress-nginx 官方文档 · Canary Deployments
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌