ASM 自 1.28 版本起,支持通过 ASMReconcileNSLabels CRD 配置命名空间标签的同步策略。本文介绍 ASMReconcileNSLabels CRD 的 YAML 示例和字段说明。
使用场景
在多集群 ASM 实例中,控制面(ASM 实例)和数据面(Kubernetes 集群)的命名空间是独立管理的。当您在控制面为命名空间设置了 Istio 相关标签(如启用 Sidecar 注入或 Ambient 模式)后,默认情况下会将控制面的 Istio 相关标签同步至数据面集群中,你可以通过 ASMReconcileNSLabels 来修改这一行为。
使用限制
ASM 实例版本需为 1.28 及以上。关于升级实例的具体操作,请参见升级ASM实例。
ASMReconcileNSLabels是集群级别的资源(Cluster-scoped),在一个 ASM 实例中只能创建名为default的资源。仅以下 Istio 相关标签会被同步,其他自定义标签不受影响:
istio.io/dataplane-mode:标识命名空间使用 Ambient 数据面模式。istio-injection:标识命名空间是否启用 Sidecar 自动注入。istio.io/rev:标识命名空间使用的 Istio 修订版本。
YAML 示例
示例一:全局启用命名空间标签同步
将控制面的命名空间标签同步到所有数据面集群。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMReconcileNSLabels
metadata:
name: default # 必须为 default
spec:
syncPolicy:
enabled: true示例二:全局禁用命名空间标签同步
停止所有命名空间标签向数据面集群的同步。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMReconcileNSLabels
metadata:
name: default
spec:
syncPolicy:
enabled: false示例三:仅向指定集群同步(白名单)
仅将命名空间标签同步到指定的数据面集群。当 enabled 为 true 时,clusters 列表(集群 ID)作为白名单使用。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMReconcileNSLabels
metadata:
name: default
spec:
syncPolicy:
enabled: true
clusters:
- c-xxxx1 # 数据面集群 ID
- c-xxxx2示例四:排除指定集群(黑名单)
将命名空间标签同步到除指定集群以外的所有数据面集群。当 enabled 为 false 时,clusters 列表(集群 ID)作为黑名单使用。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMReconcileNSLabels
metadata:
name: default
spec:
syncPolicy:
enabled: false
clusters:
- c-xxxx3 # 数据面集群 ID示例五:指定同步源集群
通过 cardinal 字段指定作为标签同步来源的集群 ID。默认从控制面集群同步,您也可以指定某个数据面集群作为同步来源。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMReconcileNSLabels
metadata:
name: default
spec:
syncPolicy:
enabled: true
cardinal: c-xxxx4 # 作为同步来源的集群 ID示例六:组合使用白名单和同步源集群
从指定的源集群读取命名空间标签,并仅同步到白名单中的集群。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMReconcileNSLabels
metadata:
name: default
spec:
syncPolicy:
enabled: true
cardinal: c-xxxx4 # 作为同步来源的集群 ID
clusters:
- c-xxxx1
- c-xxxx2字段说明
Spec
字段 | 类型 | 是否必须 | 说明 |
syncPolicy | SyncPolicy | 否 | 全局同步策略,控制命名空间标签向数据面集群的同步行为。未配置时,默认向所有数据面集群同步。 |
SyncPolicy
SyncPolicy 定义了命名空间标签的同步行为。其中 enabled 和 clusters 字段共同决定同步范围,具体规则如下:
enabled | clusters | 同步行为 |
| 空 | 向所有数据面集群同步 |
|
| 仅向集群 A 和 B 同步(白名单) |
| 空 | 不向任何集群同步 |
|
| 向除集群 A 和 B 以外的所有集群同步(黑名单) |
字段 | 类型 | 是否必须 | 说明 |
enabled | bool | 否 | 控制同步策略的启用状态,默认为 |
cardinal | string | 否 | 指定作为标签同步来源的数据面集群 ID。未指定时默认从控制面集群同步。如果指定的集群不存在,将回退到控制面集群。 |
clusters | string[] | 否 | 数据面集群 ID 列表。与 enabled 字段配合使用: |