Acceda a aplicaciones de contenedores de forma privada en Amazon EKS mediante AWS PrivateLink y un Network Load Balancer - Recomendaciones de AWS

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

Documento creado por Kirankumar Chandrashekar (AWS)

Entorno: producción

Tecnologías: contenedores y microservicios; modernización DevOps; seguridad, identidad y cumplimiento

Carga de trabajo: todas las demás cargas de trabajo

Servicios de AWS: Amazon EKS; Amazon VPC

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 A continuación, este servicio de punto de conexión de VPC se puede compartir con otras VPC mediante sus puntos de conexión de VPC.

La configuración descrita por este patrón es una forma segura de compartir el acceso a las aplicaciones entre las VPC y las 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 

  • Docker, 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, 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 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 en la documentación de Amazon EKS. 

Pila de tecnología

  • Amazon EKS

  • AWS PrivateLink

  • Equilibrador de carga de red

 

Automatizar y escalar

  • Los manifiestos de Kubernetes se pueden rastrear y administrar en un repositorio basado en Git (por ejemplo, en AWS CodeCommit), y se pueden implementar mediante la integración continua y la entrega continua (CI/CD) en AWS. CodePipeline 

  • Puede usar AWS CloudFormation para crear este patrón mediante el uso de infraestructura como código (IaC).

  • AWS CLI: 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.

  • Equilibrador de carga elástico: el equilibrador de carga elástico distribuye el tráfico entrante de red o de la aplicación entre varios destinos, por ejemplo, instancias de Amazon Elastic Compute Cloud (Amazon EC2), contenedores y direcciones IP en una o más zonas de disponibilidad.

  • Amazon EKS: 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: Amazon Virtual Private Cloud (Amazon VPC) permite lanzar recursos de AWS en una red virtual previamente definida.

  • Kubectl – Kubectl es una utilidad de línea de comandos para ejecutar comandos en clústeres de Kubernetes.

TareaDescripciónHabilidades 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.

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: 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 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:

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.

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: Asegúrese de incluir las siguiente annotations para definir un equilibrador de carga de red interno:

service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-internal: "true"
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:

kubectl apply -f <your_service_file_name>

DevOps ingeniero
TareaDescripciónHabilidades requeridas
Registre el nombre del equilibrador de carga de red.

Ejecute el siguiente comando para recuperar el nombre del equilibrador de carga de red:

kubectl get svc sample-service -o wide

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) en la documentación de Amazon VPC.

Importante: Si la cuenta de consumidor requiere acceso a la aplicación, el ID de cuenta de AWS de la cuenta de consumidor debe añadirse a la lista de directores permitidos para la configuración del PrivateLink punto de conexión de AWS. Para obtener más información, consulte Añadir y eliminar permisos para el servicio de puntos de conexión 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 .

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