As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implante cargas de trabalho dos DevOps pipelines do Azure em clusters privados do Amazon EKS
Mahendra Revanasiddappa, Amazon Web Services
Resumo
Esse padrão demonstra como implementar a integração contínua e a entrega contínua (CI/CD) dos DevOps pipelines do Azure para clusters privados do Amazon Elastic Kubernetes Service (Amazon EKS). Ele aborda um desafio crítico enfrentado por organizações que estão aprimorando sua postura de segurança ao fazer a transição para endpoints de servidor de API privados para seus clusters Amazon EKS.
Um endpoint público expõe o servidor da API Kubernetes diretamente à Internet, criando uma superfície de ataque maior que agentes mal-intencionados poderiam potencialmente atingir. Ao mudar para um endpoint privado, o acesso ao plano de controle do cluster é restrito à nuvem privada virtual (VPC) do cliente.
Embora a transição de um cluster Amazon EKS para um endpoint de API privado aumente significativamente a segurança, ela introduz desafios de conectividade para plataformas externas, como o Azure. CI/CD DevOps O endpoint privado só pode ser acessado de dentro da VPC ou das redes emparelhadas do cluster. Portanto, os DevOps agentes padrão do Azure hospedados pela Microsoft, operando fora da rede AWS privada, não podem acessar diretamente o servidor da API Kubernetes. Isso interrompe os fluxos de trabalho de implantação típicos que dependem de ferramentas como kubectl ou Helm executadas nesses agentes porque eles não conseguem estabelecer uma conexão com o cluster.
Para superar esse problema, esse padrão mostra uma abordagem eficiente usando DevOps agentes do Azure auto-hospedados em clusters privados do Amazon EKS. Essa solução oferece otimização de custos, eficiência operacional e escalabilidade superiores, preservando os requisitos de segurança. Essa abordagem beneficia particularmente as empresas que buscam otimizar seus DevOps processos multinuvem sem comprometer o desempenho ou a segurança.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS.
AWS Command Line Interface (AWS CLI) versão 2.13.17 ou posterior, instalada.
Um cluster privado do Amazon EKS versão 1.24 ou posterior criado, com permissões para criar namespaces, segredos e implantações.
Nós de trabalho em um cluster do Amazon EKS com conectividade de saída à Internet para que o DevOps agente do Azure executado neles possa se conectar ao pool de DevOps agentes do Azure.
GitHub conta criada
. A AWS Toolkit for Azure DevOps versão 1.15 ou posterior instalada para o DevOps projeto Azure descrito no ponto anterior. Para obter instruções de instalação, consulte AWS Toolkit for Azure DevOps
no Visual Studio Marketplace.
Limitações
Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para saber a disponibilidade da região, consulte AWS Serviços por região
. Para endpoints específicos, consulte Endpoints e cotas de serviço e escolha o link para o serviço.
Arquitetura
Esse padrão cria o seguinte:
Repositório Amazon ECR — O repositório Amazon Elastic Container Registry (Amazon ECR) armazena a imagem do Docker com o agente do DevOps Azure e o aplicativo de amostra que é implantado.
Pool de DevOps agentes do Azure - Um pool de agentes DevOps auto-hospedado do Azure registra o agente em execução no cluster privado do Amazon EKS.
Função do IAM - Uma função AWS Identity and Access Management (IAM) da conexão de serviço do Azure para fornecer o acesso necessário ao agente que está sendo executado em um cluster privado do Amazon EKS.
Conexão DevOps de serviço do Azure - Uma conexão de serviço em uma DevOps conta do Azure para usar a função do IAM que fornece o acesso necessário para que os trabalhos do pipeline acessem Serviços da AWS.
O diagrama a seguir mostra a arquitetura da implantação de um DevOps agente do Azure auto-hospedado em um cluster privado do Amazon EKS e da implantação de um aplicativo de amostra no mesmo cluster.

