Administra clústeres desde la consola de Google Cloud

En este documento, se explica cómo hacer que los clústeres de Anthos alojados en Bare Metal estén disponibles para administrarlos en la consola de Google Cloud. Esto incluye la administración básica, como el acceso a clústeres y la visualización de sus cargas de trabajo, así como la habilitación de la administración del ciclo de vida de los clústeres para que puedas actualizarlos, actualizarlos y borrarlos.

Miembros de la flota y la consola

Todos los clústeres de Anthos alojados en Bare Metal 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 los clústeres de Anthos alojados en Bare Metal, se registra un clúster de usuario en una flota al momento de su creación:

  • Cuando creas un clúster con bmctl, debes especificar el proyecto host de tu flota en la sección gkeConnect del archivo de configuración del clúster. Los clústeres de Anthos alojados en Bare Metal usan esa información para registrar tu clúster en el proyecto de flota especificado.

  • Cuando creas un clúster de usuario en la consola, este se convierte automáticamente en miembro de la flota del proyecto seleccionado en la consola.

Los miembros de la flota fuera de Google Cloud, como los clústeres de Anthos alojados en Bare Metal, se muestran en la consola de tu proyecto host de flota, junto con otros clústeres de flota, como GKE en Google Cloud. La medida en la que puedes administrar clústeres de Anthos alojados en Bare Metal 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, también puedes actualizar, actualizar o borrar clústeres de usuarios mediante la consola. Para ello, un servicio llamado API de Anthos On-Prem debe administrar el clúster. En los clústeres de usuario creados en la consola, la administración del ciclo de vida de los clústeres se habilita en el momento de la creación del clúster, o bien puedes habilitar esta función más adelante en los clústeres de usuario creados con bmctl. Si esta función no está habilitada, solo puedes administrar el ciclo de vida del clúster con bmctl en tu estación de trabajo de administrador.

Visualiza clústeres registrados

Todos los clústeres de tu flota se muestran en las páginas Clústeres de Anthos y Clústeres de GKE en la consola. Esto te ofrece una descripción general de toda tu flota y, para los clústeres de Anthos alojados en Bare Metal, te permite ver qué clústeres administra la API de Anthos On-Prem.

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

  1. En la consola, ve a la página de clústeres de Anthos.

    Ir a la página Clústeres de Anthos

  2. Selecciona el proyecto de Google Cloud.

    • Si Anthos Bare Metal se muestra en la columna Tipo, la API de Anthos On-Prem administra el clúster.

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

Para ver más detalles sobre un clúster, los usuarios deben acceder y autenticarse en el clúster. Para hacerlo, debes hacer lo siguiente:

Configura la autenticación

Como se describió antes, todos los clústeres de flota aparecen en las listas de clústeres de GKE y Anthos 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 de los clústeres 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 que los usuarios accedan con su identidad de Google Cloud, 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 al clúster con tu identidad de Google, pero deberás configurar la autenticación para otros usuarios.

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

  • OpenID Connect (OIDC): Con esta opción, los usuarios pueden acceder a los 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 quieras 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 su token del portador para acceder. Para obtener más información, consulta Configura mediante un token del portador.

Otorga los roles obligatorios

Google Cloud IAM controla el acceso a la consola. 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 que los usuarios puedan acceder a la consola, como mínimo, debes otorgar las siguientes funciones:

    • roles/container.viewer. Esta función permite a los usuarios ver la página Clústeres de GKE y otros recursos de contenedores en la consola. Si deseas obtener más información 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. Esta función permite a los usuarios ver clústeres fuera de Google Cloud en la consola. Para obtener más información sobre los permisos incluidos en esta función o 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 brinda a los usuarios acceso de administrador a la API de Anthos 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

La API de Anthos On-Prem administra de forma automática los clústeres de usuario creados en la consola y te permite realizar tareas de administración del ciclo de vida de los clústeres en la consola. Si deseas habilitar esta función para los clústeres de usuario creados con bmctl, sigue los pasos que se indican en Configura un clúster de usuario para que lo administre la API de Anthos local. Cuando la administración del ciclo de vida del clúster está habilitada, puedes actualizar los clústeres desde la consola:

  • Actualizar clústeres de usuario
  • Agrega o quita grupos de nodos en clústeres de usuario
  • Borrar clústeres de usuario
.

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 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 creaste el clúster en la consola, la API de Anthos On-Prem agrega tu cuenta de usuario como administrador y crea políticas de RBAC adecuadas que te otorgan acceso de administrador completo al clúster.

CLI de gcloud

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

  1. Ejecuta los siguientes comandos para acceder con tu Cuenta de Google y actualizar los componentes:

    gcloud auth login
    gcloud components update
    
  2. 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=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 el clúster en su flota. En los clústeres de Anthos alojados en Bare Metal, 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 restringir el acceso, crea una función personalizada, por ejemplo: role/mynamespace/namespace-reader. El rol personalizado ya debe existir antes de que ejecute 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
    • PROJECT_ID: Es el ID del proyecto host de la flota.
    • KUBECONFIG_PATH: Es la ruta de acceso local del archivo en el que el kubeconfig que contiene una entrada para el clúster se almacena.
    • 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 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 Connect.

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

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 dirección de correo electrónico de otros usuarios que necesitan 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 autoadministrado (como un clúster independiente o de administrador), reemplaza KUBECONFIG por la ruta de acceso al archivo kubeconfig del clúster. Si el clúster es de usuario, reemplaza KUBECONFIG por la ruta de acceso al archivo kubeconfig del clúster de administrador.

Más información