识别 revision 名称
启用 sidecar 注入所需的标签由特定的控制平面实例决定,该实例称为 revision。
每个 revision 由对应的 IstioRevision 资源管理,该资源由 Istio 资源自动管理。
IstioRevision 的命名约定基于 Istio 资源中的 spec.updateStrategy.type 设置:
InPlace:revision 与父级Istio资源同名。RevisionBased:revision 使用格式<istio-resource-name>-v<version>命名。
通常,每个 Istio 资源对应一个 IstioRevision。
但在基于 revision 的升级过程中,可能存在多个 IstioRevision 资源,每个代表一个独立的控制平面。
要列出可用的 revision,请使用以下命令:
示例输出:
使用默认 revision 启用 sidecar 注入
当 IstioRevision 的名称为 default 时,可以在命名空间或 Pod 上使用以下标签启用 sidecar 注入:
NOTE
你也可以通过给命名空间或 Pod 应用 istio.io/rev: default 标签来启用注入。
使用其他 revision 启用 sidecar 注入
当 IstioRevision 的名称不是 default 时,需要使用特定的 IstioRevision 名称配合 istio.io/rev 标签。
这将把 Pod 关联到所需的控制平面,并启用 sidecar 注入。
例如,使用上面示例中的 revision default-v1-28-3,以下标签将启用 sidecar 注入:
NOTE
当同时应用了 istio-injection 和 istio.io/rev 标签时,istio-injection 标签优先,命名空间会被视为属于默认 revision。
注入器的配置逻辑如下:
- 如果任一标签(
istio-injection或sidecar.istio.io/inject)被禁用,则不注入 Pod。 - 如果任一标签(
istio-injection、sidecar.istio.io/inject或istio.io/rev)被启用,则注入 Pod。