Acesse aplicativos de contêineres de forma privada no Amazon ECS usando a AWS PrivateLink e um Network Load Balancer - Recomendações da AWS

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á.

Acesse aplicativos de contêineres de forma privada no Amazon ECS usando a AWS PrivateLink e um Network Load Balancer

Criado por Kirankumar Chandrashekar (AWS)

Ambiente: produção

Tecnologias: contêineres e microsserviços; redes; segurança, identidade, conformidade; aplicativos web e móveis

Workload: todas as outras workloads

Serviços da AWS: Amazon EC2; Amazon EC2 Auto Scaling; Amazon EC2 Contêiner Registry; Amazon EFS; Amazon RDS; Amazon VPC; Amazon ECS; Elastic Load Balancing (ELB); AWS Lambda

Esse padrão descreve como hospedar de forma privada um aplicativo de contêiner Docker no Amazon Elastic Container Service (Amazon ECS) por trás de um Network Load Balancer e acessar o aplicativo usando a AWS. PrivateLink Você pode usar uma rede privada para acessar, de forma segura, serviços na Nuvem do Amazon Web Services (AWS). O Amazon Relational Database Service (Amazon RDS) hospeda os banco de dados relacional para o aplicativo em execução no Amazon ECS com alta disponibilidade (HA). O Amazon Elastic File System (Amazon EFS) é usado se o aplicativo exigir armazenamento persistente.

O serviço Amazon ECS que executa os aplicativos Docker, com um Network Load Balancer no front-end, pode ser associado a um endpoint de nuvem privada virtual (VPC) para acesso por meio da AWS. PrivateLink Esse serviço de endpoint da VPC pode então ser compartilhado com outras VPCs usando seus endpoints da VPC. 

Você também pode usar o AWS Fargate em vez de um grupo do Amazon EC2 Auto Scaling. Para obter mais informações, consulte Acesse aplicativos de contêineres de forma privada no Amazon ECS usando o AWS Fargate, a PrivateLink AWS e um Network Load Balancer.                          

Pré-requisitos

Pilha de tecnologia

  • Amazon CloudWatch

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • Amazon EC2 Auto Scaling

  • Amazon Elastic Container Registry (Amazon ECR)

  • Amazon ECS

  • Amazon RDS

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Lambda

  • AWS PrivateLink

  • AWS Secrets Manager

  • Application Load Balancer

  • Network Load Balancer

  • VPC

Automação e escala

  • Amazon EC2 – o Amazon Elastic Compute Cloud (Amazon EC2) oferece capacidade computacional escalável na Nuvem AWS.

  • Amazon EC2 Auto Scaling – O Amazon EC2 Auto Scaling ajuda a garantir que você tenha o número correto de instâncias do Amazon EC2 disponíveis para processar a carga da sua aplicação.

  • Amazon ECS – O Amazon Elastic Container Service (Amazon ECS) é um serviço de gerenciamento de contêineres altamente escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster.

  • Amazon ECR – o Amazon Elastic Container Registry (Amazon ECR) é um serviço de registro de imagem de contêiner, seguro, escalável e confiável.

  • Amazon EFS – O Amazon Elastic File System (Amazon EFS) fornece um sistema de arquivos NFS elástico simples, escalável, totalmente gerenciável e pronto para uso com serviços de Nuvem AWS e atributos on-premises.

  • AWS Lambda – O AWS Lambda é um serviço de computação com tecnologia para executar código sem provisionamento ou gerenciamento de servidores.

  • Amazon RDS - o Amazon Relational Database Service (Amazon RDS) é um serviço Web que facilita a configuração, a operação e escalabilidade de um banco de dados relacional na Nuvem AWS.

  • Amazon S3 – o Amazon Simple Storage Service (Amazon S3) serve como armazenamento para a internet. Ele foi projetado para facilitar a computação de escala na web para os desenvolvedores.

  • O AWS Secrets Manager o Secrets Manager permite a substituição de credenciais codificadas no seu código, incluindo senhas, e oferece uma chamada de API para o Secrets Manager para recuperar o segredo de forma programática.

  • Amazon VPC – o Amazon Virtual Private Cloud (Amazon VPC) ajuda a iniciar recursos da AWS em uma rede virtual definida por você.

  • Elastic Load Balancing – O Elastic Load Balancing distribui aplicações de entrada ou tráfego de rede em vários destinos, como instâncias do Amazon EC2, contêineres e endereços IP em várias zonas de disponibilidade.

  • Docker – O Docker ajuda os desenvolvedores a empacotar, enviar e executar qualquer aplicativo como um contêiner leve, portátil e autossuficiente.

