Usar a autenticação do Microsoft Entra com falhas do AKS do Chaos Studio
Visão geral
O Azure Chaos Studio se integra ao Chaos Mesh para executar falhas em clusters do Serviço de Kubernetes do Azure (AKS), como remoção de pods, estresse da CPU, interrupção da rede e muito mais. Você pode usar dois tipos diferentes de autenticação para executar essas falhas, dependendo de sua configuração e preferências - contas locais ou autenticação do Microsoft Entra gerenciada pelo AKS:
- As contas locais do Kubernetes são armazenadas no servidor de API do Kubernetes e podem ser usadas para autenticar e autorizar solicitações para o cluster. Saiba mais sobre contas locais nesta página: Gerenciar contas locais.
- A autenticação do Microsoft Entra gerenciada pelo AKS permite que você entre e gerencie permissões para seu cluster usando as credenciais do Microsoft Entra e o RBAC do Azure. Saiba como Habilitar a autenticação do Microsoft Entra gerenciado pelo AKS.
Observação
As permissões de conta local concedem acesso desde que as credenciais estejam no computador cliente, enquanto a autenticação do Microsoft Entra gerenciada pelo AKS permite mais atribuição e gerenciamento de permissões com escopo. Saiba mais sobre essa melhor prática: Melhores práticas para segurança de cluster e atualizações.
O Chaos Studio anteriormente só tinha suporte usando o Chaos Mesh com contas locais, mas a versão 2.2 de todas as falhas do AKS agora dá suporte a contas locais e à autenticação do Microsoft Entra.
Aviso
Se você vir um erro de runtime Object reference not set to an instance of an object
, esse é um bug conhecido com as falhas da versão 2.2. Uma correção deve terminar de ser implantada no início de janeiro de 2025. Isso acontece ao usar a nova versão com falha do Chaos Mesh do AKS (2.2) em um cluster com contas locais habilitadas. A solução alternativa é usar as falhas da v2.1, que são marcadas como "(preteridas)" na interface do usuário, ou usar um cluster do AKS com a autenticação do Entra habilitada.
Atualizar destinos
Os destinos (Microsoft.Chaos/targets
) representam outro recurso do Azure no modelo de recursos do Chaos Studio, para que você possa controlar facilmente se um determinado recurso está habilitado para injeção de falha e quais falhas podem ser executadas nele. Nesse caso, o destino representa um cluster do AKS que você deseja afetar.
Se você estiver integrando um cluster do AKS como um novo destino do Chaos Studio no portal do Azure, as novas versões de falha estarão automaticamente disponíveis.
Se você quiser usar a nova versão de falha em um destino existente do AKS, precisará atualizar o destino. É possível fazer isso de duas formas:
- Desabilite e habilite novamente o recurso de destino.
- Para fazer isso no portal do Azure, visite o painel Destinos na interface do portal do Chaos Studio, selecione os clusters do AKS relevantes e selecione Desabilitar destinos. Aguarde de 1 a 2 minutos ou uma notificação de confirmação e selecione Habilitar destinos>Habilitar destinos diretos de serviço e passe pela tela Revisar e Criar.
- Atualize os recursos habilitados.
- Para fazer isso no portal do Azure, visite o painel Destinos no Chaos Studio, localize os clusters do AKS, selecione Gerenciar açõese verifique se todos os recursos estão habilitados. Selecione Salvar para finalizar a alteração.
Se você estiver usando a API ou a linha de comando, siga as instruções em Criar um experimento de caos que use uma falha do Chaos Mesh com a CLI do Azure para garantir que os recursos disponíveis mais recentes estejam habilitados.
Criar um novo experimento
Ao criar um novo experimento que usa falhas do Chaos Mesh do AKS no portal do Azure, você poderá ver duas versões de cada falha, como "Caos de DNS do Chaos Mesh do AKS" e "Caos de DNS do Chaos Mesh do AKS (preterido)". Selecione a primeira opção, não a opção preterida.
Se você não vir o cluster do AKS como um destino possível depois de selecionar a falha, talvez seja necessário habilitar a nova versão de falha no cluster. Visite a página Destinos, localize o cluster do AKS e selecione Gerenciar açõese verifique se todos os recursos estão selecionados antes de selecionar Salvar.
Siga o tutorial Criar um experimento de caos que usa uma falha do Chaos Mesh para eliminar pods do AKS com o portal do Azure para criar um experimento.
Atualizar um experimento existente
Siga um desses dois métodos para atualizar o experimento existente.
- Abra um experimento que contenha pelo menos uma falha do Chaos Mesh do AKS.
- Selecione Editar na falha e copie o valor do parâmetro
jsonSpec
para sua área de transferência. - Abra a lista suspensa de seleção de falhas e selecione a versão da falha desejada sem a marcação
(deprecated)
. - Cole o
jsonSpec
da área de transferência no campo de parâmetro. - Salve a falha e o experimento.
Permissões
O Chaos Studio precisa de permissão para executar falhas em seus recursos.
Ao criar um experimento no portal do Azure, opcionalmente, você pode selecionar Habilitar a criação e atribuição de função personalizada para permitir que o Chaos Studio tente atribuir as permissões necessárias à identidade gerenciada do experimento.
Se você optar por não usar a criação de função personalizada ou não estiver usando o portal do Azure, deverá fazer um dos seguintes após a criação do experimento:
- Atribua manualmente as funções de Administrador do RBAC do Serviço de Kubernetes do Azure e Usuário do Cluster de Serviço de Kubernetes do Azure à identidade gerenciada do experimento (atribuída pelo sistema ou atribuída pelo usuário).
- Crie manualmente uma função personalizada permitindo a lista completa de operações necessárias em operações RBAC.
- Crie manualmente uma função personalizada permitindo uma lista parcial de operações necessárias e implante um arquivo YAML personalizado. Esse processo é detalhado em Acesso opcional com privilégios mínimos.
Operações de RBAC
As seguintes operações de RBAC são usadas para falhas do Chaos Mesh do AKS:
- Ações:
- Microsoft.ContainerService/managedClusters/read
- Ações de Dados:
- 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
Acesso opcional com privilégios mínimos
Se você preferir não conceder acesso completo de leitura/gravação ao ClusterRole e ao ClusterRoleBinding à identidade do experimento do Chaos Studio, poderá criar manualmente a função e a associação necessárias para o Chaos Mesh. Isso é necessário para o Chaos Mesh garantir que o experimento tenha permissão para direcionar o namespace de locatário especificado.
Há duas etapas para essa configuração opcional.
Ao atribuir permissões à identidade gerenciada do experimento, use uma função personalizada com um conjunto limitado de permissões. As permissões necessárias são:
- Ações:
- Microsoft.ContainerService/managedClusters/read
- Ações de Dados:
- 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
- Ações:
Implante a configuração YAML a seguir para criar a função e a associação. Saiba mais sobre implantações na documentação do AKS: Implantar um cluster do AKS (Serviço de Kubernetes do Azure) usando o portal do 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