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 do Amazon EKS.
Um endpoint público expõe o servidor da API do 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 ambiente de gerenciamento 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.
kubectl versão 1.25.1 ou posterior, instalado
. 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 Kit de ferramentas da AWS para Azure DevOps versão 1.15 ou posterior instalada para o DevOps projeto Azure descrito no ponto anterior. Para obter as instruções de instalação, consulte Kit de ferramentas da AWS para 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 conferir a disponibilidade de uma região, consulte AWS Services by Region
. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.
Arquitetura
Este 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 pelo 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 Amazon EKS Best Practices Guide.
Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de 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 | Description | 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 na 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 na 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 um perfil do IAM na 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, siga as etapas abaixo:
Para obter mais detalhes, consulte Create a service connection | AWS DevOps |
Adicione o perfil do IAM ao arquivo de configuração do Amazon EKS. | O perfil do IAM deve ter permissões necessárias para executar as operações necessárias no cluster do Amazon EKS. Por ser uma função de pipeline, o perfil do IAM deve ser capaz de gerenciar quase todos os tipos de recursos no cluster. Portanto, a permissão do grupo Para adicionar a configuração necessária a
Para obter mais informações, consulte Como o Amazon EKS funciona com o IAM na documentação do Amazon EKS. | AWS DevOps |
| Tarefa | Description | 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 Create and manage agent pools |
| Tarefa | Description | 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 Creating an Amazon ECR private repository to store images 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 seguinte conteúdo em um arquivo chamado
| AWS DevOps |
Crie um script para o DevOps agente do Azure. | Para criar o script
| 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 | Description | 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, siga as etapas abaixo:
Para obter mais detalhes, consulte Register an agent using a personal access token (PAT) | AWS DevOps |
Use o arquivo de manifesto do Kubernetes para a implantação de agentes. | 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 do Azure Devops no cluster privado do 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 ao seguinte:
Certifique-se de que a coluna | 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 | Description | 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 a aplicação de exemplo foi implantada. | Após a conclusão do pipeline, verifique se a implantação da aplicação de exemplo foi bem-sucedida conferindo o repositório do Amazon ECR e o cluster do Amazon EKS. Para verificar artefatos no repositório do Amazon ECR, siga as etapas abaixo:
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 do 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 do Amazon ECR não corresponde a | A aplicação de exemplo espera que o nome do repositório do Amazon ECR corresponda ao parâmetro Para resolver esse problema, renomeie seu repositório do Amazon ECR para
|
Erro: cluster do Kubernetes inacessível: o servidor solicitou que o cliente fornecesse credenciais | Se você encontrar esse erro na etapa “Pull and Deploy Helm Chart” no pipeline do Azure, a causa-raiz geralmente decorre de uma configuração incorreta do perfil do IAM no Para resolver esse problema, verifique o seguinte:
|
Recursos relacionados
AWS Blogs
Serviços da AWS documentação
Documentação da Microsoft