TarefaDescriçãoHabilidades necessárias
Crie uma VPC.
  1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon VPC. Escolha Criar VPC e escolha VPC e muito mais

  2. Insira um nome para sua VPC e escolha um intervalo de blocos CIDR apropriado. 

  3. Especifique duas zonas de disponibilidade, duas sub-redes públicas e quatro sub-redes privadas. Duas sub-redes privadas são para tarefas do Amazon ECS e duas sub-redes privadas são para bancos de dados do Amazon RDS.

  4. Especifique um gateway NAT para cada zona de disponibilidade. 

  5. Escolha Criar VPC.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Criar um Network Load Balancer
  1. Abra o console do Amazon EC2 e escolha a região da AWS que contenha a sua VPC. 

  2. Em Balanceamento de carga, escolha Balanceadores de carga e escolha Criar balanceador de carga

  3. Escolha Network Load Balancer e, em seguida, Criar

  4. Na página Configurar balanceador de carga, configure seu Network Load Balancer e seu receptor. Importante: certifique-se de escolher o esquema do seu Network Load Balancer como Interno

  5. Escolha as configurações de segurança aplicáveis, configure um grupo de segurança e um grupo-alvo. Escolha Instância ou IP como o Tipo de destino na seção Configurar roteamento. Certifique-se de não registrar um alvo. 

  6. Depois de definir todas as configurações, escolha Avançar: Revisão e, em seguida, escolha Criar.

Administrador de nuvem
Criar um Application Load Balancer
  1. Abra o console do Amazon EC2 e escolha a mesma região que contenha a sua VPC.

  2. Em Balanceamento de carga, escolha Balanceadores de carga e escolha Criar balanceador de carga.

  3. Selecione Application Load Balancer e clique em Criar

  4. Configure seu Application Load Balancer e seu receptor. Importante: certifique-se de escolher o esquema do Application Load Balancer como Interno

  5. Escolha as configurações de segurança aplicáveis, configure um grupo de segurança e um grupo-alvo. Escolha Instância ou IP como o Tipo de destino na seção Configurar roteamento. Certifique-se de não registrar um alvo. 

  6. Depois de definir todas as configurações, escolha Avançar: Revisão e, em seguida, escolha Criar.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Criar um sistema de arquivos do Amazon EFS.
  1. Abra o console do Amazon EFS e escolha Criar sistema de arquivos

  2. Na caixa de diálogo Criar sistema de arquivos, insira um nome para seu sistema de arquivos e escolha sua VPC. 

  3. Escolha Criar para criar o sistema de arquivos. 

  4. Instalar e configurar seu sistema de arquivos do Amazon EFS.

Administrador de nuvem
Monte destinos para as sub-redes.
  1. Volte ao console do Amazon EFS e escolha Sistemas de arquivos. A página Sistemas de arquivos mostra os sistemas de arquivos do Amazon EFS em sua conta. 

  2. Escolha o sistema de arquivos que você criou e escolha Gerenciar para exibir as Zonas de Disponibilidade. Para adicionar um destino de montagem, escolha Adicionar destino de montagem e adicione as quatro sub-redes privadas que você criou.

Administrador de nuvem
Verifique se as sub-redes estão montadas como destinos.
  1. No console do Amazon EFS, escolha Sistemas de arquivos

  2. Escolha Rede para exibir a lista de destinos de montagem existentes. Certifique-se de que elas incluam as quatro sub-redes que você criou.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Criar um bucket do S3.

Abra o console do Amazon S3 e crie um bucket do S3 para armazenar os ativos estáticos do seu aplicativo, se necessário.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Crie uma chave do AWS KMS para criptografar o segredo do Secrets Manager.

Abra o console do AWS Key Management Service (AWS KMS) e crie uma chave do KMS.

Administrador de nuvem
Crie um segredo do Secrets Manager para armazenar a senha do Amazon RDS.
  1. Abra o console do AWS Secrets Manager e crie um novo segredo escolhendo escolha Armazenar um novo segredo

  2. Escolha a chave do KMS que você criou e armazene seu novo segredo.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Criar um grupo de sub-redes de banco de dados.
  1. Crie o console do Amazon RDS e escolha Grupos de sub-rede

  2. Escolha Criar grupo de sub-redes de banco de dados e insira um nome e uma descrição para seu grupo de sub-redes de banco de dados. 

  3. Escolha a VPC que você criou anteriormente e escolha as zonas de disponibilidade e sub-redes. Em seguida, selecione Criar.

Administrador de nuvem
Crie uma instância de do Amazon RDS.

Crie e configure uma instância do Amazon RDS nas sub-redes privadas. Certifique-se de que o Multi-AZ esteja ativado para HA.

Administrador de nuvem
Carregue dados na instância do Amazon RDS.

Carregue os dados relacionais exigidos pelo seu aplicativo na sua instância do Amazon RDS. Esse processo irá variar dependendo das necessidades do seu aplicativo, bem como de como o esquema do banco de dados é definido e projetado.

Administrador de nuvem, DBA
TarefaDescriçãoHabilidades necessárias
Crie um cluster do ECS.
  1. Abra o Console do Amazon ECS e selecione Clusters.

  2. Escolha Criar clusters e configure um cluster ECS de acordo com as especificações necessárias.

Administrador de nuvem
Criar as imagens do Docker.

Crie as imagens do Docker seguindo as instruções na seção Recursos relacionados.

Administrador de nuvem
Crie repositórios do Amazon ECR.
  1. No console do Amazon ECR, escolha Repositórios

  2. Escolha Criar repositório e insira um nome exclusivo para o seu repositório. 

  3. Configure o repositório de acordo com suas especificações, incluindo criptografia do AWS KMS, se necessário.

Administrador de nuvem, DevOps engenheiro
Autentique seu cliente do Docker no repositório do Amazon ECR.

Para autenticar seu cliente Docker para o repositório Amazon ECR, execute o comando “aws ecr get-login-password na CLI da AWS.

Administrador de nuvem
Envie imagens do Docker ao repositório do Amazon ECR.
  1. Identifique a imagem do Docker que você deseja enviar e execute o comando docker images na CLI da AWS. 

  2. Marque a sua imagem com o registro do Amazon ECR, o repositório e a combinação opcional de nomes de etiquetas da imagem. 

  3. Envie a imagem do Docker executando o comando docker push

  4. Repita essas etapas para todas as imagens necessárias.

Administrador de nuvem
Criar uma definição de tarefa do Amazon ECS.

É necessária uma definição de tarefa para executar contêineres do Docker no Amazon ECS. 

  1. Retorne ao console do Amazon ECS, escolha Definições de tarefas e, em seguida, escolha Criar nova definição de tarefa

  2. Na página Select compatibilities, selecione o tipo de inicialização que sua tarefa deve usar e escolha Next step.

Para obter ajuda na configuração da definição de tarefa, consulte “Criar uma definição de tarefa” na seção Recursos relacionados. Importante: certifique-se de fornecer as imagens do Docker que você enviou para o Amazon ECR.

Administrador de nuvem
Crie um serviço do Amazon ECS.

Crie um serviço do Amazon ECS usando o cluster ECS que você criou anteriormente. Certifique-se de escolher o Amazon EC2 como o tipo de execução e escolher a definição de tarefa criada na etapa anterior, bem como o grupo de destino do Application Load Balancer.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Crie uma configuração de ativação.

Abra o console do Amazon EC2 e crie uma configuração de execução. Certifique-se de que os dados do usuário tenham o código para permitir que as instâncias do EC2 se juntem ao cluster ECS desejado. Para ver um exemplo do código necessário, consulte a seção Recursos relacionados.

Administrador de nuvem
Crie um grupo do Amazon EC2 Auto Scaling.

Volte para o console do Amazon EC2 e, em Auto Scalling, escolha Grupos do Auto Scaling. Configure um grupo do Amazon EC2 Auto Scaling. Certifique-se de escolher as sub-redes privadas e a configuração de inicialização que você criou anteriormente.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Configure o PrivateLink endpoint da AWS.
  1. No console da Amazon VPC, crie um endpoint da AWS PrivateLink . 

  2. Associe esse endpoint ao Network Load Balancer, que disponibiliza o aplicativo hospedado no Amazon ECS de forma privada aos clientes. 

Para obter mais informações, consulte a seção Recursos relacionados.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Crie um VPC endpoint

Crie um VPC endpoint para o endpoint da AWS que PrivateLink você criou anteriormente. O nome de domínio totalmente qualificado (FQDN) do VPC endpoint apontará para o FQDN do endpoint da AWS. PrivateLink Isso cria uma interface de rede elástica para o serviço de endpoint da VPC que os endpoints de DNS podem acessar.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Criar a função do Lambda.

No console do AWS Lambda, crie uma função do Lambda para atualizar os endereços IP do Application Load Balancer como destinos para o Network Load Balancer. Para obter mais informações sobre isso, consulte a postagem do blog “Usando endereços IP estáticos para Application Load Balancers" na seção Recursos relacionados.

Desenvolvedor de aplicativos

Criar os balanceadores de carga:

Criar um sistema de arquivos do Amazon EFS

Criar um bucket do S3

Criar um segredo do Secrets Manager:

Criar uma instância de do Amazon RDS:

Criar os componentes do Amazon ECS:

Criar um grupo do Amazon EC2 Auto Scaling:

Configure a AWS PrivateLink:

Criar um endpoint da VPC:

Criar a função do Lambda:

Outros recursos: