Acesse aplicativos de contêineres de forma privada no Amazon EKS 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 EKS usando a AWS PrivateLink e um Network Load Balancer

Criado por Kirankumar Chandrashekar (AWS)

Esse padrão descreve como hospedar de forma privada um aplicativo de contêiner Docker no Amazon Elastic Kubernetes Service (Amazon EKS) 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 cluster Amazon EKS 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 VPC endpoint pode então ser compartilhado com outras pessoas VPCs usando seus VPC endpoints.

A configuração descrita por esse padrão é uma forma segura de compartilhar o acesso ao aplicativo VPCs entre contas da AWS. Não requer configurações especiais de conectividade ou roteamento, porque a conexão entre as contas do consumidor e do provedor faz parte da espinha dorsal global da AWS e não atravessa a Internet pública.

Pré-requisitos

  • Docker, instalado e configurado em macOS, Linux ou Windows.

  • Um aplicativo em execução no Docker.

  • Uma conta AWS ativa

  • AWS Command Line Interface (AWS CLI) versão 2, instalado e configurado no Linux, macOS ou Windows.

  • Um cluster Amazon EKS existente com sub-redes privadas marcadas e configurado para hospedar aplicativos. Para obter mais informações, consulte Marcação de sub-rede na documentação do Amazon EKS. 

  • Kubectl, instalado e configurado para acessar recursos em seu cluster Amazon EKS. Para obter mais informações, consulte Instalação do kubectl na documentação do Amazon EKS. 

Use PrivateLink um Network Load Balancer para acessar um aplicativo em um contêiner Amazon EKS.

Pilha de tecnologia

  • Amazon EKS

  • AWS PrivateLink

  • Network Load Balancer

Automação e escala

  • Os manifestos do Kubernetes podem ser rastreados e gerenciados em um repositório baseado em Git e implantados usando integração contínua e entrega contínua (CI/CD) na AWS. CodePipeline 

  • Você pode usar CloudFormation a AWS para criar esse padrão usando infraestrutura como código (IaC).

  • AWS CLI: o AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.

  • Elastic Load Balancing — O Elastic Load Balancing distribui o tráfego de entrada de aplicativos ou de rede em vários destinos, como instâncias, contêineres e endereços IP do Amazon Elastic Compute Cloud ( EC2Amazon), em uma ou mais zonas de disponibilidade.

  • Amazon EKS: o Amazon Elastic Kubernetes Service (Amazon EKS) é um serviço gerenciado que você pode usar para executar o Kubernetes na AWS, eliminando a necessidade de instalar, operar e manter seus próprios nós ou ambiente de gerenciamento do Kubernetes.

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

  • Kubectl: o Kubectl é um utilitário de linha de comando para executar comandos em clusters Kubernetes.

TarefaDescriçãoHabilidades necessárias

Crie o arquivo de manifesto de implantação do Kubernetes.

Crie um arquivo de manifesto de implantação modificando o arquivo de exemplo a seguir de acordo com seus requisitos.

apiVersion: apps/v1 kind: Deployment metadata: name: sample-app spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: public.ecr.aws/z9d2n7e1/nginx:1.19.5 ports: - name: http containerPort: 80
nota

Esse é um exemplo de arquivo de configuração do NGINX que é implantado usando a imagem do Docker do NGINX. Para obter mais informações, consulte Como usar a imagem oficial do Docker do NGINX na documentação do Docker.

DevOps engenheiro

Implante o arquivo de manifesto de implantação do Kubernetes.

Execute o seguinte comando para aplicar o arquivo do manifesto de implantação ao cluster do Amazon EKS:

kubectl apply –f <your_deployment_file_name> 

DevOps engenheiro

Crie o arquivo do manifesto do serviço do Kubernetes.

Crie um serviço de manifesto de serviço modificando o arquivo de exemplo a seguir de acordo com seus requisitos.

apiVersion: v1 kind: Service metadata: name: sample-service annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-internal: "true" spec: ports: - port: 80 targetPort: 80 protocol: TCP type: LoadBalancer selector: app: nginx
Importante

Certifique-se de incluir o seguinte annotations para definir um Network Load Balancer interno:

service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-internal: "true"
DevOps engenheiro

Implante o arquivo de manifesto do serviço Kubernetes.

Execute o seguinte comando para aplicar o arquivo de manifesto do serviço ao cluster do Amazon EKS:

kubectl apply -f <your_service_file_name>

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Registre o nome do Network Load Balancer.

Execute o comando a seguir para recuperar o nome do Network Load Balancer:

kubectl get svc sample-service -o wide

Registre o nome do Network Load Balancer, que é necessário para criar um PrivateLink endpoint da AWS.

DevOps engenheiro

Crie um PrivateLink endpoint da AWS.

Faça login no AWS Management Console, abra o console da Amazon VPC e crie um endpoint da AWS PrivateLink . Associe esse endpoint ao Network Load Balancer, isso torna o aplicativo disponível de forma privada para os clientes. Para obter mais informações, consulte VPC endpoint services (AWS PrivateLink) na documentação da Amazon VPC.

Importante

Se a conta do consumidor exigir acesso ao aplicativo, o ID da conta da AWS da conta do consumidor deverá ser adicionado à lista de diretores permitidos para a configuração do PrivateLink endpoint da AWS. Para obter mais informações, consulte Adicionar e remover permissões para o serviço de endpoint na documentação da Amazon VPC.

Administrador de nuvem

Crie um VPC endpoint

No console da Amazon VPC, escolha Serviços de endpoint e escolha Criar o serviço de endpoint. Crie um endpoint VPC para o endpoint da AWS. PrivateLink

O nome de domínio totalmente qualificado (FQDN) do VPC endpoint aponta 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