O diagrama mostra o seguinte fluxo de trabalho:
Implante um DevOps agente do Azure auto-hospedado como uma implantação dentro de um cluster Amazon EKS.
Um DevOps agente do Azure se conecta ao pool de agentes em uma DevOps conta do Azure usando um token de acesso pessoal (PAT) para autenticação.
O Azure Pipelines configura um pipeline para implantação usando o código de um GitHub repositório.
O pipeline é executado no agente a partir do pool de agentes que foi configurado na configuração do pipeline. O DevOps agente do Azure obtém as informações do trabalho do pipeline fazendo pesquisas constantes na DevOps conta do Azure.
O DevOps agente do Azure cria uma imagem do Docker como parte do trabalho do pipeline e envia a imagem para o repositório Amazon ECR.
O DevOps agente do Azure implanta o aplicativo de amostra em um cluster privado do Amazon EKS em um namespace chamado.
webapp
Ferramentas
Ferramentas
O Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
O Amazon Elastic Kubernetes Service (Amazon EKS) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
Outras ferramentas
Repositório de código
O código desse padrão está disponível no repositório GitHub deploy-kubernetes-resources-to- amazon-eks-using-azure -devops
.
Práticas recomendadas
Para o Amazon EKS, consulte o Guia de melhores práticas do Amazon EKS.
Siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para realizar uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e Práticas recomendadas de segurança na documentação do IAM.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Encontre o GUID da DevOps organização do Azure. | Entre na sua DevOps conta do Azure e use a seguinte URL para encontrar o GUID da organização: | AWS DevOps |
Configure um IdP no. Conta da AWS | Para configurar um provedor de identidade (IdP) no Conta da AWS para uma conexão de serviço do Azure, use as seguintes etapas:
Para obter mais detalhes, consulte Como federar a AWS partir do Azure DevOps usando o OpenID Connect | AWS DevOps |
Crie uma política do IAM no Conta da AWS. | Para criar uma política do IAM para fornecer as permissões necessárias para a função do IAM usada pelo DevOps pipeline do Azure, use as seguintes etapas:
| AWS DevOps |
Crie uma função do IAM no Conta da AWS. | Para configurar uma função do IAM na conexão Conta da AWS de serviço do Azure, use as seguintes etapas:
Na política, forneça suas informações para os seguintes espaços reservados:
| AWS DevOps |
Crie uma conexão de serviço na DevOps conta do Azure. | Para configurar uma conexão de serviço do Azure, use as seguintes etapas:
Para obter mais detalhes, consulte Criar uma conexão de serviço | AWS DevOps |
Adicione a função IAM ao arquivo de configuração do Amazon EKS. | A função do IAM deve ter as permissões necessárias para realizar as operações necessárias no cluster Amazon EKS. Por ser uma função de pipeline, a função do IAM deve ser capaz de gerenciar quase todos os tipos de recursos no cluster. Portanto, a permissão do Para adicionar a configuração necessária ao
Para obter mais informações, consulte Como o Amazon EKS funciona com o IAM na documentação do Amazon EKS. | AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie um pool de agentes auto-hospedado. | Para configurar um pool de agentes auto-hospedado na DevOps conta do Azure, use as seguintes etapas:
Para obter mais detalhes, consulte Criar e gerenciar grupos de agentes |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie um repositório do Amazon ECR. | As imagens do Docker usadas para implantar o DevOps agente do Azure e o aplicativo de amostra (
Para obter mais detalhes, consulte Criação de um repositório privado do Amazon ECR para armazenar imagens na documentação do Amazon ECR. | AWS DevOps |
Crie um Dockerfile para criar o agente do Azure DevOps . | Crie um Dockerfile para criar a imagem do Docker que tem o agente do Azure DevOps instalado. Armazene o conteúdo a seguir em um arquivo chamado
| AWS DevOps |
Crie um script para o DevOps agente do Azure. | Para criar o
| AWS DevOps |
Crie uma imagem do Docker com o DevOps agente do Azure. | Para criar uma imagem do Docker para instalar o DevOps agente do Azure, use o Dockerfile que você criou anteriormente para criar a imagem. No mesmo diretório em que o Dockerfile está armazenado, execute os seguintes comandos:
| AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Gere um token de acesso pessoal do Azure. | O agente em execução no cluster privado do Amazon EKS requer um token de acesso pessoal (PAT) para que possa se autenticar com a conta do Azure DevOps . Para gerar um PAT, use as seguintes etapas:
Para obter mais detalhes, consulte Registrar um agente usando um token de acesso pessoal (PAT) | AWS DevOps |
Use o arquivo de manifesto do Kubernetes para a implantação do agente. | Para implantar o DevOps agente do Azure no cluster privado do Amazon EKS, copie o seguinte arquivo de manifesto e armazene o arquivo como
Substitua | AWS DevOps |
Implante o agente no cluster privado do Amazon EKS. | Para implantar o agente Azure Devops no cluster privado Amazon EKS, use o seguinte comando:
| AWS DevOps |
Verifique se o agente está em execução. | Para verificar se o DevOps agente do Azure está em execução, use o seguinte comando:
A saída esperada deve ser semelhante à seguinte:
Certifique-se de que a | AWS DevOps |
Verifique se o agente está registrado no pool de DevOps agentes do Azure. | Para verificar se o agente está implantado no cluster privado do Amazon EKS e está registrado no pool de agentes
Você deve ver um agente listado com o status Online e o nome do agente deve começar com azure-pipelines-agent-eks-*. | AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Bifurque o repositório de aplicativos de amostra para sua GitHub conta. | Bifurque o seguinte repositório de AWS amostras para sua GitHub conta: https://github.com/aws-samples/deploy-kubernetes-resources-to- amazon-eks-using-azure -DevOps | AWS DevOps |
Crie um pipeline. | Para criar um pipeline na sua DevOps conta do Azure, use as seguintes etapas:
| AWS DevOps |
Verifique se o aplicativo de amostra foi implantado. | Após a conclusão do pipeline, verifique a implantação bem-sucedida do aplicativo de amostra verificando o repositório Amazon ECR e o cluster Amazon EKS. Para verificar artefatos no repositório Amazon ECR, use as seguintes etapas:
Por exemplo, Para verificar a implantação no cluster privado do Amazon EKS no namespace
A saída esperada é a seguinte:
Observação: se essa for sua primeira execução de pipeline, talvez seja necessário autorizar a conexão de serviço e o pool de agentes. Procure solicitações de permissão na interface do DevOps pipeline do Azure e aprove-as para continuar. | AWS DevOps |
Solução de problemas
Problema | Solução |
---|---|
O pipeline falha quando o nome do repositório Amazon ECR não corresponde | O aplicativo de amostra espera que o nome do repositório Amazon ECR corresponda ao Para resolver esse problema, renomeie seu repositório Amazon ECR ou
|
Erro: cluster Kubernetes inacessível: o servidor solicitou que o cliente fornecesse credenciais | Se você encontrar esse erro na etapa “Pull and Deploy Helm Chart” em seu pipeline do Azure, a causa raiz geralmente decorre de uma configuração incorreta da função do IAM no cluster do Para resolver esse problema, verifique o seguinte:
|
Recursos relacionados
AWS Blogs
Serviços da AWS documentação
Documentação da Microsoft