Crie um experimento de caos que usa uma falha Chaos Mesh para matar pods AKS com o portal do Azure
Você pode usar um experimento de caos para verificar se seu aplicativo é resiliente a falhas, causando essas falhas em um ambiente controlado. Neste artigo, você causa falhas periódicas do pod do Serviço Kubernetes do Azure (AKS) em um namespace usando um experimento de caos e o Azure Chaos Studio. A execução deste experimento pode ajudá-lo a se defender contra a indisponibilidade do serviço quando há falhas esporádicas.
O Chaos Studio usa o Chaos Mesh, uma plataforma de engenharia de caos gratuita e de código aberto para o Kubernetes, para injetar falhas em um cluster AKS. As falhas do Chaos Mesh são falhas diretas de serviço que exigem que o Chaos Mesh seja instalado no cluster AKS. Você pode usar essas mesmas etapas para configurar e executar um experimento para qualquer falha do AKS Chaos Mesh.
Pré-requisitos
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
- Um cluster AKS com um pool de nós Linux. Se você não tiver um cluster AKS, consulte o início rápido do AKS que usa a CLI do Azure, o Azure PowerShell ou o portal do Azure.
Limitações
- Você pode usar falhas do Chaos Mesh com clusters privados configurando a injeção de VNet no Chaos Studio. Todos os comandos emitidos para o cluster privado, incluindo as etapas neste artigo para configurar o Chaos Mesh, precisam seguir as diretrizes do cluster privado. Os métodos recomendados incluem conectar-se a partir de uma VM na mesma rede virtual ou usar o recurso de invocação de comando AKS.
- As falhas do AKS Chaos Mesh só são suportadas em pools de nós Linux.
- Se o cluster AKS estiver configurado para permitir apenas intervalos de IP autorizados, você precisará permitir os intervalos de IP do Chaos Studio. Você pode encontrá-los consultando a
ChaosStudio
etiqueta de serviço com a API de descoberta de marca de serviço ou arquivos JSON baixáveis.
Configurar o Chaos Mesh no seu cluster AKS
Antes de executar falhas do Chaos Mesh no Chaos Studio, você deve instalar o Chaos Mesh no cluster AKS.
Execute os seguintes comandos em uma janela do Azure Cloud Shell onde você tem a assinatura ativa definida para ser a assinatura onde seu cluster AKS está implantado. Substitua
MyManagedCluster
eMyResourceGroup
pelo nome do cluster e do grupo de recursos.az aks get-credentials --admin --name MyManagedCluster --resource-group MyResourceGroup
helm repo add chaos-mesh https://charts.chaos-mesh.org helm repo update kubectl create ns chaos-testing helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
Verifique se os pods Chaos Mesh estão instalados executando o seguinte comando:
kubectl get po -n chaos-testing
Você deve ver uma saída semelhante ao exemplo a seguir (um chaos-controller-manager e um ou mais chaos-daemons):
NAME READY STATUS RESTARTS AGE chaos-controller-manager-69fd5c46c8-xlqpc 1/1 Running 0 2d5h chaos-daemon-jb8xh 1/1 Running 0 2d5h chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h
Você também pode usar as instruções de instalação no site Chaos Mesh.
Habilite o Chaos Studio no seu cluster AKS
O Chaos Studio não pode injetar falhas em um recurso, a menos que esse recurso seja adicionado ao Chaos Studio primeiro. Você adiciona um recurso ao Chaos Studio criando um destino e recursos no recurso. Os clusters AKS têm apenas um tipo de destino (service-direct), mas outros recursos podem ter até dois tipos de destino. Um tipo de destino é para falhas diretas de serviço. Outro tipo de destino é para falhas baseadas em agente. Cada tipo de falha Chaos Mesh é representado como uma capacidade como PodChaos, NetworkChaos e IOChaos.
Abra o portal do Azure.
Procure por Chaos Studio na barra de pesquisa.
Selecione Alvos e vá para o cluster AKS.
Marque a caixa de seleção ao lado do cluster AKS. Selecione Habilitar destinos e, em seguida, selecione Habilitar destinos diretos de serviço no menu suspenso.
Confirme se o recurso desejado está listado. Selecione Rever + Ativar e, em seguida, Ativar.
É exibida uma notificação que indica que os recursos selecionados foram habilitados com êxito.
Agora você adicionou com sucesso seu cluster AKS ao Chaos Studio. Na visualização Destinos, você também pode gerenciar os recursos habilitados neste recurso. Selecione o link Gerenciar ações ao lado de um recurso para exibir os recursos habilitados para esse recurso.
Criar uma experimentação
Agora você pode criar seu experimento. Um experimento de caos define as ações que você deseja tomar em relação aos recursos de destino. As ações são organizadas e executadas em etapas sequenciais. O experimento do caos também define as ações que você deseja tomar contra ramificações, que são executadas em paralelo.
Selecione a guia Experimentos no Chaos Studio. Nesta visualização, você pode ver e gerenciar todos os seus experimentos de caos. Selecione Criar>novo experimento.
Preencha a Assinatura, o Grupo de Recursos e o Local onde você deseja implantar o experimento de caos. Dê um nome ao seu experimento. Selecione Next: Experiment designer.
Agora você está no designer de experimentos do Chaos Studio. O designer de experimento permite que você construa seu experimento adicionando etapas, ramificações e falhas. Dê um nome amigável à sua Etapa e Ramificação e selecione Adicionar ação > Adicionar falha.
Selecione AKS Chaos Mesh Pod Chaos na lista suspensa. Preencha Duração com o número de minutos que você deseja que a falha dure e jsonSpec com as seguintes informações:
Para formular a sua Malha do
jsonSpec
Caos:Consulte a documentação do Chaos Mesh para obter um tipo de falha, por exemplo, o tipo PodChaos.
Formule a configuração do YAML para esse tipo de falha usando a documentação do Chaos Mesh.
apiVersion: chaos-mesh.org/v1alpha1 kind: PodChaos metadata: name: pod-failure-example namespace: chaos-testing spec: action: pod-failure mode: all duration: '600s' selector: namespaces: - default
Remova qualquer YAML fora do
spec
(incluindo o nome da propriedade spec) e remova o recuo dos detalhes da especificação. Oduration
parâmetro não é necessário, mas é usado se fornecido. Neste caso, remova-o.action: pod-failure mode: all selector: namespaces: - default
Use um conversor YAML para JSON como este para converter o Chaos Mesh YAML para JSON e minimizá-lo.
{"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
Cole o JSON minimizado no campo jsonSpec no portal.
Selecione Next: Target resources.
Selecione seu cluster AKS e selecione Avançar.
Verifique se a experiência está correta e selecione Rever + criar>Criar.
Dê permissão ao experimento para seu cluster AKS
Quando você cria um experimento de caos, o Chaos Studio cria uma identidade gerenciada atribuída ao sistema que executa falhas contra seus recursos de destino. Essa identidade deve receber permissões apropriadas para o recurso de destino para que o experimento seja executado com êxito.
Vá para o cluster AKS e selecione Controle de acesso (IAM).
Selecione Adicionar>Adicionar atribuição de função.
Procure Função de Administrador do Cluster de Serviço Kubernetes do Azure e selecione a função. Selecione Seguinte.
Escolha Selecionar membros e procure o nome do experimento. Selecione seu experimento e escolha Selecionar. Se houver vários experimentos no mesmo locatário com o mesmo nome, o nome do experimento será truncado com caracteres aleatórios adicionados.
Selecione Rever + atribuir>Revisão + atribuir.
Execute a sua experiência
Agora você está pronto para executar seu experimento. Para ver o efeito, recomendamos que você abra a visão geral do cluster AKS e vá para Insights em uma guia separada do navegador. Os dados em tempo real para o Ative Pod Count mostram o efeito da execução do experimento.
Na visualização Experimentos, selecione seu experimento. Selecione Iniciar >OK.
Quando o Status mudar para Em execução, selecione Detalhes da execução mais recente em Histórico para ver os detalhes do experimento em execução.
Próximos passos
Agora que você executou um experimento direto de serviço AKS Chaos Mesh, está pronto para: