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.

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.

  1. Abra um experimento que contenha pelo menos uma falha do Chaos Mesh do AKS.
  2. Selecione Editar na falha e copie o valor do parâmetro jsonSpec para sua área de transferência.
  3. Abra a lista suspensa de seleção de falhas e selecione a versão da falha desejada sem a marcação (deprecated).
  4. Cole o jsonSpec da área de transferência no campo de parâmetro.
  5. 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:

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.

  1. 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
  2. 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