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

Criado por Kirankumar Chandrashekar () AWS

Ambiente: produção

Tecnologias: contêineres e microsserviços DevOps; modernização; segurança, identidade e conformidade

Workload: todas as outras workloads

AWSserviços: AmazonEKS; Amazon VPC

Esse padrão descreve como hospedar de forma privada um aplicativo de contêiner Docker no Amazon Elastic Kubernetes Service EKS (Amazon) por trás de um Network Load Balancer e acessar o aplicativo usando. AWS PrivateLink Em seguida, você pode usar uma rede privada para acessar com segurança os serviços na nuvem da Amazon Web Services (AWS). 

O EKS cluster da Amazon 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. AWS PrivateLink Esse serviço de VPC endpoint pode então ser compartilhado com outros VPCs usando seus VPC endpoints.

A configuração descrita por esse padrão é uma forma segura de compartilhar o acesso ao aplicativo VPCs entre AWS contas. Não requer configurações especiais de conectividade ou roteamento, porque a conexão entre as contas do consumidor e do provedor está no AWS backbone global 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 da AWS ativa.

  • AWSInterface de linha de comando (AWSCLI) versão 2, instalada e configurada no Linux, macOS ou Windows.

  • Um EKS cluster Amazon 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 da AmazonEKS. 

  • Kubectl, instalado e configurado para acessar recursos em seu cluster da AmazonEKS. Para obter mais informações, consulte Instalando o kubectl na documentação da AmazonEKS. 

Use PrivateLink um Network Load Balancer para acessar um aplicativo em um contêiner da AmazonEKS.

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 (por exemplo, ativado AWS CodeCommit) e implantados usando integração contínua e entrega contínua (CI/CD) em. AWS CodePipeline 

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

  • AWSCLI— AWS Command Line Interface (AWSCLI) é uma ferramenta de código aberto que permite interagir com AWS serviços usando comandos em seu shell de 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 (EKSAmazon) é um serviço gerenciado que você pode usar para executar o AWS Kubernetes sem precisar instalar, operar e manter seu próprio plano de controle ou nós do Kubernetes.

  • Amazon VPC — A Amazon Virtual Private Cloud (AmazonVPC) ajuda você a lançar AWS recursos em uma rede virtual que você definiu.

  • 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

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

DevOps engenheiro

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

Execute o comando a seguir para aplicar o arquivo de manifesto de implantação ao seu EKS cluster da Amazon:

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 comando a seguir para aplicar o arquivo de manifesto do serviço ao seu EKS cluster da Amazon:

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, necessário para criar um AWS PrivateLink endpoint.

DevOps engenheiro

Crie um AWS PrivateLink endpoint.

Faça login no AWS Management Console, abra o VPC console da Amazon e crie um AWS PrivateLink endpoint. 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 serviços de VPC endpoint (AWS PrivateLink) na VPC documentação da Amazon.

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

Administrador de nuvem

Crie um VPC endpoint.

No VPC console da Amazon, escolha Endpoint Services e, em seguida, escolha Create Endpoint Service. Crie um VPC endpoint para o AWS PrivateLink endpoint.

O nome de domínio totalmente qualificado do VPC endpoint (FQDN) aponta FQDN para o do AWS PrivateLink endpoint. Isso cria uma interface de rede elástica para o serviço de VPC endpoint que os DNS endpoints podem acessar. 

Administrador de nuvem