共用方式為


搭配 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 的混亂實驗,以建立實驗。

更新現有的實驗

請遵循這兩種方法之一來更新現有的實驗。

  1. 開啟包含至少一個 AKS 混亂網格錯誤的實驗。
  2. 選取 錯誤上的 [編輯 ],並將 jsonSpec 參數值複製到剪貼簿。
  3. 開啟 [錯誤選取] 下拉式清單,然後選取您想要的錯誤版本, (deprecated) 而不需標記。
  4. jsonSpec將剪貼簿中的 貼到參數位段中。
  5. 儲存錯誤和實驗。

權限

Chaos Studio 需要許可權,才能在您的資源上執行錯誤。

在 Azure 入口網站 中建立實驗時,您可以選擇性地選取 [啟用自定義角色建立和指派],讓 Chaos Studio 嘗試將必要的許可權指派給實驗的受控識別。

如果您選擇不使用自定義角色建立,或未使用 Azure 入口網站,則必須在建立實驗之後執行下列其中一項動作:

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 的必要條件,以確保實驗具有以指定租使用者命名空間為目標的許可權。

此選擇性設定有兩個步驟。

  1. 將許可權指派給實驗的受控識別時,請使用具有一組有限許可權的自定義角色。 所需的權限包括:

    • 行動:
      • 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
  2. 部署下列 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