Rol de IAM de nodo de Amazon EKS - Amazon EKS

Rol de IAM de nodo de Amazon EKS

El daemon de kubelet del nodo de Amazon EKS realiza llamadas a las API de AWS en su nombre. Los nodos reciben permisos de dichas llamadas de API a través de políticas asociadas y de un perfil de instancias de IAM. Antes de poder lanzar nodos y registrarlos en un clúster, debe crear un rol de IAM para dichos nodos, para utilizarlo cuando se lancen. Este requisito se aplica a nodos lanzados con la AMI optimizada para Amazon EKS proporcionada por Amazon o con cualquier otra AMI de nodo que pretenda utilizar. Además, este requisito se aplica tanto a los grupos de nodos administrados como a los administrados por el usuario.

nota

No se puede usar el mismo rol que se usa para crear clústeres.

Antes de crear un nodo, debe crear un rol de IAM con los siguientes permisos:

  • Permisos para que el kubelet pueda describir los recursos de Amazon EC2 en la VPC, tal y como los proporciona la política AmazonEKSWorkerNodePolicy. Esta política también proporciona los permisos para el agente de Pod Identity de Amazon EKS.

  • Permisos para que el kubelet pueda utilizar imágenes de contenedor de Amazon Elastic Container Registry (Amazon ECR), según lo dispuesto en la política AmazonEC2ContainerRegistryReadOnly. Los permisos para utilizar imágenes de contenedor de Amazon Elastic Container Registry (Amazon ECR) son necesarios porque los complementos integrados para redes ejecutan pods que utilizan imágenes de contenedor de Amazon ECR.

  • (Opcional) Permisos para que el agente de Pod Identity de Amazon EKS utilice la acción eks-auth:AssumeRoleForPodIdentity para recuperar las credenciales de los pods. Si no usa AmazonEKSWorkerNodePolicy, debe proporcionar este permiso además de los permisos de EC2 para utilizar Pod Identity de EKS.

  • (Opcional) Si no utiliza Pod Identity de EKS e IRSA para otorgar permisos a los pods de CNI de VPC, debe proporcionar permisos para la CNI de la VPC en el rol de instancia. Puede utilizar la política administrada AmazonEKS_CNI_Policy (si creó el clúster con la familia IPv4) o una política de IPv6 que usted cree (si creó el clúster con la familia IPv6). Sin embargo, en lugar de adjuntar la política a este rol, le recomendamos adjuntar la política a un rol independiente utilizado específicamente para el complemento Amazon VPC CNI. Para obtener más información acerca de cómo crear un rol independiente para el complemento Amazon VPC CNI, consulte Configuración de Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio (IRSA).

nota

Antes del 3 de octubre de 2023, se requerían AmazonEKSWorkerNodePolicy y AmazonEC2ContainerRegistryReadOnly en el rol de IAM de cada grupo de nodos administrados.

Los grupos de nodos de Amazon EC2 deben tener un rol de IAM diferente al perfil de Fargate. Para obtener más información, consulte Rol de IAM de ejecución de Pod de Amazon EKS.

Verificar un rol de nodo existente

Puede utilizar el siguiente procedimiento para verificar y conocer si la cuenta ya dispone del rol de nodo de Amazon EKS.

Para verificar el eksNodeRole en la consola de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación izquierdo, seleccione Roles.

  3. En la lista de roles, busque eksNodeRole, AmazonEKSNodeRole o NodeInstanceRole. Si no existe un rol con alguno de esos nombres, consulte Crear el rol de IAM de nodo de Amazon EKS para crear el rol. Si existe un rol que contiene eksNodeRole, AmazonEKSNodeRole o NodeInstanceRole, seleccione el rol para ver las políticas adjuntas.

  4. Elija Permisos.

  5. Asegúrese de que las políticas administradas AmazonEKSWorkerNodePolicy and AmazonEC2ContainerRegistryReadOnly estén asociadas al rol, o que haya una política personalizada asociada con los permisos mínimos.

    nota

    Si la política AmazonEKS_CNI_Policy se encuentra adjunta al rol, se recomienda eliminarla y adjuntarla a un rol de IAM asignado a la cuenta de servicio de aws-node de Kubernetes en su lugar. Para obtener más información, consulte Configuración de Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio (IRSA).

  6. Elija Relaciones de confianza y, a continuación, Editar política de confianza.

  7. Verifique que la relación de confianza contiene la siguiente política. Si la relación de confianza coincide con la política a continuación, seleccione Cancelar. Si la relación de confianza no coincide, copie la política en la ventana Editar política de confianza y elija Actualizar política.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Crear el rol de IAM de nodo de Amazon EKS

