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 la administración en la consola de Google Cloud. Esto incluye la administración básica, como la capacidad de acceder a los clústeres y ver sus cargas de trabajo, además de cómo habilitar 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 a un proyecto host de flota.

En los clústeres de Anthos alojados 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, especificas el proyecto host de la 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 un miembro de la flota en el 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 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 los 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 usuario mediante la consola. Para ello, el clúster debe ser administrado por un servicio llamado API de Anthos 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 las páginas Clústeres de Anthos y Clústeres de GKE en la consola. Esto te brinda una descripción general de tu flota completa y, para los clústeres de Anthos alojados en Bare Metal, te permite ver qué clústeres administra la API de Anthos local.

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

  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 se muestra Anthos Bare Metal 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 él. Para ello, sigue estos pasos:

Configura la autenticación

Como se describió antes, todos los clústeres de flotas aparecen en las listas de clústeres de GKE y Anthos en la consola. Sin embargo, para ver más detalles como nodos y cargas de trabajo (y realizar tareas de administración del ciclo de vida del clúster 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 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.

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

  • OpenID Connect (OIDC): Esta opción permite a los usuarios 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. Se recomienda usar esta opción si los usuarios tienen nombres de usuario, contraseñas y membresías de grupos de seguridad 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 el token del portador para acceder. Para obtener más detalles, consulta Realiza la configuración con un token del portador.

Otorgar 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 las siguientes funciones:

    • roles/container.viewer. Esta función permite a los usuarios ver la página de clústeres de GKE y otros recursos de contenedores 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 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 las 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 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 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 del clúster en la consola

La API de Anthos On-Prem administra de forma automática los clústeres de usuario creados en la consola, que te permiten 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 mediante 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 los 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 mediante 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 las páginas de la lista de clústeres de GKE y la lista de clústeres de Anthos.

  • Se debe agregar a los usuarios a las políticas de control de acceso basado en roles (RBAC) de Kubernetes que la puerta de enlace de Connect necesita para acceder al servidor de la API de Kubernetes del clúster a través del 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 establecer 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 las políticas de RBAC correspondientes 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 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 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: 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 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 administración automática (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 un clúster de usuario, reemplaza KUBECONFIG por la ruta de acceso al archivo kubeconfig del clúster admin.

Más información