Gestionar clústeres desde la consola de Google Cloud

En este documento se explica cómo hacer que los clústeres creados con el software de Google Distributed Cloud para VMware estén disponibles para gestionarse en la Google Cloud consola. Esto incluye la gestión básica, como poder iniciar sesión en los clústeres y ver sus cargas de trabajo, así como habilitar la gestión del ciclo de vida de los clústeres para poder actualizarlos, modificarlos y eliminarlos.

Miembros de la flota y la consola

Todos los clústeres de Google Distributed Cloud deben ser miembros de una flota, una forma unificada de ver y gestionar varios clústeres y sus cargas de trabajo. Cada flota de clústeres está asociada a un proyecto de host de flota.

En Google Distributed Cloud, un clúster de administrador se registra en una flota en el momento de la creación. Para ello, debe especificar el proyecto host de la flota en la sección gkeConnect del archivo de configuración del clúster. Google Distributed Cloud usa esa información para registrar tu clúster en el proyecto de flota especificado. Si el registro ha fallado, puedes volver a intentarlo ejecutando gkectl update credentials register.

Ten en cuenta que, al volver a intentar el registro, no es necesario que actualices la clave de la cuenta de servicio connect-register. Es decir, puedes seguir usando tu cuenta original del servicio de conexión y registro. Para obtener más información sobre el comando, consulta Rotar claves de cuentas de servicio.

En Google Distributed Cloud, un clúster de usuarios se registra en una flota en el momento de la creación:

  • Cuando creas un clúster de usuarios con gkectl, especificas tu proyecto host de la flota en la sección gkeConnect del archivo de configuración del clúster. Google Distributed Cloud 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, la CLI de Google Cloud o Terraform), el clúster se convierte automáticamente en miembro de una flota en el proyecto que especifiques.

Los miembros de la flota que no están en Google Cloud , como Google Distributed Cloud, se muestran en la consola de tu proyecto host de la flota, junto con otros clústeres de la flota, como GKE en Google Cloud. El grado en el que puedes gestionar Google Distributed Cloud desde la consola depende de lo siguiente:

  • Si has configurado la autenticación, puedes iniciar sesión en tus clústeres y ver sus cargas de trabajo y otros detalles.

  • Si has habilitado la gestión del ciclo de vida del clúster en el clúster, también puedes actualizar o eliminar clústeres de usuario mediante la consola. Si esta función no está habilitada, solo puedes gestionar el ciclo de vida del clúster mediante gkectl en tu estación de trabajo de administrador.

Ver clústeres registrados

Todos tus clústeres de flota se muestran en la página Descripción general de los clústeres de Google Kubernetes Engine de la consola. De esta forma, obtendrás una vista general de toda tu flota y, en el caso de Google Distributed Cloud, podrás ver qué clústeres gestiona la API de GKE On-Prem.

Para ver tus clústeres de flota, sigue estos pasos:

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

    Ir a clústeres de GKE

  2. Selecciona el Google Cloud proyecto.

    • Si se muestra vm Google Distributed Cloud en la columna Tipo, el clúster está gestionado por la API GKE On-Prem.

    • Si se muestra External en la columna Type, significa que el clúster no está gestionado por la API de GKE On-Prem.

Para ver más detalles sobre un clúster, los usuarios deben iniciar sesión y autenticarse en él. Para ello, debes hacer lo siguiente:

Configurar la autenticación

Como se ha descrito anteriormente, todos los clústeres de la flota aparecen en las listas de clústeres de GKE de la consola. Sin embargo, para ver más detalles, como nodos y cargas de trabajo, y para realizar tareas de gestión del ciclo de vida del clúster (si la función está habilitada), los usuarios deben iniciar sesión 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 iniciar sesión con su identidad deGoogle Cloud , que es la dirección de correo asociada a su cuenta deGoogle Cloud . Utiliza esta opción si los usuarios ya tienen acceso aGoogle Cloud con su identidad de Google. Si has creado el clúster en la consola, puedes iniciar sesión en él con tu identidad de Google, pero tendrás que configurar la autenticación para otros usuarios.

    Iniciar sesión con la identidad de Google es la forma más sencilla de autenticarse en la consola, sobre todo si estás probando Google Distributed Cloud con una instalación mínima. Por eso, hemos descrito cómo configurarlo con más detalle en la sección Configurar la autenticación de identidad de Google.

  • OpenID Connect (OIDC): esta opción permite a los usuarios iniciar sesión en clústeres desde la consola con su identidad de un proveedor de identidades OIDC de terceros, como Okta o Microsoft AD FS. Te recomendamos que uses esta opción si tus usuarios ya tienen nombres de usuario, contraseñas y pertenencias a grupos de seguridad de tu proveedor. Puedes consultar cómo configurar la autenticación OIDC de terceros para tus clústeres en las siguientes guías:

  • Token de portador: si las soluciones proporcionadas por Google anteriores no son adecuadas para tu organización, puedes configurar la autenticación mediante una cuenta de servicio de Kubernetes y usar su token de portador para iniciar sesión. Para obtener más información, consulta el artículo Configurar la autenticación mediante un token de portador.

Conceder los roles necesarios

El acceso a la consola se controla mediante la gestión de identidades y accesos (IAM). Estos roles de gestión de identidades y accesos son obligatorios independientemente del método de autenticación que elijas. Para gestionar el ciclo de vida del clúster en la consola, debes asignar algunos roles de gestión de identidades y accesos.

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

    • roles/container.viewer. Este rol permite a los usuarios ver la página Clústeres de GKE y otros recursos de contenedores en la consola. Para obtener información sobre los permisos incluidos en este rol o para conceder un rol con permisos de lectura/escritura, consulta Roles de Kubernetes Engine en la documentación de gestión de identidades y accesos.

    • roles/gkehub.viewer. Este rol permite a los usuarios ver clústeres fuera de Google Cloud en la consola. Para obtener información sobre los permisos incluidos en este rol o para conceder un rol con permisos de lectura y escritura, consulta Roles de GKE Hub en la documentación de IAM.

  • Para permitir que los usuarios gestionen el ciclo de vida del clúster en la consola, asigna el roles/gkeonprem.admin rol de gestión de identidades y accesos. El rol roles/gkeonprem.admin proporciona a los usuarios acceso de administrador a la API GKE On-Prem, que la consola usa para gestionar el ciclo de vida del clúster. Para obtener información sobre los permisos incluidos en este rol, consulta Roles de GKE On-prem en la documentación de gestión de identidades y accesos.

Los siguientes comandos muestran cómo conceder los roles mínimos necesarios para gestionar 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 del host de la flota. En el caso de los clústeres creados con gkectl, este es el proyecto que has configurado en la sección gkeConnect del archivo de configuración del clúster de usuarios. En el caso de los clústeres creados en la consola, se trata del proyecto que elegiste al crear el clúster.

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

Habilitar la gestión del ciclo de vida del clúster en la consola

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

Configurar la autenticación de identidad de Google

Para permitir que los usuarios inicien sesión en el clúster con su identidad de Google, debes configurar lo siguiente:

Configurar la autorización RBAC

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

Si has usado una herramienta estándar para crear el clúster de usuarios, es posible que ya se te hayan concedido las políticas de control de acceso basado en roles (RBAC) adecuadas que te otorgan acceso administrativo completo al clúster. La API GKE On-Prem añade automáticamente tu cuenta de Google como administrador en los siguientes casos:

  • Has creado el clúster de usuarios en la consola.

  • Has creado el clúster de usuario con la CLI de gcloud y tu cuenta de Google se ha especificado en la marca --admin-users del comando de creación del clúster.

  • Has creado el clúster de usuarios con Terraform y tu cuenta de Google se ha especificado en el campo authorization.admin_users.username.

Los clústeres de usuarios creados con gkectl no te conceden las políticas de RBAC para administrar el clúster mediante la consola. Debes añadirte después de crear el clúster. Independientemente de la herramienta que hayas usado para crear el clúster, puedes añadir a otros usuarios como administradores después de crearlo.

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

  • El comando gcloud ... generate-gateway-rbac debe ejecutarse en tu estación de trabajo de administrador, ya que requiere acceso al kubeconfig y al contexto del clúster (que normalmente solo están en tu 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 de los usuarios no se mostrarán como administradores en la sección Detalles del clúster de la consola.

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

generate-gateway-rbac

  1. Conéctate a tu 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 usuarios y 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
    

    Haz los cambios siguientes:

    • MEMBERSHIP_NAME: el nombre que se usa para representar de forma única el clúster en su flota. En Google Distributed Cloud, el nombre del grupo de miembros y el nombre del clúster son los mismos.
    • ROLE: el rol de Kubernetes que quieres conceder a los usuarios del clúster. Para conceder 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 un rol personalizado, como role/mynamespace/namespace-reader. El rol personalizado ya debe existir antes de ejecutar el comando.
    • USERS: las direcciones de correo de los usuarios (cuentas de usuario o cuentas de servicio) a los que quieres conceder los permisos, en forma de 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: la ruta local en la que se almacena tu archivo kubeconfig, que contiene una entrada para el clúster.
    • KUBECONFIG_CONTEXT: el contexto del clúster tal y como aparece en el archivo kubeconfig. Puedes obtener el contexto actual desde la línea de comandos ejecutando kubectl config current-context. Tanto si usas el contexto actual como si no, asegúrate de que funciona para acceder al clúster ejecutando un comando sencillo como el siguiente:

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

    Después de ejecutar gcloud container fleet memberships generate-gateway-rbac, verá algo parecido a lo siguiente al final del resultado, que se ha truncado para que sea más fácil de leer:

    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 pasarela de Connect.

    Para obtener más información sobre el comando generate-gateway-rbac, consulta la guía de referencia de gcloud CLI.

update

  1. Ejecuta el siguiente comando para actualizar los componentes:

    gcloud components update
    
  2. Por cada usuario al que se le deba conceder el rol clusterrole/cluster-admin, incluye la marca --admin-users y ejecuta el siguiente comando. No puedes especificar varios usuarios en una sola denuncia. No olvides incluir tu cuenta de Google en el comando, ya que este sobrescribe la lista de concesiones con los usuarios que especifiques.

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

Además de conceder el rol clusterrole/cluster-admin de Kubernetes, el comando concede a los usuarios las políticas de control de acceso basado en roles que necesitan para acceder al clúster a través de la puerta de enlace Connect.

Consola

Para aplicar las políticas de control de acceso basado en roles a los usuarios, sigue estos pasos en la consola:

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

    Ir a clústeres de GKE

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

  3. En la lista de clústeres, haga clic en el nombre del clúster para ver sus detalles.

  4. En la sección Autorización, haz clic en el botón de edición Usuarios administradores.

  5. En el panel Editar autorización, introduce la dirección de correo del usuario que quieras añadir como administrador del clúster. Para añadir más usuarios administradores, haz clic en Añadir usuario administrador.

  6. Cuando hayas terminado de añadir usuarios, haz clic en Guardar cambios.

Más información