Administra clústeres desde la consola de Google Cloud

En este documento, se explica cómo hacer que GKE en VMware esté disponible para la administración en la consola de Google Cloud. Esto incluye la administración básica, como poder acceder a los clústeres y ver sus cargas de trabajo, y cómo habilitar la administración del ciclo de vida del clúster para que puedas actualizar, actualizar y borrar clústeres.

Miembros de la flota y la consola

Todos los GKE en VMware deben ser miembros de una flota, una forma unificada de ver y administrar varios clústeres y sus cargas de trabajo. Cada flota de clústeres está asociada con un proyecto host de flota.

En GKE on VMware, se registra un clúster de administrador en una flota en el momento de la creación si especificas el proyecto host de la flota en la sección gkeConnect del archivo de configuración del clúster. GKE en VMware usa esa información para registrar tu clúster en el proyecto de flota especificado. Si el registro falló, puedes ejecutar gkectl update credentials register de nuevo para reintentarlo.

Ten en cuenta que, cuando intentes volver a intentar el registro, no será necesario que actualices la clave de la cuenta de servicio del registro de conexión. En otras palabras, puedes seguir usando tu cuenta de servicio original del registro de conexión. Para obtener más información sobre el comando, consulta Rota claves de cuentas de servicio.

En GKE on VMware, se registra un clúster de usuario en una flota en el momento de la creación:

  • Cuando creas un clúster de usuario con gkectl, debes especificar el proyecto host de la flota en la sección gkeConnect del archivo de configuración del clúster. GKE en VMware usa esa información para registrar tu clúster en el proyecto de flota especificado.

  • Cuando creas un clúster de usuario con una herramienta estándar (la consola, Google Cloud CLI o Terraform), este se convierte automáticamente en miembro de la flota en el proyecto que especifiques.

Los miembros de la flota fuera de Google Cloud, como GKE on VMware, se muestran en la consola del proyecto host de la flota, junto con otros clústeres de flota, como GKE en Google Cloud. La medida en que puedes administrar GKE en VMware desde la consola depende de lo siguiente:

Visualiza clústeres registrados

Todos los clústeres de tu flota se muestran en la página de descripción general de los clústeres de Google Kubernetes Engine en la consola. Esto te brinda una descripción general de toda tu flota y, para GKE en VMware, te permite ver qué clústeres administra la API de GKE On-Prem.

Para ver los clústeres de tu flota, haz lo siguiente:

  1. En la consola, ve a la página de descripción general de los clústeres de Google Kubernetes Engine.

    Ir a los clústeres de GKE

  2. Selecciona el proyecto de Google Cloud.

    • Si vm GKE on VMware se muestra en la columna Tipo, la API de GKE On-Prem administra el clúster.

    • Si se muestra Externo en la columna Tipo, la API de GKE On-Prem no administra el clúster.

    Lista de clústeres de GKE Enterprise

Para ver más detalles sobre un clúster, los usuarios deben acceder y autenticarse en él. Para ello, sigue estos pasos:

Configura la autenticación

Como se describió antes, todos los clústeres de flotas aparecen en las listas de clústeres de GKE y GKE Enterprise en la consola. Sin embargo, para ver más detalles, como los nodos y las cargas de trabajo (y realizar tareas de administración del ciclo de vida del clúster, si la función está habilitada), los usuarios deben acceder y autenticarse en el clúster. Para ello, los clústeres registrados deben configurarse con uno de los siguientes métodos de autenticación:

  • Identidad de Google: Esta opción permite a los usuarios acceder con su Google Cloud Identity, que es la dirección de correo electrónico asociada con tu cuenta de Google Cloud. Usa esta opción si los usuarios ya tienen acceso a Google Cloud con su identidad de Google. Si creaste el clúster en la consola, puedes acceder al clúster con tu identidad de Google, pero deberás configurar la autenticación para otros usuarios.

    El acceso con la identidad de Google es el enfoque más simple de autenticación en la consola, especialmente si pruebas GKE en VMware con una instalación mínima, por lo que describimos cómo configurar esto con más detalle a continuación en Configura la autenticación de identidad de Google.

  • OpenID Connect (OIDC): Esta opción permite a los usuarios acceder a clústeres desde la consola mediante su identidad desde un proveedor de identidad de OIDC de terceros, como Okta o Microsoft AD FS. Es posible que desees usar esta opción si tus usuarios tienen nombres de usuario, contraseñas y membresías de grupos de seguridad del proveedor. Puedes descubrir cómo configurar la autenticación de OIDC de terceros para los clústeres en las siguientes guías:

  • Token del portador: Si las soluciones anteriores que proporciona Google no son adecuadas para tu organización, puedes configurar la autenticación con una cuenta de servicio de Kubernetes y con el token del portador para acceder. Para obtener más detalles, consulta Realiza la configuración con un token del portador.

Otorga los roles necesarios

Identity and Access Management (IAM) controla el acceso a la consola. Estas funciones de IAM son necesarias sin importar el método de autenticación que elijas. Para administrar el ciclo de vida del clúster en la consola, debes otorgar algunos roles de IAM.

  • Para permitir que los usuarios accedan a la consola, como mínimo, debes otorgar los siguientes roles:

    • roles/container.viewer. Esta función permite a los usuarios ver la página Clústeres de GKE y otros recursos de contenedor en la consola. Si quieres obtener más información sobre los permisos incluidos en esta función o cómo otorgar una función con permisos de lectura o escritura, consulta Funciones de Kubernetes Engine en la documentación de IAM.

    • roles/gkehub.viewer. Esta función permite a los usuarios ver clústeres fuera de Google Cloud en la consola. Si quieres obtener detalles sobre los permisos incluidos en esta función o si quieres otorgar una función con permisos de lectura o escritura, consulta Funciones de GKE Hub en la documentación de IAM.

  • Para permitir que los usuarios administren el ciclo de vida del clúster en la consola, otorga el rol de IAM roles/gkeonprem.admin. La función roles/gkeonprem.admin otorga a los usuarios acceso de administrador a la API de GKE On-Prem, que la consola usa para administrar el ciclo de vida del clúster. Para obtener detalles sobre los permisos incluidos en esta función, consulta las funciones de GKE On-Prem en la documentación de IAM.

Con los siguientes comandos, se muestra cómo otorgar los roles mínimos necesarios para administrar el ciclo de vida del clúster en la consola:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/container.viewer

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/gkehub.viewer

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/gkeonprem.admin

Donde:

  • FLEET_HOST_PROJECT_ID es el proyecto host de la flota. Para los clústeres creados con gkectl, este es el proyecto que configuraste en la sección gkeConnect del archivo de configuración del clúster de usuario. Para los clústeres creados en la consola, este es el proyecto que elegiste cuando se creó el clúster.

  • MEMBER es la dirección de correo electrónico del usuario en el formato user:emailID, por ejemplo: user:alice@example.com

Habilita la administración del ciclo de vida de los clústeres en la consola

Los clústeres de usuario creados con herramientas estándar (la consola, gcloud CLI o Terraform) se inscriben automáticamente en la API de GKE On-Prem y te permiten realizar tareas de administración del ciclo de vida del clúster en la consola. Si deseas habilitar esta función para los clústeres de usuario creados con gkectl, sigue los pasos que se indican en Configura un clúster de usuario para que lo administre la API de GKE On-Prem. Cuando la administración del ciclo de vida del clúster está habilitada, puedes realizar las siguientes tareas desde la consola:

Configura la autenticación de identidad de Google

Para permitir que los usuarios accedan al clúster con su identidad de Google, debes configurar lo siguiente:

Configura la autorización de RBAC

El servidor de la API de Kubernetes de cada clúster debe poder autorizar las solicitudes que provienen de la consola. Para configurar la autorización, debes configurar las políticas de control de acceso basado en funciones (RBAC) de Kubernetes en cada clúster.

Si usaste una herramienta estándar para crear el clúster de usuario, es posible que ya se te hayan otorgado las políticas de RBAC adecuadas que te otorgan acceso de administrador completo al clúster. La API de GKE On-Prem agrega tu Cuenta de Google de forma automática como administrador en los siguientes casos:

  • Creaste el clúster de usuario en la consola.

  • Creaste el clúster de usuario con gcloud CLI y se especificó tu Cuenta de Google en la marca --admin-users del comando para crear clústeres.

  • Creaste el clúster de usuario mediante Terraform y se especificó tu Cuenta de Google en el campo authorization.admin_users.username.

Los clústeres de usuario creados con gkectl no te otorgan las políticas de RBAC para administrar el clúster con la consola. Debes agregarte después de crear el clúster. Sin importar qué herramienta hayas usado para crear el clúster, puedes agregar a otras personas como administradores después de crearlo.

