Registrar un clúster

En esta página, se describe cómo registrar manualmente tus clústeres de Kubernetes con Google Cloud.

Antes de comenzar

  1. Habilita las API necesarias en tu proyecto de Google Cloud.
  2. Garantiza la conectividad de red para acceder a la API de Google Cloud y a los extremos del servicio. Si registras un clúster de GKE que se ejecuta en Google Cloud, lo obtendrás de forma predeterminada.

  3. Configuración de Google Cloud

  4. Configuración de Kubernetes

Registra un clúster

Todas las opciones de registro de clústeres manuales necesitan que especifiques una identidad para que el agente de Connect use cuando se autentique en Google, en la mayoría de los casos las credenciales de cuenta de servicio de Google Cloud. En los clústeres de GKE, también puedes configurar el agente de Connect para usar Workload Identity. El registro mediante Workload Identity permite que el agente de Connect y otras cargas de trabajo del clúster se autentiquen en Google sin necesidad de que las descargues, rotes de forma manual y administres las claves de la cuenta de servicio de Google Cloud en general. Con Workload Identity, el agente de Connect y otras cargas de trabajo pueden autenticarse mediante tokens de corta duración que genera el clúster. Obtén más información sobre Workload Identity en Usa Workload Identity.

En la actualidad, usar Workload Identity para clústeres de GKE está disponible solo mediante la herramienta de línea de comandos de gcloud.

gcloud

Registra un clúster de GKE

Mientras registras el clúster, puedes configurar el agente de Connect para usar Workload Identity o usar una cuenta de servicio de Google Cloud.

Registra un clúster de GKE mediante Workload Identity (recomendado)

  1. Determina si Workload Identity está habilitado en tu clúster de GKE

    Ejecuta el siguiente comando para enumerar qué grupo de Workload Identity del clúster es miembro de

    gcloud container clusters describe GKE_CLUSTER --format="value(workloadIdentityConfig.workloadPool)"
    

    Reemplaza lo siguiente:

    • GKE_CLUSTER: el name del clúster de GKE del proyecto actual.

    Si ves un resultado similar al siguiente, Workload Identity ya está habilitado en su clúster de GKE y puedes pasar directamente a “Registrar el clúster” a continuación.

    GKE_PROJECT_ID.svc.id.goog

    Si no hay resultados, Workload Identity no está habilitada en el clúster de GKE. Continúa habilitando Workload Identity en tu clúster de GKE antes de continuar con el registro del clúster.

  2. Habilitar Workload Identity

    Sigue atentamente las instrucciones vinculadas para habilitar GKE Workload Identity. Cuando habilitas GKE Workload Identity, se modifica el comportamiento de autenticación de los nuevos grupos de nodos creados después de que se habilita, lo que puede afectar a las aplicaciones que dependen de las cuentas de servicio conectadas a las instancias de Compute Engine en el grupo de nodos.

  3. Registra el clúster

    Ejecuta cualquiera de los siguientes comandos para registrar el clúster:

    gcloud beta container hub memberships register MEMBERSHIP_NAME \
     --gke-uri=GKE_URI \
     --enable-workload-identity
    

    o

    gcloud beta container hub memberships register MEMBERSHIP_NAME \
     --gke-cluster=GKE_CLUSTER \
     --enable-workload-identity
    

    Reemplaza lo siguiente:

    • MEMBERSHIP_NAME: Es el nombre de membresía que eliges para representar de forma única el clúster que se registra en la flota.
    • GKE_URI: Es el URI del clúster de GKE, por ejemplo: https://container.googleapis.com/v1/projects/my-gke-project/locations/us-central1-a/clusters/my-gke-cluster. Para obtener el URI, ejecuta gcloud container clusters list --uri.
    • GKE_CLUSTER: Es el location/name del clúster de GKE del proyecto actual. La ubicación puede ser una zona o una región, por ejemplo: us-central1-a/my-gke-cluster.

Registra un clúster de GKE mediante una cuenta de servicio

Ejecuta cualquiera de los siguientes comandos:

gcloud container hub memberships register MEMBERSHIP_NAME \
   --gke-uri=GKE_URI \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

o

gcloud container hub memberships register MEMBERSHIP_NAME \
   --gke-cluster=GKE_CLUSTER \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

