You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Deployment中用Canary标签覆盖Namespace默认Istio Stable注入标签

Istio Deployment级版本注入覆盖方案

你遇到的问题核心是:Namespace级的默认Istio版本绑定优先级高于直接在Pod模板添加istio.io/rev标签,尤其是当Namespace使用istio-injection=enabled而非istio.io/rev指定版本时。以下是两种可行的覆盖方案:

方案1:通过Deployment注解强制指定版本

直接在Deployment的元数据注解中添加sidecar.istio.io/rev: "canary",这会跳过Namespace的默认设置,强制该Deployment的Pod注入canary标签对应的1.13.9版本Sidecar。

示例Deployment配置片段:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: 你的应用Deployment名称
  annotations:
    sidecar.istio.io/rev: "canary" # 明确指定使用canary版本
spec:
  template:
    metadata:
      labels:
        app: 你的应用标识

方案2:调整Namespace标签+Pod模板标签覆盖

如果倾向用标签方式实现,需先修正Namespace的版本绑定方式:

  1. 移除Namespace上的istio-injection=enabled标签,改用istio.io/rev绑定stable版本:
kubectl label namespace dev istio-injection- istio.io/rev=stable
  1. 在Deployment的Pod模板中添加istio.io/rev: canary标签,覆盖Namespace的默认设置:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: 你的应用Deployment名称
spec:
  template:
    metadata:
      labels:
        app: 你的应用标识
        istio.io/rev: canary # 覆盖Namespace的stable版本

验证生效状态

更新Deployment后,执行以下命令检查Sidecar版本:

kubectl exec -it <你的Pod名称> -c istio-proxy -- pilot-agent version

输出中应显示1.13.9,说明覆盖成功。

关键说明

如果Namespace同时存在istio-injection=enabled和istio.io/rev标签,Istio会优先使用istio.io/rev。你之前添加Pod标签未生效,大概率是因为Namespace仍使用istio-injection=enabled绑定默认版本,导致Pod级标签被忽略。

内容的提问来源于stack exchange,提问作者Anup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:10:36