Cómo configurar el acceso a clústeres para kubectl

En esta página, se explica cómo configurar el acceso a clústeres para la herramienta de línea de comandos de kubectl en Google Kubernetes Engine.

Descripción general

Si ejecutas varios clústeres en tu proyecto de Google Cloud Platform, necesitas elegir con qué clúster se comunica kubectl. Puedes configurar un clúster predeterminado para kubectl si configuras el contexto actual en el archivo kubeconfig de Kubernetes. Además, puedes ejecutar comandos de kubectl en un clúster específico con el marcador --cluster.

En las siguientes secciones se explica cómo funciona kubeconfig, cómo configurar un clúster predeterminado para kubectl y cómo ejecutar comandos individuales de kubectl en un clúster específico.

Antes de comenzar

Sigue estos pasos a fin de prepararte para esta tarea:

  • Asegúrate de que habilitaste la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Asegúrate de que instalaste el SDK de Cloud.
  • Establece tu ID del proyecto predeterminado:
    gcloud config set project [PROJECT_ID]
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Si trabajas con clústeres regionales, establece tu región de procesamiento predeterminada:
    gcloud config set compute/region [COMPUTE_REGION]
  • Actualiza gcloud a la versión más reciente:
    gcloud components update

Archivo de configuración de Kubernetes

Kubernetes usa un archivo YAML llamado kubeconfig para almacenar información de autenticación de clústeres de kubectl. kubeconfig contiene una lista de contextos a los que kubectl se refiere cuando ejecuta comandos. De manera 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 predeterminado actual de kubectl: todos los comandos de kubectl se ejecutan en ese clúster.

Cuando creas un clúster con gcloud container clusters create, se agrega una entrada de forma automática a kubeconfig en tu entorno y el contexto actual cambia a ese clúster:

gcloud container clusters create my-cluster
Creating my-cluster...done
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster

Cuando creas un clúster con Google Cloud Platform Console o con gcloud desde una computadora diferente, el kubeconfig de tu entorno no se actualiza. Además, si un miembro del equipo del proyecto usa gcloud para crear un clúster desde su computadora, su kubeconfig se actualiza, pero el tuyo no. Sigue las instrucciones a continuación para agregar estos clústeres a tu kubeconfig local.

Sobre el extremo del clúster

Todos los clústeres tienen un extremo canónico. El extremo es la dirección IP del servidor de la API de Kubernetes que kubectl y otros servicios usan para comunicarse con tu instancia principal del clúster. El extremo se muestra en GCP Console en el campo Extremos de la pestaña Detalles del clúster y en el resultado de gcloud container clusters describe en el campo endpoint.

Cuando ejecutas gcloud container clusters get-credentials, puedes observar que el comando obtiene el extremo del clúster como parte de la actualización de kubeconfig.

Los clústeres privados tienen dos valores de extremos únicos: privateEndpoint, que es una dirección IP interna y publicEndpoint, que es una externa. Ejecutar get-credentials en un clúster privado establece de manera predeterminada la dirección IP externa como el extremo. Si prefieres usar la IP interna como el extremo, consulta Genera una entrada de kubeconfig con la dirección IP interna de un clúster privado.

Observa el contexto actual de kubectl

Si quieres ver el contexto actual de kubectl, ejecuta el siguiente comando:

kubectl config current-context

Observa kubeconfig

Para ver el kubeconfig de tu entorno, ejecuta el siguiente comando:

kubectl config view

El comando muestra una lista de todos los clústeres para los cuales se generaron entradas de kubeconfig. Si se enumera un clúster de GKE, puedes ejecutar los comandos de kubectl en él en tu entorno actual. De lo contrario, necesitas generar una entrada de kubeconfig para el clúster.

Genera una entrada de kubeconfig

Para ejecutar los comandos de kubectl en un clúster creado en GCP Console, desde otra computadora o por otro miembro del proyecto, necesitas generar una entrada de kubeconfig en tu entorno.

Genera una entrada de kubeconfig con la ejecución del siguiente comando:

gcloud container clusters get-credentials [CLUSTER_NAME]

en el que [CLUSTER_NAME] es el nombre del clúster.

La entrada de kubeconfig puede contener ciertas credenciales:

  1. Tus credenciales, tal como se muestran en gcloud auth list
  2. Las credenciales predeterminadas de tu aplicación, si se las configuró

Genera una entrada de kubeconfig con la dirección IP interna de un clúster privado

Cuando ejecutas get-credentials, puedes especificar la --internal-ip para que escriba la dirección IP interna del clúster privado de kubeconfig:

gcloud container clusters get-credentials --internal-ip [CLUSTER_NAME]

Configura un clúster predeterminado para los comandos de kubectl

Si ya generaste una entrada de kubeconfig para clústeres, puedes cambiar el contexto actual de kubectl a ese clúster si ejecutas gcloud container clusters get-credentials.

Por ejemplo, considera un proyecto con dos clústeres, my-cluster y my-new-cluster. El contexto actual es my-new-cluster, pero quieres ejecutar todos los comandos de kubectl en my-cluster.

Para cambiar el contexto actual a my-cluster, debes ejecutar el siguiente comando:

gcloud container clusters get-credentials my-cluster

Ejecuta comandos individuales de kubectl en un clúster específico

Puedes ejecutar comandos individuales de kubectl en un clúster específico si pasas el nombre del clúster tal como aparece en kubeconfig como el argumento del marcador --cluster.

Por ejemplo, considera un entorno con dos clústeres, my-cluster y my-new-cluster, en el que el contexto actual es my-cluster. Quieres implementar una aplicación en my-new-cluster, pero no quieres cambiar el contexto actual.

Para implementar la aplicación en my-new-cluster, debes ejecutar el siguiente comando:

kubectl run my-app --image gcr.io/my-bucket/my-app:1.0 --cluster my-new-cluster

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...