Administra clústeres desde la consola de Google Cloud

En este documento, se explica cómo hacer que GKE en Bare Metal 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 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 GKE en Bare Metal, un clúster de usuario se registra en una flota en el momento de la creación:

  • Cuando creas un clúster con bmctl, debes especificar el proyecto host de la flota en la sección gkeConnect del archivo de configuración del clúster. GKE en Bare Metal usa 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 en el proyecto seleccionado en la consola.

Los miembros de la flota fuera de Google Cloud, como GKE en Bare Metal, 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 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 usuario con la consola. Para ello, el clúster debe ser administrado por un servicio llamado API de GKE On-Prem. Para 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 puedes habilitar esta función más adelante para 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 la estación de trabajo de administrador.

Visualiza clústeres registrados

Todos los clústeres de tu flota 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, para GKE en Bare Metal, 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 Bare Metal 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.

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

Configura la autenticación

Como se describió antes, todos los clústeres de flotas 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, los clústeres registrados deben configurarse con uno de los siguientes métodos de autenticación:

  • Identidad de Google: Esta opción te permite acceder con tu 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, 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 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

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 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 deseas obtener más información sobre los permisos incluidos en esta función o si deseas 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. Si quieres obtener detalles sobre los permisos incluidos en esta función o si quieres 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 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 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 GKE On-Prem administra automáticamente los clústeres de usuario creados en la consola, que 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 bmctl, sigue los pasos que se indican en Configura un clúster de usuario para que lo administre la API de GKE On-Prem. Cuando está habilitada la administración del ciclo de vida de los clústeres, puedes actualizarlos 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:

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

  • Se deben agregar los usuarios 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 cuando se usa 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 en cada clúster. Si creaste el clúster en la consola, la API de GKE 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.

gcloud CLI

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 al clúster en su flota. En GKE 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 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
    • 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. 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 conexión.

    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 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 de autoadministración (como un clúster 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.

Más información