

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Implementación de clústeres privados con acceso limitado a Internet
<a name="private-clusters"></a>

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](eks-outposts-self-managed-nodes.md) 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](https://aws.amazon.com/blogs/containers/de-mystifying-cluster-networking-for-amazon-eks-worker-nodes). Si su clúster no tiene acceso a Internet saliente, debe cumplir con los siguientes requisitos:

## Requisitos de la arquitectura del clúster
<a name="private-clusters-architecture"></a>
+ 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](copy-image-to-repository.md).
+ 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 [Punto de conexión del servidor de API del clúster](cluster-endpoint.md).

## Requisitos del nodo
<a name="private-clusters-node"></a>
+ 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
     ```

  1. 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.

  1. Reemplace los valores de `apiServerEndpoint` y `certificateAuthority` en el objeto NodeConfig por los valores devueltos en la salida de los comandos anteriores. Para obtener más información acerca de cómo especificar argumentos de arranque al lanzar nodos de Amazon Linux 2023 autoadministrados, consulte [Creación de nodos autoadministrados de Amazon Linux](launch-workers.md) y [Creación de nodos autoadministrados de Microsoft Windows](launch-windows-workers.md).
     + En el caso de los nodos Linux:

       ```
       ---
       MIME-Version: 1.0
       Content-Type: multipart/mixed; boundary="BOUNDARY"
       
       --BOUNDARY
       Content-Type: application/node.eks.aws
       
       ---
       apiVersion: node.eks.aws/v1alpha1
       kind: NodeConfig
       spec:
         cluster:
           name: my-cluster
           apiServerEndpoint: [.replaceable]https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com
           certificateAuthority: [.replaceable]Y2VydGlmaWNhdGVBdXRob3JpdHk=
           ...
       ```

       Para obtener argumentos adicionales, consulte el [script de arranque](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) en GitHub.
     + Para los usuarios 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](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters).
+ 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.

## Requisitos del pod
<a name="private-clusters-pod"></a>
+  **Pod Identity**: los pods configurados con Pod Identity de EKS adquieren las credenciales de la API de autenticación de EKS. Si no hay acceso a Internet de salida, debe crear y utilizar un punto de conexión de VPC para la API de autenticación de EKS: `com.amazonaws.region-code.eks-auth`. Para obtener más información sobre los puntos de conexión de VPC de EKS y de autenticación de EKS, consulte [Acceso a Amazon EKS con AWS PrivateLink](vpc-interface-endpoints.md).
+  **IRSA**: los pods configurados con [roles de IAM para cuentas de servicio](iam-roles-for-service-accounts.md) 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](configure-sts-endpoint.md).
+ 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](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html). 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](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html) en la [Guía de AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/).

  Recomendamos que [habilite nombres de DNS privados](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#enable-private-dns-names) para los puntos de conexión de la VPC, de modo que las cargas de trabajo aún puedan utilizar los puntos de conexión de servicio de AWS públicos sin problemas.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/eks/latest/userguide/private-clusters.html)
+ 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.
+  **Almacenamiento de EFS**: si sus pods utilizan volúmenes de Amazon EFS, antes de implementar el [almacenamiento de un sistema de archivos con Amazon EFS](efs-csi.md), se debe cambiar el archivo [kustomization.yaml](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/deploy/kubernetes/overlays/stable/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.
+ Route 53 no es compatible con AWS PrivateLink. No puede administrar los registros de DNS de Route 53 desde un clúster privado de Amazon EKS. Esto afecta a [external-dns](https://github.com/kubernetes-sigs/external-dns) de Kubernetes.
+ Si usa la AMI optimizada para EKS, debe habilitar el punto de conexión de `ec2` en la tabla anterior. También puede configurar el nombre de DNS del nodo de forma manual. La AMI optimizada utiliza las API de EC2 para establecer el nombre de DNS del nodo automáticamente.
+ Puede utilizar el [controlador de equilibrador de carga de AWS](aws-load-balancer-controller.md) 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](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/deploy/configurations/#controller-command-line-flags) para establecer `enable-shield`, `enable-waf` y `enable-wafv2` como falsos. No se admite la [detección de certificados](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/cert_discovery/#discover-via-ingress-rule-host) 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 [Redirección de tráfico de aplicaciones y HTTP con los equilibradores de carga de aplicaciones](alb-ingress.md) y [Crear un equilibrador de carga de red](network-load-balancing.md#network-load-balancer).
+  Se admite el [Escalador automático de clústeres](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md). 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 [Use Static Instance List](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md#use-static-instance-list) 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 API que acceden al servicio de medición de AWS Marketplace 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.