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 欄位配合使用: |