

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Acceda a aplicaciones de contenedores de forma privada en Amazon EKS mediante AWS PrivateLink y un 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*

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

Este patrón describe cómo alojar de forma privada una aplicación contenedora de Docker en Amazon Elastic Kubernetes Service (Amazon EKS) detrás de un Network Load Balancer y cómo acceder a la aplicación mediante AWS. PrivateLink A continuación, puede utilizar una red privada para acceder de forma segura a los servicios de la nube de Amazon Web Services (AWS). 

El clúster de Amazon EKS que ejecuta las aplicaciones de Docker, con un Network Load Balancer en la interfaz, se puede asociar a un punto final de nube privada virtual (VPC) para acceder a él a través de AWS. PrivateLink Luego, este servicio de punto final de VPC se puede compartir con otros VPCs mediante sus puntos de enlace de VPC.

La configuración descrita en este patrón es una forma segura de compartir el acceso a las aplicaciones entre VPCs cuentas de AWS. No requiere configuraciones de enrutamiento ni conectividad especiales, ya que la conexión entre las cuentas del consumidor y del proveedor se encuentra en la red troncal global de AWS y no atraviesa la Internet pública.

## Requisitos previos y limitaciones
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-prereqs"></a>

**Requisitos previos **
+ [Docker](https://www.docker.com/), instalado y configurado en Linux, macOS o Windows.
+ Una aplicación que se ejecuta en Docker.
+ Una cuenta de AWS activa.
+ [Interfaz de la línea de comandos de AWS (AWS CLI) versión 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), instalada y configurada en Linux, macOS o Windows.
+ Un clúster de Amazon EKS existente con subredes privadas etiquetadas y configurado para alojar aplicaciones. Para obtener más información, consulte [Etiquetado de subredes](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html#vpc-subnet-tagging) en la documentación de Amazon EKS. 
+ Kubectl, instalado y configurado para acceder a los recursos de su clúster de Amazon EKS. Para más información, consulte [Instalar kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) en la documentación de Amazon EKS. 

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

![Utilice PrivateLink un Network Load Balancer para acceder a una aplicación en un contenedor Amazon EKS.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/ce977924-012c-4fb6-8e51-94d6e5c829a6/images/378456a3-f4d1-4a57-bb36-879c240cabfb.png)


**Pila de tecnología **
+ Amazon EKS
+ AWS PrivateLink
+ Equilibrador de carga de red

**Automatización y escala**
+ Los manifiestos de Kubernetes se pueden rastrear y administrar en un repositorio basado en Git, y se pueden implementar mediante la integración y entrega continuas (CI/CD) en AWS. CodePipeline 
+ Puede usar AWS CloudFormation para crear este patrón mediante la infraestructura como código (IaC).

## Tools (Herramientas)
<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): la interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto que permite interactuar con los servicios de AWS mediante comandos en el intérprete de comandos de línea de comandos.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html): Elastic Load Balancing distribuye el tráfico entrante de aplicaciones o redes entre varios destinos, como instancias, contenedores y direcciones IP de Amazon Elastic Compute Cloud (Amazon EC2), en una o más zonas de disponibilidad.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html): Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio administrado que puede utilizar para ejecutar Kubernetes en AWS sin necesidad de instalar, operar ni mantener su propio plano de control o nodos de Kubernetes.
+ [Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html): Amazon Virtual Private Cloud (Amazon VPC) permite lanzar recursos de AWS en una red virtual previamente definida.
+ [Kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) – Kubectl es una utilidad de línea de comandos para ejecutar comandos en clústeres de Kubernetes.

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

### Implementar los archivos de manifiesto de implementación y servicio de Kubernetes
<a name="deploy-the-kubernetes-deployment-and-service-manifest-files"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
|  Cree el archivo de manifiesto de implementación de Kubernetes. | Cree un archivo de manifiesto de implementación modificando el siguiente archivo de muestra según sus necesidades.<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>Esta es una muestra de archivo de configuración de NGINX que se implementa mediante la imagen de Docker de NGINX. Para obtener más información, consulte [Cómo usar la imagen de Docker de NGINX](https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/) en la documentación de Docker. | DevOps ingeniero | 
| Implemente el archivo de manifiesto de implementación de Kubernetes. | Ejecute el siguiente comando para aplicar el archivo de manifiesto de implementación a su clúster de Amazon EKS:<br />`kubectl apply –f <your_deployment_file_name> ` | DevOps ingeniero | 
|  Cree el archivo de manifiesto del servicio de Kubernetes.  | Cree un archivo de manifiesto de servicio modificando el siguiente archivo de muestra según sus necesidades.<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>Asegúrese de incluir las siguientes `annotations` para definir un equilibrador de carga de red interno:<pre>service.beta.kubernetes.io/aws-load-balancer-type: nlb<br />service.beta.kubernetes.io/aws-load-balancer-internal: "true"</pre> | DevOps ingeniero | 
| Implemente el archivo de manifiesto del servicio de Kubernetes. | Ejecute el siguiente comando para aplicar el archivo de manifiesto de servicio a su clúster de Amazon EKS:<br />`kubectl apply -f <your_service_file_name>` | DevOps ingeniero | 

### Creación de los puntos de conexión
<a name="create-the-endpoints"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Registre el nombre del equilibrador de carga de red.  | Ejecute el siguiente comando para recuperar el nombre del equilibrador de carga de red:<br />`kubectl get svc sample-service -o wide`<br />Registre el nombre del balanceador de carga de red, que es necesario para crear un PrivateLink punto de conexión de AWS. | DevOps ingeniero | 
| Cree un PrivateLink punto de conexión de AWS. | Inicie sesión en la consola de administración de AWS, abra la consola de Amazon VPC y, a continuación, cree un punto de conexión de AWS PrivateLink . Al asociar este punto de conexión al equilibrador de carga de red, la aplicación estará disponible de forma privada para los clientes. Para obtener más información, consulte los [servicios de punto final de VPC PrivateLink (AWS)](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) en la documentación de Amazon VPC.Si la cuenta del consumidor requiere acceso a la aplicación, el [ID de cuenta de AWS de la cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html) del consumidor debe añadirse a la lista de principales permitidos para la configuración del PrivateLink punto de conexión de AWS. Para obtener más información, consulte [Cómo añadir y eliminar permisos para el servicio de puntos de conexión](https://docs.aws.amazon.com/vpc/latest/userguide/add-endpoint-service-permissions.html) en la documentación de Amazon VPC. | Administrador de la nube  | 
| Cree un punto de conexión de VPC. | En la consola de Amazon VPC, elija **Endpoint Services** y, a continuación, elija **Create Endpoint Service**. Cree un punto de enlace de VPC para el punto de enlace de AWS PrivateLink .<br />El nombre de dominio completo (FQDN) del punto de enlace de VPC apunta al FQDN del punto de enlace de AWS. PrivateLink Esto crea una interfaz de red elástica para el servicio de puntos de conexión de VPC a la que pueden acceder los puntos de conexión de DNS.  | Administrador de la nube | 

## Recursos relacionados
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-resources"></a>
+ [Uso de la imagen de Docker NGINX oficial](https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/)
+ [Equilibrio de carga de red en Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html) 
+ [Creación de servicios de punto final de VPC (AWS) PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) 
+ [Cómo agregar y eliminar permisos para el servicio de punto de conexión](https://docs.aws.amazon.com/vpc/latest/userguide/add-endpoint-service-permissions.html)