Puedes usar cualquiera de las siguientes formas para otorgar acceso de administrador al clúster. Se proporcionan dos comandos gcloud diferentes.

  • El comando gcloud ... generate-gateway-rbac debe ejecutarse en la estación de trabajo de administrador porque requiere acceso al kubeconfig y al contexto del clúster (que, por lo general, solo se encuentran en la estación de trabajo de administrador). El comando generate-gateway-rbac te permite personalizar las políticas de RBAC, pero las direcciones de correo electrónico del usuario no se mostrarán como administradores en la sección Detalles del clúster en la consola.

  • El comando gcloud ... update se puede ejecutar en la estación de trabajo de administrador o en cualquier computadora que tenga acceso a la API de GKE On-Prem.

generate-gateway-rbac

  1. Conéctate a la estación de trabajo de administrador.

  2. Ejecuta el siguiente comando para actualizar los componentes:

    gcloud components update
    
  3. Genera y aplica las políticas de RBAC a tu clúster para los usuarios y las cuentas de servicio:

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=MEMBERSHIP_NAME \
        --role=ROLE \
        --users=USERS \
        --project=FLEET_HOST_PROJECT_ID \
        --kubeconfig=KUBECONFIG_PATH \
        --context=KUBECONFIG_CONTEXT \
        --apply
    

    Reemplaza lo siguiente:

    • MEMBERSHIP_NAME: Es el nombre que se usa para representar de forma única al clúster en su flota. En GKE on VMware, el nombre de la membresía y el nombre del clúster son los mismos.
    • ROLE: Es la función de Kubernetes que deseas otorgar a los usuarios en el clúster. Para otorgar a los usuarios acceso completo a todos los recursos del clúster en todos los espacios de nombres, especifica clusterrole/cluster-admin. Para proporcionar acceso de solo lectura, especifica clusterrole/view. También puedes crear una función personalizada, por ejemplo: role/mynamespace/namespace-reader. El rol personalizado ya debe existir antes de ejecutar el comando.
    • USERS: Son las direcciones de correo electrónico de los usuarios (cuentas de usuario o cuentas de servicio) a los que deseas otorgar los permisos, como una lista separada por comas. Por ejemplo: --users=foo@example.com,test-acct@test-project.iam.gserviceaccount.com
    • FLEET_HOST_PROJECT_ID: El ID del proyecto host de la flota.
    • KUBECONFIG_PATH: Es la ruta de acceso local en la que está almacenado tu kubeconfig que contiene una entrada para el clúster.
    • KUBECONFIG_CONTEXT: Es el contexto del clúster como aparece en el archivo kubeconfig. Puedes obtener el contexto actual de la línea de comandos ejecutando kubectl config current-context. Independientemente de si usas o no el contexto actual, asegúrate de que funcione para acceder al clúster mediante la ejecución de un comando simple, como el siguiente:

      kubectl get namespaces \
        --kubeconfig=KUBECONFIG_PATH \
        --context=KUBECONFIG_CONTEXT
      

    Después de ejecutar gcloud container fleet memberships generate-gateway-rbac, verás algo similar a lo siguiente al final del resultado, que se trunca para facilitar la lectura:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    Applying the generate RBAC policy to cluster with kubeconfig: /usr/local/google/home/foo/.kube/config, context: kind-kind
    Writing RBAC policy for user: foo@example.com to cluster.
    Successfully applied the RBAC policy to cluster.
    

    Este es el contexto para acceder al clúster a través de la puerta de enlace de Connect.

    Para conocer más detalles sobre el comando generate-gateway-rbac, consulta la guía de referencia de la CLI de gcloud.

update

  1. Ejecuta el siguiente comando para actualizar los componentes:

    gcloud components update
    
  2. Por cada usuario al que se le debe otorgar el rol clusterrole/cluster-admin, incluye la marca --admin-users y ejecuta el siguiente comando. No puedes especificar varios usuarios en una sola marca. Asegúrate de incluir tu Cuenta de Google en el comando, ya que este reemplaza la lista de otorgamientos por los usuarios que especifiques en el comando.

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --admin-users YOUR_GOOGLE_ACCOUNT \
      --admin-users ADMIN_GOOGLE_ACCOUNT_1 \
    

Además de otorgar la función clusterrole/cluster-admin de Kubernetes, el comando otorga las políticas de RBAC que los usuarios necesitan para acceder al clúster a través de la puerta de enlace de conexión.

Console

Para aplicar las políticas de RBAC a los usuarios, sigue estos pasos en la consola:

  1. En la consola, ve a la página de descripción general de los clústeres de Google Kubernetes Engine.

    Ir a los clústeres de GKE

  2. Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.

  3. En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Más detalles en el panel Detalles.

  4. En la sección Autorización, haz clic en el campo Usuarios administradores del clúster y, luego, ingresa la dirección de correo electrónico de cada usuario.

  5. Cuando hayas terminado de agregar usuarios, haz clic en Listo.

Más información