Reemplaza lo siguiente:

  • MEMBERSHIP_NAME: Es el nombre de membresía que eliges para representar de forma única el clúster que se registra en la flota.
  • SERVICE_ACCOUNT_KEY_PATH: Es la ruta de acceso del archivo local al archivo JSON de clave privada de la cuenta de servicio que se descargó como parte de los requisitos. Esta clave de la cuenta de servicio se almacena como un secreto llamado creds-gcp en el espacio de nombres gke-connect.
  • GKE_URI: Es el URI del clúster de GKE, por ejemplo: https://container.googleapis.com/v1/projects/my-gke-project/locations/us-central1-a/clusters/my-gke-cluster. Para obtener el URI, ejecuta gcloud container clusters list --uri.
  • GKE_CLUSTER: Es el location/name del clúster de GKE del proyecto actual. La ubicación puede ser una zona o una región, por ejemplo: us-central1-a/my-gke-cluster.

Registra cualquier otro clúster

Estas instrucciones se aplican a clústeres que no sean de GKE, a clústeres de Anthos en AWS, a clústeres de Anthos alojados en VMware y a cualquier otro clúster de Anthos.

Ejecuta el siguiente comando:

 gcloud container hub memberships register MEMBERSHIP_NAME \
   --context=KUBECONFIG_CONTEXT \
   --kubeconfig=KUBECONFIG_PATH \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

Reemplaza lo siguiente:

  • MEMBERSHIP_NAME: Es el nombre de membresía que elijas y que se usa para representar de forma única el clúster registrado en la flota.
  • SERVICE_ACCOUNT_KEY_PATH: Es la ruta de acceso del archivo local al archivo JSON de clave privada de la cuenta de servicio que se descargó como parte de los requisitos. Esta clave de la cuenta de servicio se almacena como un secreto llamado creds-gcp en el espacio de nombres gke-connect.
  • KUBECONFIG_CONTEXT: Es el contexto de clúster del clúster que se registra como aparece en el archivo kubeconfig. Puedes obtener este valor desde la línea de comandos si ejecutas kubectl config current-context.
  • KUBECONFIG_PATH: Es la ruta de archivo local en la que se almacena tu kubeconfig que contiene una entrada para el clúster que se registra. El valor predeterminado es $KUBECONFIG, si esa variable de entorno está configurada, de lo contrario, el valor predeterminado será $HOME/.kube/config.

Console

Registra un clúster de Anthos en Google Cloud

Estas instrucciones se aplican a los clústeres de GKE en Google Cloud en proyectos que tienen habilitado Anthos.

Para registrar un clúster, sigue estos pasos:

  1. En Google Cloud Console, ve a la página Clústeres de Anthos. En esta página, se muestran todos los clústeres registrados.

    Ir a la página Clústeres de Anthos

  2. Haz clic en Registrar un clúster existente.

  3. Haz clic en Registrar junto al clúster no registrado que deseas agregar a tu flota.

  4. Especifica la cuenta de servicio que deseas usar cuando registras el clúster. Te recomendamos mantener el comportamiento predeterminado y crear una cuenta de servicio nueva.

    • Si seleccionas Crear una nueva cuenta de servicio, sigue estos pasos:
      • Especifica un ID de cuenta de servicio para identificar la cuenta de servicio nueva.
      • Elige si deseas descargar la clave de su cuenta de servicio como un archivo JSON. Te recomendamos conservar el comportamiento predeterminado y descargar la clave, ya que no podrás descargarla más adelante.
    • Si seleccionas Usar la cuenta de servicio existente, pega la clave de la cuenta de servicio en el formato JSON.
  5. Opcional: Especifica un nombre de membresía nuevo para el clúster. De forma predeterminada, el nombre de la membresía de un clúster es su nombre actual. Sin embargo, si el nombre del clúster no es único dentro de tu proyecto, debes especificar un nombre nuevo de membresía único, ya que todos los clústeres requieren un identificador único en su flota.

  6. Para registrar tu clúster, haz clic en Enviar.

Registra cualquier otro clúster

Estas instrucciones se aplican a clústeres que no sean de GKE, a clústeres de Anthos alojados en AWS, a clústeres de Anthos alojados en VMware y a cualquier otro clúster de Anthos o GKE.

