Implementación de clústeres privados con acceso limitado a Internet - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Implementación de clústeres privados con acceso limitado a Internet

En este tema, se describe cómo implementar un clúster de Amazon EKS que se implementa en la Nube de AWS sin acceso a Internet saliente. Si tiene un clúster local en AWS Outposts, consulte Creación de nodos de Amazon Linux en AWS Outposts en lugar de este tema.

Si no está familiarizado con las redes de Amazon EKS, consulte Desmitificación de las redes de clústeres para nodos de trabajo de Amazon EKS. Si su clúster no tiene acceso a Internet saliente, debe cumplir con los siguientes requisitos:

  • El clúster debe extraer imágenes de un registro de contenedores que esté en su VPC. Puede crear un Amazon Elastic Container Registry en su VPC y copiar las imágenes del contenedor para que sus nodos puedan extraerlas. Para obtener más información, consulte Copiar una imagen de contenedor de un repositorio en otro repositorio.

  • Su clúster debe tener habilitado el acceso privado a los puntos de conexión. Esto es necesario para que los nodos se registren en el punto de conexión del clúster. El acceso público del punto de conexión es opcional. Para obtener más información, consulte Control del acceso de la red al punto de conexión del servidor de API del clúster.

  • Los nodos autoadministrados de Linux y Windows deben incluir los siguientes argumentos de arranque antes de lanzarlos. Estos argumentos omiten la introspección de Amazon EKS y no requieren acceso a la API de Amazon EKS desde dentro de la VPC.

    1. Determine el valor del punto de conexión del clúster con el siguiente comando. Reemplace my-cluster por el nombre de su clúster.

      aws eks describe-cluster --name my-cluster --query cluster.endpoint --output text

      Un ejemplo de salida sería el siguiente.

      https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com
    2. Determine el valor de la autoridad de certificación del clúster con el siguiente comando. Reemplace my-cluster por el nombre de su clúster.

      aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output text

      El resultado devuelto es una cadena larga.

    3. Reemplace cluster-endpoint y certificate-authority en los siguientes comandos por los valores obtenidos en el resultado de los comandos anteriores. Para obtener más información acerca de cómo especificar argumentos de arranque al lanzar nodos autoadministrados, consulte Creación de nodos autoadministrados de Amazon Linux y Creación de nodos autoadministrados de Microsoft Windows.

    • Para nodos de Linux:

      --apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authority

      Para obtener argumentos adicionales, consulte el script de arranque en GitHub.

    • Para nodos de Windows:

      nota

      Si utiliza un CIDR de servicio personalizado, debe especificarlo con el parámetro -ServiceCIDR. De lo contrario, se producirá un error en la resolución de DNS del clúster para Pods.

      -APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority

      Para obtener argumentos adicionales, consulte Parámetros de configuración del script de arranque.

  • El aws-auth ConfigMap del clúster debe crearse desde su VPC. Para obtener más información sobre cómo crear y añadir entradas al ConfigMap de aws-auth, ingrese eksctl create iamidentitymapping --help en su terminal. Si el ConfigMap no existe en su servidor, eksctl lo creará cuando utilice el comando para añadir una asignación de identidad.

  • Los Pods configurados con roles de IAM para cuentas de servicio adquieren credenciales de una llamada a la API de AWS Security Token Service (AWS STS). Si no hay acceso a Internet saliente, debe crear y utilizar un punto de conexión de VPC de AWS STS en su VPC. La mayoría de los SDK de AWS v1 utilizan el punto de conexión global de AWS STS de forma predeterminada (sts.amazonaws.com), que no utiliza el punto de conexión de VPC de AWS STS. Para utilizar el punto de conexión de VPC de AWS STS, es posible que tenga que configurar el SDK de modo que utilice el punto de conexión de AWS STS regional (sts.region-code.amazonaws.com). Para obtener más información, consulte Configure el punto de conexión AWS Security Token Service de una cuenta de servicio.

  • Las subredes de VPC de su clúster deben tener un punto de conexión de interfaz de VPC para todas las subredes de VPC de los Servicios de AWS a los que los Pods necesiten acceder. Para obtener más información, consulte Acceso a un servicio de AWS a través de un punto de conexión de VPC de interfaz. Algunos servicios y puntos de conexión de uso común se enumeran en la siguiente tabla. Para obtener la lista completa de los puntos de conexión, consulte Servicios de AWS que se integran con AWS PrivateLink en la Guía de AWS PrivateLink.

    Servicio Punto de conexión
    Amazon EC2 com.amazonaws.region-code.ec2
    Amazon Elastic Container Registry (para extraer imágenes de contenedores) com.amazonaws.region-code.ecr.api, com.amazonaws.region-code.ecr.dkr y com.amazonaws.region-code.s3
    Application Load Balancers y Network Load Balancers com.amazonaws.region-code.elasticloadbalancing
    AWS X-Ray com.amazonaws.region-code.xray
    Registros de Amazon CloudWatch com.amazonaws.region-code.logs
    AWS Security Token Service (requerido al usar roles de IAM para cuentas de servicio) com.amazonaws.region-code.sts
Consideraciones
  • Todos los nodos autoadministrados deben implementarse en subredes que tengan los puntos de conexión de la interfaz de VPC que necesita. Si crea un grupo de nodos administrados, el grupo de seguridad del punto de conexión de la interfaz de VPC debe permitir el CIDR para las subredes. También puede agregar el grupo de seguridad del nodo creado al grupo de seguridad del punto de conexión de la interfaz de VPC.

  • Si sus Pods utilizan volúmenes de Amazon EFS, antes de implementar Almacenamiento de un sistema de archivos elástico con Amazon EFS, se debe cambiar el archivo kustomization.yaml del controlador para establecer las imágenes de contenedor de manera que utilicen la misma Región de AWS que el clúster de Amazon EKS.

  • Puede utilizar AWS Load Balancer Controller para implementar los equilibradores de carga de aplicación (ALB) y los equilibradores de carga de red de AWS en su clúster privado. Al implementarlo, debe usar los indicadores de línea de comandos para establecer enable-shield, enable-waf y enable-wafv2 como falsos. No se admite la detección de certificados con nombres de host de los objetos de entrada. Esto se debe a que el controlador necesita llegar a AWS Certificate Manager, el cual no tiene un punto de conexión de la interfaz de VPC.

    El controlador es compatible con equilibradores de carga de red con destinos IP, que son necesarios para su uso con Fargate. Para obtener más información, consulte Dirección de la aplicación y el tráfico de HTTP con Application Load Balancers y Crear un equilibrador de carga de red.

  • Se admite el Escalador automático de clústeres. Al implementar Pods del Escalador automático de clústeres, asegúrese de que la línea de comandos incluya --aws-use-static-instance-list=true. Para obtener más información, consulte Uso de lista de instancias estáticas en GitHub. La VPC del nodo de trabajo también debe incluir el punto de conexión de VPC de AWS STS y el punto de conexión de VPC de escalado automático.

  • Algunos productos de software de contenedores utilizan llamadas de API que acceden a AWS Marketplace Metering Service para supervisar el uso. Los clústeres privados no permiten estas llamadas, por lo que estos tipos de contenedores no se pueden utilizar en clústeres privados.