Acerca de kubeconfig

Archivo de configuración de Kubernetes

Kubernetes usa un archivo YAML llamado kubeconfig para almacenar información de autenticación de clúster para kubectl. kubeconfig contiene una lista de contextos a los que kubectl se refiere cuando ejecuta comandos. De forma predeterminada, el archivo se guarda en $HOME/.kube/config.

Un contexto es un grupo de parámetros de acceso. Cada contexto contiene un clúster de Kubernetes, un usuario y un espacio de nombres. El contexto actual es el clúster que predeterminado para kubectl: todos los comandos kubectl se ejecutan en ese clúster.

Después de crear un clúster, sigue Genera una entrada kubeconfig para agregar el contexto del clúster a tu kubeconfig local.

Extremos privados

Todos los clústeres tienen un extremo canónico. El extremo expone el servidor de API de Kubernetes que kubectl y otros servicios usan para comunicarse con el plano de control del clúster en el puerto TCP 443. En AWS, este extremo es un nombre de DNS que solo se puede resolver dentro del clúster, por ejemplo, gke-abcdefghijk-cp-ffabcdef123456.elb.us-west-1.amazonaws.com. No se puede acceder a este extremo en la Internet pública. Puedes obtener la dirección del extremo del clúster privado del campo endpoint en el resultado del comando gcloud container aws clusters describe.

Extremo de la puerta de enlace de Connect

De forma predeterminada, el comando gcloud container aws clusters get-credentials genera un kubeconfig que usa la puerta de enlace de Connect. Con este kubeconfig, kubectl usa Connect, que luego reenvía de forma segura el tráfico al extremo privado en tu nombre. Cuando usas la puerta de enlace de Connect, el extremo tiene el aspecto https://connectgateway.googleapis.com/v1/projects/PROJECT_NUMBER/memberships/CLUSTER_NAME, en el que PROJECT_NUMBER es el número de proyecto y CLUSTER_NAME es el nombre del clúster.

Si tienes acceso al extremo privado de tu clúster a través de tu VPC, puedes conectarte directamente al extremo privado. Para generar un kubeconfig mediante el extremo privado, usa el comando gcloud container aws clusters get-credentials --private-endpoint.

Acerca de la autenticación para kubectl

Todo GKE en AWS está configurado para aceptar identidades de usuario y cuenta de servicio de Google Cloud a través de la validación de las credenciales que presenta kubectl y la recuperación de la dirección de correo electrónico asociada a la identidad del usuario o la cuenta de servicio. Como resultado, las credenciales de esas cuentas deben incluir el alcance de OAuth userinfo.email para autenticarse de forma correcta.

Cuando usas gcloud a fin de configurar el kubeconfig de tu entorno para un clúster kubectl nuevo o existente, gcloud les da a las mismas credenciales que usa gcloud. Por ejemplo, si usas gcloud auth login, tus credenciales personales se proporcionan a kubectl, incluido el alcance userinfo.email. Esto permite que GKE en AWS autentique el cliente kubectl.

Una vez que los usuarios o las cuentas de servicio de Google Cloud se autentican, también deben estar autorizados para realizar cualquier acción en GKE en AWS. El administrador del clúster es responsable de configurar el control de acceso basado en roles adecuado para configurar la autorización.