¿Por qué no puedo generar un archivo kubeconfig para mi clúster de Amazon EKS?

Última actualización: 22/11/2021

Aparece un error AccessDeniedException cuando intento generar un archivo kubeconfig para un clúster de Amazon Elastic Kubernetes Service (Amazon EKS).

Descripción corta

Debe tener permiso para utilizar la acción de la API EKS:DescribeCluster con el clúster a fin de generar un archivo kubeconfig para un clúster de Amazon EKS. Para obtener el permiso, adjunte una política de AWS Identity and Access Management (IAM) a un usuario de IAM.

Resolución

Para adjuntar una política de IAM a un usuario de IAM, siga los siguientes pasos:

1.    Abra la consola de IAM.

2.    En el panel de navegación, elija Users or Roles (Usuarios o roles).

3.    Seleccione el nombre del usuario o rol en el que desea incorporar una política.

4.    En la pestaña Permissions (Permisos), elija Add inline policy (Agregar política en línea).

5.    Seleccione la pestaña JSON.

6.    Utilice un editor de texto para reemplazar el código por la siguiente política de IAM:

{
   "Version": "2012-10-17",
   "Statement": [
       { 
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "*"
       }
    ]
}

7.    Elija Review Policy (Revisar política).

8.    En Name (Nombre), ingrese un nombre para la política. Por ejemplo: eks_update-kubeconfig.

Nota: Puede elegir cualquier nombre para la política.

9.    Elija Create policy (Crear política).

Un mensaje de denegación explícita indica que si la autenticación multifactor (MFA) es falsa, existe una política de IAM que deniega la mayoría de las acciones:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BlockMostAccessUnlessSignedInWithMFA",
      "Effect": "Deny",
      "NotAction": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ListMFADevices",
        "iam:ListUsers",
        "iam:ListVirtualMFADevices",
        "iam:ResyncMFADevice",
        "sts:GetSessionToken"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

Nota: Como utiliza un dispositivo MFA, debe utilizar un token MFA para autenticar el acceso a los recursos de AWS con AWS Command Line Interface (AWS CLI). Siga los pasos del artículo ¿Cómo utilizo un token MFA para autenticar el acceso a mis recursos de AWS a través de AWS CLI? A continuación, ejecute el comando de AWS CLI sts get-session-token.

Por ejemplo:

$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

Nota: Reemplace arn-of-the-mfa-device por el ARN del dispositivo MFA y code-from-token por el código del token.

Puede utilizar credenciales temporales al exportar los valores a variables de entorno.

Por ejemplo:

$ export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output

$ export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output

$ export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Ejecute el comando update-kubeconfig y confirme que se actualiza el archivo de configuración en ~/.kube/config:

aws eks --region region-code update-kubeconfig --name cluster_name

Nota: Reemplace el region-code por el código de la región de AWS y el cluster name por el nombre del clúster.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?