Puede crear el rol de IAM del nodo con la AWS Management Console o la AWS CLI.

AWS Management Console
Para crear el rol de nodo de Amazon EKS en la consola de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación izquierdo, seleccione Roles.

  3. En la página Roles, elija Crear rol.

  4. En la página Seleccionar entidad de confianza, haga lo siguiente:

    1. En la sección Tipo de entidad de confianza, elija Servicio de AWS.

    2. En Caso de uso, elija EC2.

    3. Elija Siguiente.

  5. En la página Agregar permisos, asocie una política personalizada o haga lo siguiente:

    1. En el cuadro Filtrar políticas, escriba AmazonEKSWorkerNodePolicy.

    2. A continuación, marque la casilla situada a la izquierda de AmazonEKSWorkerNodePolicy en los resultados de la búsqueda.

    3. Elija Borrar filtros.

    4. En el cuadro Filtrar políticas, escriba AmazonEC2ContainerRegistryReadOnly.

    5. Marque la casilla situada a la izquierda de AmazonEC2ContainerRegistryReadOnly en los resultados de la búsqueda.

      La política administrada AmazonEKS_CNI_Policy o una política de IPv6 que usted cree también se tiene que adjuntar a este rol o a un rol diferente asignado a la cuenta de servicio de Kubernetes de aws-node. Se recomienda asignar la política al rol asociado a la cuenta de servicio de Kubernetes en lugar de asignarla a este rol. Para obtener más información, consulte Configuración de Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio (IRSA).

    6. Elija Siguiente.

  6. En la página Nombrar, revisar y crear, haga lo siguiente:

    1. En Nombre del rol, ingrese un nombre único para su rol, por ejemplo, AmazonEKSNodeRole.

    2. En Descripción, sustituya el texto actual por un texto descriptivo, como Amazon EKS - Node role.

    3. En Agregar etiquetas (Opcional), de manera opcional, agregue metadatos al rol asociando etiquetas como pares de clave-valor. Para obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de recursos de IAM en la Guía de usuario de IAM.

    4. Elija Crear rol.

AWS CLI
  1. Ejecute el siguiente comando para crear un archivo node-role-trust-relationship.json.

    cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
  2. Cree el rol de IAM.

    aws iam create-role \ --role-name AmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-relationship.json"
  3. Adjunte al rol de IAM las dos políticas administradas por IAM necesarias.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name AmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name AmazonEKSNodeRole
  4. Adjunte una de las siguientes políticas de IAM al rol de IAM en función de la familia de IP con la que haya creado el clúster. La política debe adjuntarse a este rol o a un rol asociado a la cuenta de servicio de Kubernetes de aws-node que se utiliza para el Amazon VPC CNI plugin for Kubernetes. Se recomienda asignar la política al rol asociado a la cuenta de servicio de Kubernetes. Para asignar la política al rol asociado a la cuenta de servicio de Kubernetes, consulte Configuración de Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio (IRSA).

    • IPv4

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSNodeRole
    • IPv6

      1. Copie el siguiente texto y guárdelo en un archivo llamado vpc-cni-ipv6-policy.json.

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] }
      2. Cree la política de IAM.

        aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
      3. Adjunte la política de IAM al rol de IAM. Reemplace 111122223333 por su ID de cuenta.

        aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSNodeRole