搭配 Chaos Studio AKS 錯誤使用Microsoft Entra 驗證
概觀
Azure Chaos Studio 與 Chaos Mesh 整合,在 Azure Kubernetes Service (AKS) 叢集上執行錯誤,例如移除 Pod、CPU 壓力、網路中斷等等。 您可以根據本機帳戶或 AKS 管理的 Microsoft Entra 驗證,使用兩種不同類型的驗證來執行這些錯誤:
- Kubernetes 本機帳戶會儲存在 Kubernetes API 伺服器中,並可用來驗證和授權對叢集的要求。 在此頁面深入瞭解本機帳戶: 管理本機帳戶。
- AKS 管理的Microsoft Entra 驗證可讓您使用 Microsoft Entra 認證和 Azure RBAC 登入和管理叢集的許可權。 瞭解如何 啟用 AKS 管理的 Microsoft Entra 驗證。
注意
只要認證位於用戶端計算機上,本機帳戶許可權就會授與存取權,而 AKS 管理Microsoft Entra 驗證允許更多範圍的指派和管理許可權。 深入瞭解此最佳做法: 叢集安全性和升級的最佳做法。
Chaos Studio 先前僅支援搭配使用 Chaos Mesh 搭配本機帳戶,但所有 AKS 錯誤 2.2 版現在都支援本機帳戶和Microsoft Entra 驗證。
警告
如果您看到運行時錯誤 Object reference not set to an instance of an object
,這是 2.2 版錯誤的已知錯誤。 修正程式預計將在 2025 年 1 月初完成部署。 在已啟用本機帳戶的叢集上使用新的 AKS Chaos Mesh 錯誤版本 (2.2) 時,就會發生這種情況。 因應措施是使用在UI中標示為 「(deprecated)」的 v2.1 錯誤,或使用已啟用 Entra 驗證的 AKS 叢集。
更新目標
目標 (Microsoft.Chaos/targets
) 代表 Chaos Studio 資源模型中的另一個 Azure 資源,因此您可以輕鬆地控制是否啟用特定資源以進行錯誤插入,以及哪些錯誤可以針對它執行。 在此情況下,目標代表您想要影響的 AKS 叢集。
如果您要將 AKS 叢集上線為 Azure 入口網站 內的新 Chaos Studio 目標,則會自動提供新的錯誤版本。
如果您想要在現有的 AKS 目標上使用新的錯誤版本,您需要更新目標。 您可以使用下列其中一種作法:
- 停用並重新啟用目標資源。
- 若要在 Azure 入口網站 中這樣做,請流覽 Chaos Studio 入口網站介面中的 [目標] 窗格,選取相關的 AKS 叢集,然後選取 [停用目標]。 等候 1-2 分鐘或確認通知,然後選取 [啟用目標>啟用服務導向目標],然後流覽 [檢閱和建立] 畫面。
- 更新已啟用的功能。
- 若要在 Azure 入口網站 中這樣做,請流覽 Chaos Studio 中的 [目標] 窗格、尋找 AKS 叢集、選取 [管理動作],並確定已啟用所有功能。 選取 [ 儲存 ] 以完成更新。
如果您使用 API 或命令行,請遵循使用 Chaos Mesh 錯誤搭配 Azure CLI 建立混亂實驗中的指示,以確保已啟用最新的可用功能。
建立新的實驗
當您在 Azure 入口網站 中建立使用 AKS Chaos Mesh 錯誤的新實驗時,您可能會看到每個錯誤的兩個版本,例如“AKS Chaos Mesh DNS Chaos” 和 “AKS Chaos Mesh DNS Chaos(已淘汰)”。 選取第一個選項,而不是已被取代的選項。
如果您在選取錯誤之後未將 AKS 叢集視為可能的目標,您可能需要在叢集上啟用新的錯誤版本。 流覽 [目標] 頁面,尋找您的 AKS 叢集並選取 [管理動作],然後選取 [儲存] 之前,請確定已選取所有功能。
請遵循使用 Chaos Mesh 錯誤來使用 Azure 入口網站 教學課程來終止 AKS Pod 的混亂實驗,以建立實驗。
更新現有的實驗
請遵循這兩種方法之一來更新現有的實驗。
- 開啟包含至少一個 AKS 混亂網格錯誤的實驗。
- 選取 錯誤上的 [編輯 ],並將
jsonSpec
參數值複製到剪貼簿。 - 開啟 [錯誤選取] 下拉式清單,然後選取您想要的錯誤版本,
(deprecated)
而不需標記。 jsonSpec
將剪貼簿中的 貼到參數位段中。- 儲存錯誤和實驗。
權限
Chaos Studio 需要許可權,才能在您的資源上執行錯誤。
在 Azure 入口網站 中建立實驗時,您可以選擇性地選取 [啟用自定義角色建立和指派],讓 Chaos Studio 嘗試將必要的許可權指派給實驗的受控識別。
如果您選擇不使用自定義角色建立,或未使用 Azure 入口網站,則必須在建立實驗之後執行下列其中一項動作:
- 手動將 Azure Kubernetes Service RBAC 管理員和 Azure Kubernetes Service 叢集使用者角色指派給實驗受控識別(系統指派或使用者指派)。
- 手動建立自定義角色,以允許 RBAC 作業所需的作業完整清單。
- 手動建立自定義角色,以允許所需作業的部分清單,並部署自定義 YAML 檔案。 此程序詳述於 選擇性最低許可權存取。
RBAC 作業
下列 RBAC 作業用於 AKS Chaos Mesh 錯誤:
- 行動:
- Microsoft.ContainerService/managedClusters/read
- 資料動作:
- Microsoft.ContainerService/managedClusters/namespaces/read
- Microsoft.ContainerService/managedClusters/pods/read
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
- Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/read
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/delete
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/bind/action
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/escalate/action
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/read
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/write
- Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/delete
選擇性最低許可權存取
如果您不想授與 Chaos Studio 實驗身分識別的完整 ClusterRole 和 ClusterRoleBinding 讀取/寫入許可權,您可以手動建立 Chaos Mesh 的必要角色和系結。 這是 Chaos Mesh 的必要條件,以確保實驗具有以指定租使用者命名空間為目標的許可權。
此選擇性設定有兩個步驟。
將許可權指派給實驗的受控識別時,請使用具有一組有限許可權的自定義角色。 所需的權限包括:
- 行動:
- Microsoft.ContainerService/managedClusters/read
- 資料動作:
- Microsoft.ContainerService/managedClusters/namespaces/read
- Microsoft.ContainerService/managedClusters/pods/read
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
- Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
- Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
- 行動:
部署下列 YAML 組態以建立角色和系結。 深入瞭解 AKS 檔中的部署:使用 Azure 入口網站 部署 Azure Kubernetes Service (AKS) 叢集。
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: role-cluster-manager-pdmas rules: - apiGroups: - chaos-mesh.org resources: [ "*" ] verbs: ["get", "list", "watch", "create", "delete", "patch", "update"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: cluster-manager-binding namespace: {Namespace targeted by experiment} subjects: - kind: User name: {CHAOS-STUDIO-EXPERIMENT-MSI-OBJECT-ID} roleRef: kind: ClusterRole name: role-cluster-manager-pdmas apiGroup: rbac.authorization.k8s.io