Usare l'autenticazione di Microsoft Entra con gli errori del servizio Azure Kubernetes di Chaos Studio
Panoramica
Azure Chaos Studio si integra con Chaos Mesh per eseguire errori nei cluster servizio Azure Kubernetes (servizio Azure Kubernetes), ad esempio la rimozione di pod, lo stress della CPU, l'interruzione della rete e altro ancora. È possibile usare due diversi tipi di autenticazione per eseguire questi errori, a seconda della configurazione e delle preferenze, sia degli account locali che dell'autenticazione di Microsoft Entra gestita dal servizio Azure Kubernetes:
- Gli account locali Kubernetes vengono archiviati nel server API Kubernetes e possono essere usati per autenticare e autorizzare le richieste al cluster. Per altre informazioni sugli account locali, vedere questa pagina: Gestire gli account locali.
- L'autenticazione di Microsoft Entra gestita dal servizio Azure Kubernetes consente di accedere e gestire le autorizzazioni per il cluster usando le credenziali di Microsoft Entra e il controllo degli accessi in base al ruolo di Azure. Informazioni su come abilitare l'autenticazione di Microsoft Entra gestita dal servizio Azure Kubernetes.
Nota
Le autorizzazioni dell'account locale concedono l'accesso purché le credenziali si trovino nel computer client, mentre l'autenticazione di Microsoft Entra gestita dal servizio Azure Kubernetes consente un'assegnazione e una gestione più con ambito delle autorizzazioni. Altre informazioni su questa procedura consigliata: Procedure consigliate per la sicurezza e gli aggiornamenti del cluster.
Chaos Studio in precedenza supportava solo l'uso di Chaos Mesh con account locali, ma la versione 2.2 di tutti gli errori del servizio Azure Kubernetes ora supporta sia gli account locali che l'autenticazione di Microsoft Entra.
Avviso
Se viene visualizzato un errore Object reference not set to an instance of an object
di runtime, si tratta di un bug noto con gli errori della versione 2.2. È prevista una correzione per completare la distribuzione all'inizio di gennaio 2025. Ciò si verifica quando si usa la nuova versione di errore Chaos Mesh del servizio Azure Kubernetes (2.2) in un cluster con account locali abilitati. La soluzione alternativa consiste nell'usare gli errori v2.1 contrassegnati come "(deprecati)" nell'interfaccia utente o usare un cluster del servizio Azure Kubernetes con l'autenticazione Entra abilitata.
Aggiornare le destinazioni
Le destinazioni (Microsoft.Chaos/targets
) rappresentano un'altra risorsa di Azure nel modello di risorse di Chaos Studio, quindi è possibile controllare facilmente se una determinata risorsa è abilitata per l'inserimento degli errori e quali errori possono essere eseguiti su di esso. In questo caso, la destinazione rappresenta un cluster del servizio Azure Kubernetes che si vuole influire.
Se si esegue l'onboarding di un cluster del servizio Azure Kubernetes come nuova destinazione chaos Studio all'interno del portale di Azure, le nuove versioni di errore saranno automaticamente disponibili.
Se si vuole usare la nuova versione di errore in una destinazione del servizio Azure Kubernetes esistente, è necessario aggiornare la destinazione. È possibile effettuare questa operazione in uno dei due modi seguenti:
- Disabilitare e riabilitare la risorsa di destinazione.
- A tale scopo nel portale di Azure, visitare il riquadro Destinazioni nell'interfaccia del portale di Chaos Studio, selezionare i cluster del servizio Azure Kubernetes pertinenti e selezionare Disabilita destinazioni. Attendere 1-2 minuti o per una notifica di conferma, quindi selezionare Abilita destinazioni abilita destinazioni> dirette al servizio e passare alla schermata Rivedi e crea.
- Aggiornare le funzionalità abilitate.
- Per eseguire questa operazione nel portale di Azure, visitare il riquadro Destinazioni in Chaos Studio, individuare i cluster del servizio Azure Kubernetes, selezionare Gestisci azioni e assicurarsi che tutte le funzionalità siano abilitate. Selezionare Salva per finalizzare l'aggiornamento.
Se si usa l'API o la riga di comando, seguire le istruzioni riportate in Creare un esperimento chaos che usa un errore Chaos Mesh con l'interfaccia della riga di comando di Azure per assicurarsi che le funzionalità disponibili più recenti siano abilitate.
Creare un nuovo esperimento
Quando si crea un nuovo esperimento che usa gli errori di Chaos Mesh del servizio Azure Kubernetes nel portale di Azure, è possibile che vengano visualizzate due versioni di ogni errore, ad esempio "AKS Chaos Mesh DNS Chaos Chaos" e "AKS Chaos Mesh DNS Chaos (deprecato)". Selezionare la prima opzione, non l'opzione deprecata.
Se il cluster del servizio Azure Kubernetes non viene visualizzato come destinazione possibile dopo aver selezionato l'errore, potrebbe essere necessario abilitare la nuova versione di errore nel cluster. Visitare la pagina Destinazioni, trovare il cluster del servizio Azure Kubernetes e selezionare Gestisci azioni, quindi assicurarsi che tutte le funzionalità siano selezionate prima di selezionare Salva.
Seguire l'esercitazione Creare un chaos che usa un errore Chaos Mesh per uccidere i pod del servizio Azure Kubernetes con l'esercitazione portale di Azure per creare un esperimento.
Aggiornare un esperimento esistente
Seguire uno di questi due metodi per aggiornare l'esperimento esistente.
- Aprire un esperimento contenente almeno un errore di Chaos Mesh del servizio Azure Kubernetes.
- Selezionare Modifica nell'errore e copiare il valore del
jsonSpec
parametro negli Appunti. - Aprire l'elenco a discesa selezione errori e selezionare la versione dell'errore desiderato senza il
(deprecated)
contrassegno. - Incollare l'oggetto
jsonSpec
dagli Appunti nel campo del parametro. - Salvare l'errore e l'esperimento.
Autorizzazioni
Chaos Studio necessita dell'autorizzazione per eseguire errori nelle risorse.
Quando si crea un esperimento nella portale di Azure, è possibile selezionare facoltativamente Abilita creazione e assegnazione di ruoli personalizzati per consentire a Chaos Studio di tentare di assegnare le autorizzazioni necessarie all'identità gestita dell'esperimento.
Se si sceglie di non usare la creazione di ruoli personalizzati o non si usa il portale di Azure, è necessario eseguire una delle operazioni seguenti dopo aver creato l'esperimento:
- Assegnare manualmente i ruoli servizio Azure Kubernetes amministratore del controllo degli accessi in base al ruolo e servizio Azure Kubernetes utente del cluster all'identità gestita dell'esperimento (assegnata dal sistema o assegnata dall'utente).
- Creare manualmente un ruolo personalizzato che consenta l'elenco completo delle operazioni necessarie nelle operazioni di controllo degli accessi in base al ruolo.
- Creare manualmente un ruolo personalizzato che consenta un elenco parziale delle operazioni necessarie e distribuire un file YAML personalizzato. Questo processo è descritto in Dettaglio nell'accesso facoltativo con privilegi minimi.
Operazioni di controllo degli accessi in base al ruolo
Per gli errori di Chaos Mesh del servizio Azure Kubernetes vengono usate le operazioni di controllo degli accessi in base al ruolo seguenti:
- Azioni:
- Microsoft.ContainerService/managedClusters/read
- Azioni dati:
- 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
Accesso con privilegi minimi facoltativi
Se si preferisce non concedere l'accesso in lettura/scrittura a ClusterRole e ClusterRoleBinding all'identità dell'esperimento di Chaos Studio, è possibile creare manualmente il ruolo e l'associazione necessari per Chaos Mesh. Questa operazione è necessaria per Chaos Mesh per garantire che l'esperimento disponga dell'autorizzazione per specificare lo spazio dei nomi del tenant specificato.
Questa configurazione facoltativa prevede due passaggi.
Quando si assegnano autorizzazioni all'identità gestita dell'esperimento, usare un ruolo personalizzato con un set limitato di autorizzazioni. Le autorizzazioni necessarie sono:
- Azioni:
- Microsoft.ContainerService/managedClusters/read
- Azioni dati:
- 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
- Azioni:
Distribuire la configurazione YAML seguente per creare il ruolo e l'associazione. Altre informazioni sulle distribuzioni sono disponibili nella documentazione del servizio Azure Kubernetes: Distribuire un cluster servizio Azure Kubernetes del servizio Azure Kubernetes con portale di Azure.
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