Conexión de kubectl a un clúster de EKS mediante la creación de un archivo kubeconfig - Amazon EKS

Conexión de kubectl a un clúster de EKS mediante la creación de un archivo kubeconfig

En este tema, creará un archivo kubeconfig para su clúster (o actualizará uno existente).

La herramienta de línea de comandos kubectl usa la información de configuración en los archivos kubeconfig para comunicarse con el servidor de API de un clúster. Para obtener más información, consulte Organización del acceso al clúster mediante archivos kubeconfig en la documentación de Kubernetes.

Amazon EKS usa el comando aws eks get-token con kubectl para la autenticación del clúster. De forma predeterminada, la CLI de AWS utiliza las mismas credenciales que se devuelven con el siguiente comando:

aws sts get-caller-identity
  • Un clúster existente de Amazon EKS. Para implementar uno, consulte Introducción a Amazon EKS.

  • La herramienta de línea de comandos de kubectl está instalada en su dispositivo o AWS CloudShell. La versión puede ser la misma o hasta una versión secundaria anterior o posterior a la versión de Kubernetes de su clúster. Por ejemplo, si la versión del clúster es 1.29, puede usar la versión 1.28, 1.29 o 1.30 de kubectl con él. Para instalar o actualizar kubectl, consulte Configure kubectl y eksctl.

  • La versión 2.12.3 o posterior, o bien, la versión 1.27.160 o posterior de la Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada en su dispositivo o AWS CloudShell. Para comprobar su versión actual, utilice aws --version | cut -d / -f2 | cut -d ' ' -f1. Los administradores de paquetes tales como yum, apt-get o Homebrew para macOS suelen estar atrasados varias versiones respecto de la versión de la AWS CLI más reciente. Para instalar la versión más reciente, consulte Instalación y Configuración rápida con aws configure en la Guía del usuario de la Interfaz de la línea de comandos de AWS. La versión de la CLI de AWS instalada en AWS CloudShell también puede estar atrasada varias versiones respecto de la versión más reciente. Para actualizarla, consulte Instalación de la CLI de AWS en su directorio principal en la Guía del usuario de AWS CloudShell.

  • Un rol o usuario de IAM con permisos para utilizar la acción de API eks:DescribeCluster en el clúster que especifique. Para obtener más información, consulte Ejemplos de políticas de Amazon EKS basadas en identidades. Si utiliza una identidad de su propio proveedor de OpenID Connect para acceder al clúster, consulte Uso de kubectl en la documentación de Kubernetes para crear o actualizar el archivo de kube config.

Crear el archivo kubeconfig de forma automática

  • La versión 2.12.3 o posterior, o bien, la versión 1.27.160 o posterior de la Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada en su dispositivo o AWS CloudShell. Para comprobar su versión actual, utilice aws --version | cut -d / -f2 | cut -d ' ' -f1. Los administradores de paquetes tales como yum, apt-get o Homebrew para macOS suelen estar atrasados varias versiones respecto de la versión de la AWS CLI más reciente. Para instalar la versión más reciente, consulte Instalación y Configuración rápida con aws configure en la Guía del usuario de la Interfaz de la línea de comandos de AWS. La versión de la CLI de AWS instalada en AWS CloudShell también puede estar atrasada varias versiones respecto de la versión más reciente. Para actualizarla, consulte Instalación de la CLI de AWS en su directorio principal en la Guía del usuario de AWS CloudShell.

  • Permiso para usar la acción de API eks:DescribeCluster en el clúster que especifique. Para obtener más información, consulte Ejemplos de políticas de Amazon EKS basadas en identidades.

    1. Cree o actualice un archivo de kubeconfig para el clúster. Reemplace region-code por la región de AWS donde creó el clúster y my-cluster por el nombre de su clúster.

      aws eks update-kubeconfig --region region-code --name my-cluster

      De forma predeterminada, el archivo de configuración resultante se crea en la ruta de kubeconfig predeterminada (.kube) en el directorio de inicio o en combinación con un archivo config existente en dicha ubicación. Puede especificar otra ruta con la opción --kubeconfig.

      Puede especificar un ARN de rol de IAM con la opción --role-arn para utilizar en la autenticación al emitir comandos kubectl. De lo contrario, se utilizará la entidad principal de IAM de la CLI predeterminada o la cadena de credencial del SDK de AWS. Puede ver su identidad de la CLI o el SDK predeterminados de AWS ejecutando el comando aws sts get-caller-identity.

      Para ver todas las opciones disponibles, ejecute el comando aws eks update-kubeconfig help o consulte update-kubeconfig en la Referencia de los comandos de la CLI de AWS.

    2. Pruebe la configuración.

      kubectl get svc

      Un ejemplo de salida sería el siguiente.

      NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

      Si recibe cualquier error de tipo de recurso o autorización, consulte Acceso denegado o no autorizado (kubectl) en el tema de solución de problemas.