Gestionar clústeres desde la consola de Google Cloud

En este documento se explica cómo hacer que los clústeres de administrador y de usuario creados con el software de Google Distributed Cloud en hardware desnudo estén disponibles para gestionarse en la consolaGoogle Cloud . Las funciones de gestión de clústeres incluyen la posibilidad de iniciar sesión en clústeres, ver cargas de trabajo, actualizar y eliminar clústeres.

Miembros de la flota y la consola

Todos los clústeres 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.

Todos los clústeres se registran en una flota en el momento de la creación:

  • Cuando creas un clúster con bmctl, especificas el proyecto host de tu flota en la sección gkeConnect del archivo de configuración del clúster. El clúster se convierte en miembro de la flota del proyecto especificado.

  • Cuando creas un clúster de administrador o de usuario con un cliente de API de GKE On-Prem estándar (la consola, la CLI de Google Cloud o Terraform), el clúster se convierte en un miembro de la flota en el proyecto especificado.

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 clústeres de hardware desnudo 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 para el clúster, puedes actualizar los clústeres de administrador y de usuario mediante la consola, así como usar la consola para actualizar y eliminar clústeres de usuario. Si esta función no está habilitada, solo podrás gestionar el ciclo de vida del clúster mediante bmctl en tu estación de trabajo de administrador.

Ver clústeres registrados

Todos tus clústeres se muestran en la página Clústeres de GKE 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 Bare metal en la columna Type, el clúster se gestiona mediante la API GKE On-Prem. Ten en cuenta que la API de GKE On-Prem solo puede gestionar clústeres de administrador y de usuario.

    • 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, debes iniciar sesión y autenticarte en él. Para ello, debes seguir estos pasos:

Configurar la autenticación

Como se ha descrito anteriormente, todos los clústeres aparecen en la página 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), debes iniciar sesión y autenticarte en el clúster. Para ello, tus clústeres deben configurarse con uno de los siguientes métodos de autenticación:

  • Identidad de Google: esta opción te permite iniciar sesión con tu identidad deGoogle Cloud , que es la dirección de correo asociada a tu 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, por lo que hemos descrito cómo configurarla con más detalle en Configurar la autenticación de identidad de Google.

  • OpenID Connect (OIDC): esta opción te permite 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 Gestión de Identidades y Accesos (IAM). Para gestionar el ciclo de vida del clúster en la consola, debes conceder algunos roles de IAM a los usuarios que no sean propietarios del proyecto:

  • 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 y 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 PROJECT_ID \
    --member=MEMBER \
    --role=roles/container.viewer

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

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

donde:

  • PROJECT_ID es el proyecto del host de la flota. En el caso de los clústeres creados con bmctl, 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 administrador y de usuario creados con herramientas estándar (la consola, la CLI de gcloud o Terraform) se registran automáticamente en la API de GKE On-Prem, que te permite realizar tareas de gestión del ciclo de vida de los clústeres en la consola. En Google Distributed Cloud 1.16 y versiones posteriores, cuando creas clústeres de usuarios y de administrador con bmctl, se registran en la API de GKE On-Prem de forma predeterminada. Si necesitas registrar un clúster en la API GKE On-Prem, sigue los pasos que se indican en Configurar un clúster para que lo gestione la API GKE On-Prem.

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:

  • Los usuarios necesitan roles específicos de Gestión de Identidades y Accesos (IAM) para poder ver e interactuar con los clústeres en la consola, en la página Clústeres de GKE.

  • Los usuarios deben añadirse a las políticas de control de acceso basado en roles (RBAC) de Kubernetes que necesita la pasarela de conexión para acceder al servidor de la API de Kubernetes del clúster mediante el agente de conexión.

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 políticas de control de acceso basado en roles (RBAC) de Kubernetes para los usuarios de cada clúster. Tu cuenta de Google se añade como administrador con acceso completo a un clúster de usuarios 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.

  • Has creado el clúster de usuarios con bmctl y has configurado tu cuenta de Google en clusterSecurity.authorization.clusterAdmin.gcpAccounts.

Puedes añadir otros administradores después de crear el clúster. Puedes 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.

Ten en cuenta que, si has creado un clúster de administrador en la Google Cloud consola, tendrás acceso de solo lectura al clúster. Si quieres obtener el rol de clusterrole/cluster-admin, alguien con ese rol tendrá que añadirte con el comando gcloud ... generate-gateway-rbac.

generate-gateway-rbac

Para aplicar las políticas de control de acceso basado en roles a los usuarios, sigue estos pasos en tu estación de trabajo de administrador:

  1. Ejecuta el siguiente comando para actualizar los componentes (si es necesario):

    gcloud components update
    
  2. 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=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 asignar 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. Para restringir el acceso, crea un rol personalizado, por ejemplo, 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=222larabrown@gmail.com,test-acct@test-project.iam.gserviceaccount.com.
    • PROJECT_ID: el ID del proyecto host de la flota.
    • KUBECONFIG_PATH: la ruta local de 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 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 marca. 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 bare-metal 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 RBAC que necesitan para acceder al clúster a través de la puerta de enlace Connect.

bmctl

Para aplicar las políticas de control de acceso basado en roles a los usuarios, sigue estos pasos en tu estación de trabajo de administrador:

  1. Añade la sección clusterSecurity.authorization al archivo de configuración del clúster. Especifica tu dirección de correo y la de otros usuarios que necesiten administrar el clúster. Por ejemplo:

    ...
    clusterSecurity:
      authorization:
        clusterAdmin:
          gcpAccounts: [alex@example.com,hao@example.com,sasha@example.com]
    ...
    
  2. Actualiza el clúster:

    bmctl update cluster \
        -c CLUSTER_NAME \
        --kubeconfig=KUBECONFIG
    

    Haz los siguientes cambios:

    • Sustituye CLUSTER_NAME por el nombre del clúster que quieras actualizar.
    • Si el clúster es un clúster autogestionado (como un clúster de administrador o independiente), sustituye KUBECONFIG por la ruta al archivo kubeconfig del clúster. Si el clúster es un clúster de usuarios, sustituye KUBECONFIG por la ruta al archivo kubeconfig del clúster de administrador.

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 y, a continuación, en Ver detalles en el panel Detalles.

  4. En la sección Autorización, haz clic en el campo Usuarios administradores e introduce la dirección de correo de cada usuario.

  5. Cuando hayas terminado de añadir usuarios, haz clic en Hecho.

Más información