

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
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Resumo
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-summary"></a>

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 e limitações
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-prereqs"></a>

**Pré-requisitos **
+ [Docker](https://www.docker.com/), 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](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), 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](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html#vpc-subnet-tagging) 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](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) na documentação do Amazon EKS. 

## Arquitetura
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-architecture"></a>

![\[Use PrivateLink um Network Load Balancer para acessar um aplicativo em um contêiner Amazon EKS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/ce977924-012c-4fb6-8e51-94d6e5c829a6/images/378456a3-f4d1-4a57-bb36-879c240cabfb.png)


**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).

## Ferramentas
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-tools"></a>
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html): 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](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) — 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](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html): 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](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html): o Amazon Virtual Private Cloud (Amazon VPC) ajuda a iniciar recursos da AWS em uma rede virtual definida por você.
+ [Kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/): o Kubectl é um utilitário de linha de comando para executar comandos em clusters Kubernetes.

## Épicos
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-epics"></a>

### Implante os arquivos de manifesto de implantação e serviço do Kubernetes
<a name="deploy-the-kubernetes-deployment-and-service-manifest-files"></a>


| Tarefa | Description | Habilidades 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.<pre>apiVersion: apps/v1<br />kind: Deployment<br />metadata:<br />  name: sample-app<br />spec:<br />  replicas: 3<br />  selector:<br />    matchLabels:<br />      app: nginx<br />  template:<br />    metadata:<br />      labels:<br />        app: nginx<br />    spec:<br />      containers:<br />        - name: nginx<br />          image: public.ecr.aws/z9d2n7e1/nginx:1.19.5<br />          ports:<br />            - name: http<br />              containerPort: 80</pre>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](https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/). | 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.<pre>apiVersion: v1<br />kind: Service<br />metadata:<br />  name: sample-service<br />  annotations:<br />    service.beta.kubernetes.io/aws-load-balancer-type: nlb<br />    service.beta.kubernetes.io/aws-load-balancer-internal: "true"<br />spec:<br />  ports:<br />    - port: 80<br />      targetPort: 80<br />      protocol: TCP<br />  type: LoadBalancer<br />  selector:<br />    app: nginx</pre>Certifique-se de incluir o seguinte `annotations` para definir um Network Load Balancer interno:<pre>service.beta.kubernetes.io/aws-load-balancer-type: nlb<br />service.beta.kubernetes.io/aws-load-balancer-internal: "true"</pre> | 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 | 

### Criar os endpoints
<a name="create-the-endpoints"></a>


| Tarefa | Description | Habilidades 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)](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) na documentação da Amazon VPC.Se a conta do consumidor exigir acesso ao aplicativo, o [ID da conta da AWS da conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html) 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](https://docs.aws.amazon.com/vpc/latest/userguide/add-endpoint-service-permissions.html) 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 | 

## Recursos relacionados
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-resources"></a>
+ [Usar a imagem do Docker oficial NGINX](https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/) 
+ [Network Load Balancer no Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html) 
+ [Criação de serviços de endpoint VPC (AWS) PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) 
+ [Adicionar e remover permissões para o serviço de endpoint ](https://docs.aws.amazon.com/vpc/latest/userguide/add-endpoint-service-permissions.html)