Para registrar un clúster, sigue estos pasos:

  1. En Google Cloud Console, ve a la página Clústeres de Anthos. En esta página, se muestran todos los clústeres registrados.

    Ir a la página Clústeres de Anthos

  2. Haz clic en Registrar un clúster existente.

  3. Haz clic en Agregar clúster externo.

  4. Ingresa el nombre del clúster que deseas registrar en el campo Nombre del clúster.

  5. Opcional: Agrega etiquetas de Google Cloud a tu clúster.

  6. Haz clic en Generar comandos de registro.

  7. En Cloud Shell o donde sea que hayas guardado las credenciales de tu cuenta de servicio, edita y ejecuta el comando de gcloud que se muestra en la página. Debes especificar los siguientes valores:

    • El CLUSTER_CONTEXT es el contexto del clúster tal como aparece en el archivo kubeconfig. Puedes obtener este valor desde la línea de comandos si ejecutas kubectl config current-context.
    • El KUBECONFIG_PATH es la ruta de acceso del archivo local donde se almacena tu archivo kubeconfig. El valor predeterminado es $KUBECONFIG, si esa variable de entorno está configurada, de lo contrario, el valor predeterminado es $HOME/.kube/config.
    • El LOCAL_KEY_PATH es la ruta al archivo de claves de tu cuenta de servicio.

    Cuando ejecutas este comando, se implementa el agente de Connect en tu clúster de usuarios. Cuando el agente de Connect se conecta a Google Cloud y tu clúster está registrado, se muestra un mensaje de éxito en la página.

  8. Haz clic en Configurar etiquetas o en Omitir si no estableciste ninguna etiqueta.

Opciones avanzadas de registro (solo línea de comandos)

Descargar el manifiesto del agente de Connect

Para descargar el manifiesto de instalación del agente de Connect sin implementarlo, por ejemplo, si deseas examinar o editar el manifiesto antes de la instalación, pasa la marca --manifest-output-file al comando gcloud container hub memberships register. Por ejemplo:

--manifest-output-file=[MANIFEST_FILE_PATH]

[MANIFEST_FILE_PATH] es la ruta de acceso del archivo local en la que deseas almacenar el manifiesto de instalación del agente de Connect.

El uso de esta opción no implementará el agente de Connect en el clúster. Para implementar el agente de Connect, aplica el manifiesto descargado de forma manual a tu clúster.

Usa un servidor proxy

Para configurar un servidor proxy, pasa la marca --proxy al comando gcloud container hub memberships register. Por ejemplo:

--proxy=[URL]

En el ejemplo anterior, [URL] es la dirección del proxy.

El agente de Connect solo admite proxies HTTP y HTTPS basados en CONNECT, y acepta direcciones IP y nombres de host. Asegúrate de especificar el protocolo correspondiente al tipo de proxy en la URL. Por ejemplo, para pasar un nombre de host HTTPS, haz lo siguiente:

--proxy=https://mycorpproxy.com:443

A menos que especifiques lo contrario, el agente de Connect usa el puerto 3128 para el proxy.

Si tu proxy requiere autorización, asegúrate de pasar tus credenciales, como se muestra a continuación:

--proxy=http://user:password@10.10.10.10:8888

Instala el agente de Connect en un clúster con nodos de Windows y Linux

El agente de Connect debe ejecutarse en un nodo de Linux. Si realizas la instalación en un clúster mixto con nodos de Linux y Windows, asegúrate de que el agente de Connect esté implementado en un nodo de Linux. Para ello, agrega un selector de nodos apropiado a la definición de implementación.

Ejecuta el siguiente comando para actualizar la implementación con el selector de nodos adecuado:

kubectl patch deployment \
$(kubectl get deployment -o=jsonpath='{.items[*].metadata.name}' -n gke-connect) \
-p '{"spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/os":"linux"}}}}}' -n gke-connect

Para validar que la actualización se ejecutó correctamente, ejecuta el siguiente comando:

kubectl get deployment -o=jsonpath='{.items[].spec.template.spec.nodeSelector}' -n gke-connect

El comando debería mostrar lo siguiente:

{"kubernetes.io/os":"linux"}

¿Qué sigue?