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.

nota

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

Antes de crear nodos, debe crear un rol de IAM con las siguientes políticas de IAM:

nota

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

  5. Asegúrese de que las políticas administradas AmazonEKSWorkerNodePolicy y AmazonEC2ContainerRegistryReadOnly se encuentren adjuntas al rol. Si las políticas se encuentran adjuntas, su rol de nodo de Amazon EKS está configurado correctamente.

    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 del Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio .

  6. Elija Trust relationships (Relaciones de confianza) y, a continuación, Edit trust policy (Editar política de confianza).

  7. Compruebe 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 Cancel (Cancelar). Si la relación de confianza no coincide, copie la política en la ventana Edit trust policy (Editar política de confianza) y elija Update policy (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. Seleccione la pestaña con el nombre de la herramienta con la que desea crear el rol.

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 Create role (Crear rol).

  4. En la página Select trusted identity (Seleccionar entidad de confianza), haga lo siguiente:

    1. En la sección Trusted entity type (Tipo de entidad de confianza), elija AWS service (Servicio de AWS).

    2. En Use case (Caso de uso), elija EC2.

    3. Elija Next (Siguiente).

  5. En la página Add permissions (Agregar permisos), haga lo siguiente:

    1. En el cuadro Filter policies (Políticas de filtro), escriba AmazonEKSWorkerNodePolicy.

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

    3. Elija Clear filters (Borrar filtros).

    4. En el cuadro Filter policies (Políticas de filtro), 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 del Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio .

    6. Elija Next (Siguiente).

  6. En la página Name, review, and create (Nombrar, revisar y crear), haga lo siguiente:

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

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

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

    4. Elija Create role (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 del Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio.

    • 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. Sustituya 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