Administra 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 alojados en Bare Metal estén disponibles para su administración en la consola de Google Cloud. Las capacidades de administración de clústeres incluyen poder acceder a los clústeres, ver las cargas de trabajo, actualizar, actualizar y borrar 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 administrar varios clústeres y sus cargas de trabajo. Cada flota de clústeres está asociada con un proyecto 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 un miembro de la flota del proyecto especificado.

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

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

  • Si configuraste la autenticación, puedes acceder a tus clústeres y ver sus cargas de trabajo y otros detalles.

  • Si habilitaste la administración del ciclo de vida del clúster para el clúster, puedes actualizar los clústeres de administrador y de usuarios mediante la consola, que también te permite actualizar y borrar clústeres de usuarios. Si esta función no está habilitada, solo puedes administrar el ciclo de vida del clúster con bmctl en la estación de trabajo de administrador.

Visualiza clústeres registrados

Todos tus clústeres se muestran en la página Clústeres de GKE en la consola. Esto te brinda una descripción general de toda tu flota y, en el caso de Google Distributed Cloud, 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 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 Bare metal aparece en la columna Tipo, la API de GKE On-Prem administra el clúster. Ten en cuenta que solo los clústeres de administrador y de usuario se pueden administrar con la API de GKE On-Prem.

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

Para ver más detalles sobre un clúster, debes acceder y autenticarte en él. Para hacerlo, sigue estos pasos:

Configura la autenticación

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

  • Google Identity: Esta opción te permite acceder con tu Google Cloud Identity, que es la dirección de correo electrónico asociada a 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 a él con tu identidad de Google, pero deberás configurar la autenticación para otros usuarios.

    Acceder con la identidad de Google es el enfoque más simple de autenticación en la consola, por lo que describimos cómo configurar esto con más detalle en Configura la autenticación de identidad de Google.

  • OpenID Connect (OIDC): Esta opción te permite acceder a los clústeres desde la consola mediante la identidad de un proveedor de identidad de OIDC de terceros, como Okta o Microsoft AD FS. Te recomendamos usar esta opción si tus usuarios tienen nombres de usuario, contraseñas y membresías de grupos de seguridad existentes de tu proveedor. Puedes descubrir cómo configurar la autenticación de OIDC de terceros para tus 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 su token del portador para acceder. Para obtener más detalles, consulta Cómo realizar la configuración con un token del portador.

Otorga los roles necesarios

El acceso a la consola se controla con Identity and Access Management (IAM). Para administrar el ciclo de vida del clúster en la consola, debes otorgar algunas funciones de IAM a los usuarios que no son propietarios del proyecto:

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

    • roles/container.viewer: Este rol permite a los usuarios ver la página de clústeres de GKE y otros recursos de contenedores en la consola. Para obtener más detalles sobre los permisos incluidos en esta función o para otorgar una función con permisos de lectura y escritura, consulta Funciones de Kubernetes Engine en la documentación de IAM.

    • roles/gkehub.viewer: Este rol permite a los usuarios ver clústeres fuera de Google Cloud en la consola. Para obtener detalles sobre los permisos incluidos en esta función o para otorgar una función con permisos de lectura y 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 la función 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 Funciones de GKE On-Prem en la documentación de IAM.

En los siguientes comandos, se muestra cómo otorgar las funciones mínimas necesarias para administrar 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 host de la flota. Para los clústeres creados con bmctl, 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 administrador y de usuario creados con herramientas estándar (la consola, gcloud CLI o Terraform) se inscriben de forma automática en la API de GKE On-Prem, que te permite realizar tareas de administració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 administradores con bmctl, se inscriben en la API de GKE On-Prem de forma predeterminada. Si necesitas inscribir un clúster en la API de GKE On-Prem, sigue los pasos que se indican en Configura un clúster para que lo administre la API de GKE On-Prem.

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:

  • Los usuarios necesitan funciones específicas de Identity and Access Management (IAM) para poder ver los clústeres y, además, interactuar con ellos en la consola en la página Clústeres de GKE.

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

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 para los usuarios en cada clúster. Tu Cuenta de Google se agrega como administrador con acceso completo a un clúster de usuario en los siguientes casos:

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

  • Creaste el clúster de usuario mediante gcloud CLI y se especificó tu Cuenta de Google en la marca --admin-users en el comando cluster create.

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

  • Creaste el clúster de usuario con bmctl y configuraste tu Cuenta de Google en clusterSecurity.authorization.clusterAdmin.gcpAccounts.

Puedes agregar a otras personas como administradores después de crear el clúster. 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 tu estación de trabajo de administrador porque requiere acceso al kubeconfig y al contexto del clúster (que, por lo general, solo están 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.

Ten en cuenta que si creaste un clúster de administrador en la consola de Google Cloud, se te otorgará acceso de solo lectura al clúster. Si deseas que se te otorgue la función clusterrole/cluster-admin, alguien con esa función deberá agregarte con el comando gcloud ... generate-gateway-rbac.

generate-gateway-rbac

Para aplicar las políticas de RBAC 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
    

    Reemplaza lo siguiente:

    • MEMBERSHIP_NAME: Es el nombre que se usa para representar de forma única al clúster de su flota. En Google Distributed Cloud, el nombre de la membresía y el nombre del clúster son los mismos.
    • ROLE: Es el rol 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. Para restringir el acceso, crea 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=222larabrown@gmail.com,test-acct@test-project.iam.gserviceaccount.com
    • PROJECT_ID: El ID del proyecto host de la flota.
    • KUBECONFIG_PATH: Es la ruta de acceso local de tu archivo 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. Ya sea que uses el contexto actual o no, asegúrate de que funcione para acceder al clúster mediante la ejecución de 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ás algo como 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 conexión.

    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. Para cada usuario al que se le debe otorgar la función 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 especificas en el comando.

    gcloud container bare-metal 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 a las políticas de RBAC que los usuarios necesitan para acceder al clúster a través de la puerta de enlace de Connect.

bmctl

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

  1. Agrega la sección clusterSecurity.authorization al archivo de configuración del clúster. Especifica tu dirección de correo electrónico 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
    

    Realiza los siguientes cambios:

    • Reemplaza CLUSTER_NAME por el nombre del clúster que deseas actualizar.
    • Si el clúster es de autoadministración (como de administrador o independiente), reemplaza KUBECONFIG por la ruta de acceso al archivo kubeconfig del clúster. Si el clúster es un clúster de usuario, reemplaza KUBECONFIG por la ruta de acceso al archivo kubeconfig del clúster admin.

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 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 Ver detalles en el panel Detalles.

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

  5. Cuando termines de agregar usuarios, haz clic en Listo.

Más información