Verwenden der Microsoft Entra-Authentifizierung mit Chaos Studio AKS-Fehlern
Übersicht
Azure Chaos Studio ist in Chaos Mesh integriert, um Fehler in Azure Kubernetes Service-Clustern (AKS) auszuführen, z. B. Entfernen von Pods, CPU-Last, Netzwerkunterbrechungen und vieles mehr. Sie können zwei unterschiedliche Authentifizierungstypen verwenden, um diese Fehler auszuführen, je nach Konfiguration und Einstellungen. Verwenden Sie entweder lokale Konten oder von AKS verwaltete Microsoft Entra-Authentifizierung:
- Lokale Kubernetes-Konten werden auf dem Kubernetes-API-Server gespeichert und können zum Authentifizieren und Autorisieren von Anforderungen an den Cluster verwendet werden. Weitere Informationen zu lokalen Konten finden Sie auf dieser Seite: Verwalten lokaler Konten.
- Mit der von AKS verwalteten Microsoft Entra-Authentifizierung können Sie sich mit Microsoft Entra-Anmeldeinformationen und Azure RBAC anmelden und Berechtigungen für Ihren Cluster verwalten. Erfahren Sie, wie Sie die von AKS verwaltete Microsoft Entra-Authentifizierung aktivieren.
Hinweis
Lokale Kontoberechtigungen gewähren Zugriff, solange sich die Anmeldeinformationen auf dem Clientcomputer befinden. Die von AKS verwaltete Microsoft Entra-Authentifizierung ermöglicht hingegen eine besser zugeschnittene Zuweisung und Verwaltung von Berechtigungen. Weitere Informationen zu diesen bewährten Methoden finden Sie unter Best Practices für Clustersicherheit und Upgrades in Azure Kubernetes Service (AKS).
Chaos Studio unterstützte bisher nur die Verwendung von Chaos Mesh mit lokalen Konten. Version 2.2 aller AKS-Fehler unterstützt jetzt jedoch sowohl lokale Konten als auch die Microsoft Entra-Authentifizierung.
Warnung
Wenn ein Laufzeitfehler Object reference not set to an instance of an object
angezeigt wird, ist dies ein bekannter Fehler bei den Fehlern der Version 2.2. Es wird erwartet, dass ein Fix bis Anfang Januar 2025 bereitgestellt sein wird. Dies geschieht, wenn die neue AKS Chaos Mesh-Fehlerversion (2.2) auf einem Cluster verwendet wird, auf dem lokale Konten aktiviert sind. Die Problemumgehung besteht darin, die V2.1-Fehler zu verwenden, die in der Benutzeroberfläche als „(veraltet)“ gekennzeichnet sind, oder einen AKS-Cluster mit aktivierter Entra-Authentifizierung zu verwenden.
Aktualisieren von Zielen
Ziele (Microsoft.Chaos/targets
) stellen eine andere Azure-Ressource im Chaos Studio-Ressourcenmodell dar, sodass Sie ganz einfach steuern können, ob eine bestimmte Ressource für Fault Injection aktiviert ist und welche Fehler dafür ausgeführt werden können. In diesem Fall stellt das Ziel einen AKS-Cluster dar, den Sie beeinflussen möchten.
Wenn Sie einen AKS-Cluster als neues Chaos Studio-Ziel im Azure-Portal integrieren, stehen die neuen Fehlerversionen automatisch zur Verfügung.
Wenn Sie die neue Fehlerversion für ein vorhandenes AKS-Ziel verwenden möchten, müssen Sie das Ziel aktualisieren. Dazu haben Sie zwei Möglichkeiten:
- Deaktivieren Sie die Zielressource, und aktivieren Sie sie erneut.
- Um diesen Schritt im Azure-Portal auszuführen, rufen Sie den Bereich Ziele auf der Portaloberfläche von Chaos Studio auf, und wählen Sie die relevanten AKS-Cluster und dann Ziele deaktivieren aus. Warten Sie 1 bis 2 Minuten oder auf eine Bestätigungsbenachrichtigung, wählen Sie dann Ziele aktivieren>Direkte Dienstziele aktivieren aus, und führen Sie die Schritte auf dem Bildschirm „Überprüfen und erstellen“ aus.
- Aktualisieren Sie die aktivierten Funktionen.
- Um diesen Schritt im Azure-Portal auszuführen, rufen Sie den Bereich Ziele in Chaos Studio auf, suchen Sie die AKS-Cluster, und wählen Sie Aktionen verwalten aus. Stellen Sie sicher, dass alle Funktionen aktiviert sind. Wählen Sie Speichern aus, um die Aktualisierung abzuschließen.
Wenn Sie die API oder Befehlszeile verwenden, befolgen Sie die Anweisungen unter Erstellen eines Chaosexperiments, das einen Chaos Mesh-Fehler mit der Azure CLI verwendet, um sicherzustellen, dass die neuesten verfügbaren Funktionen aktiviert sind.
Erstellen eines neuen Experiments
Wenn Sie ein neues Experiment erstellen, das AKS Chaos Mesh-Fehler im Azure-Portal verwendet, werden möglicherweise zwei Versionen jedes Fehlers angezeigt, z. B. „AKS Chaos Mesh DNS-Chaos“ und „AKS Chaos Mesh DNS-Chaos (veraltet)“. Wählen Sie die erste Option und nicht die veraltete Option aus.
Wenn Ihr AKS-Cluster nach dem Auswählen des Fehlers nicht als mögliches Ziel angezeigt wird, müssen Sie möglicherweise die neue Fehlerversion für den Cluster aktivieren. Besuchen Sie die Seite „Ziele“, suchen Sie Ihren AKS-Cluster, und wählen Sie Aktionen verwalten aus. Stellen Sie dann sicher, dass alle Funktionen ausgewählt sind, bevor Sie Speichern auswählen.
Führen Sie die Schritte im Tutorial Erstellen eines Chaos-Experiments mit dem Azure-Portal, das einen Chaos Mesh-Fehler verwendet, um AKS-Pods zu entfernen aus, um ein Experiment zu erstellen.
Aktualisieren eines vorhandenen Experiments
Führen Sie eine dieser beiden Methoden aus, um Ihr vorhandenes Experiment zu aktualisieren.
- Öffnen Sie ein Experiment, das mindestens einen AKS Chaos Mesh-Fehler enthält.
- Wählen Sie Bearbeiten für den Fehler aus, und kopieren Sie den Wert des
jsonSpec
-Parameters in die Zwischenablage. - Öffnen Sie das Dropdownmenü für die Fehlerauswahl, und wählen Sie die Version des gewünschten Fehlers ohne die Markierung
(deprecated)
aus. - Fügen Sie
jsonSpec
aus der Zwischenablage in das Parameterfeld ein. - Speichern Sie den Fehler und das Experiment.
Berechtigungen
Chaos Studio benötigt die Berechtigung zum Ausführen von Fehlern für Ihre Ressourcen.
Beim Erstellen eines Experiments im Azure-Portal können Sie optional Benutzerdefinierte Rollenerstellung und -zuweisung aktivieren auswählen, damit Chaos Studio versuchen kann, die erforderlichen Berechtigungen der verwalteten Identität des Experiments zuzuweisen.
Wenn Sie sich gegen die Verwendung der benutzerdefinierten Rollenerstellung entscheiden oder nicht das Azure-Portal verwenden, müssen Sie nach dem Erstellen des Experiments einen der folgenden Schritte ausführen:
- Weisen Sie die Rollen RBAC-Administrator für Azure Kubernetes Service und Benutzer für Azure Kubernetes Service-Cluster manuell der verwalteten Experimentidentität (systemseitig oder benutzerseitig zugewiesen) zu.
- Erstellen Sie manuell eine benutzerdefinierte Rolle, und lassen Sie die vollständige Liste der in RBAC-Vorgängen erforderlichen Vorgänge zu.
- Erstellen Sie manuell eine benutzerdefinierte Rolle. Lassen Sie dabei eine partielle Liste der erforderlichen Vorgänge zu, und stellen Sie eine benutzerdefinierte YAML-Datei bereit. Dieser Vorgang wird unter Optionaler Zugriff mit den geringsten Rechten detailliert beschrieben.
RBAC-Vorgänge
Die folgenden RBAC-Vorgänge werden für AKS Chaos Mesh-Fehler verwendet:
- Aktionen:
- Microsoft.ContainerService/managedClusters/read
- Datenaktionen:
- 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
Optionaler Zugriff mit den geringsten Rechten
Wenn Sie keinen vollständigen ClusterRole- und ClusterRoleBinding-Lese/Schreibzugriff auf die Identität des Chaos Studio-Experiments gewähren möchten, können Sie manuell die erforderliche Rolle und Bindung für Chaos Mesh erstellen. Dies ist für Chaos Mesh erforderlich, um sicherzustellen, dass das Experiment über die Berechtigung zum Festlegen des angegebenen Mandantennamespace als Ziel verfügt.
Für diese optionale Konfiguration gibt es zwei Schritte.
Verwenden Sie beim Zuweisen von Berechtigungen zur verwalteten Identität des Experiments eine benutzerdefinierte Rolle mit begrenzten Berechtigungen. Die erforderlichen Berechtigungen sind:
- Aktionen:
- Microsoft.ContainerService/managedClusters/read
- Datenaktionen:
- 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
- Aktionen:
Stellen Sie die folgende YAML-Konfiguration bereit, um die Rolle und Bindung zu erstellen. In der AKS-Dokumentation erfahren Sie mehr über Bereitstellungen: Bereitstellen eines Azure Kubernetes Service-Clusters (AKS) über das Azure-Portal.
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