Autenticación de clúster de Workload Identity

En este documento se describe cómo configurar y usar la autenticación de clúster de Workload Identity para Google Distributed Cloud (solo software) en bare metal. En lugar de usar claves de cuentas de servicio, la autenticación de clústeres de Workload Identity usa tokens de corta duración y la federación de identidades de cargas de trabajo para crear y proteger tus clústeres. Las credenciales de corta duración de la cuenta de servicio tienen el formato de tokens de acceso de OAuth 2.0. Los tokens de acceso caducan al cabo de una hora de forma predeterminada, excepto los tokens de extracción de imágenes, que caducan al cabo de 12 horas.

La autenticación de clúster de Workload Identity solo está disponible al crear clústeres con la versión 1.30 o posterior. No puedes configurar un clúster para que use la autenticación de clúster de Workload Identity durante una actualización.

Por el contrario, el modo con clave, el método estándar para crear y proteger clústeres, utiliza claves de cuenta de servicio descargadas. Cuando creas un clúster autogestionado (administrador, híbrido o independiente), debes especificar la ruta a las claves descargadas. Las claves se almacenan como secretos en el clúster y en cualquier clúster de usuario gestionado. De forma predeterminada, las claves de cuentas de servicio no caducan y suponen un riesgo para la seguridad si no se gestionan correctamente.

La autenticación de clúster de Workload Identity ofrece dos ventajas principales con respecto al uso de claves de cuenta de servicio:

  • Seguridad mejorada: las claves de las cuentas de servicio suponen un riesgo para la seguridad si no se gestionan adecuadamente. Los tokens de OAuth 2.0 y la federación de identidades de cargas de trabajo se consideran alternativas recomendadas a las claves de cuentas de servicio. Para obtener más información sobre los tokens de cuentas de servicio, consulta el artículo Credenciales de cuentas de servicio de corta duración. Para obtener más información sobre la federación de identidades de cargas de trabajo, consulta Federación de identidades de cargas de trabajo.

  • Mantenimiento reducido: las claves de cuenta de servicio requieren más mantenimiento. Rotar y proteger estas claves con regularidad puede suponer una carga administrativa considerable.

Mientras esta función se encuentre en versión preliminar, habrá algunas limitaciones.

Antes de empezar

En las siguientes secciones, creará cuentas de servicio y concederá los roles necesarios para la autenticación de clústeres de identidad de carga de trabajo. Las instrucciones de configuración de este documento no sustituyen a las de Configurar recursos Google Cloud , sino que son necesarias además de los requisitos previos estándar de instalación solo de software de Google Distributed Cloud. Las cuentas de servicio necesarias para la autenticación de clústeres de Workload Identity son similares a las cuentas de servicio descritas en Configurar Google Cloud recursos, pero tienen nombres únicos, por lo que no interfieren con los clústeres que usan las claves de cuenta de servicio predeterminadas.

Esta página está dirigida a administradores, arquitectos y operadores que configuran, monitorizan y gestionan el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE.Google Cloud

En la siguiente tabla se describen las cuentas de servicio necesarias para la autenticación de clústeres de Workload Identity:

Cuenta de servicio Finalidad Roles
ADMIN_SA Esta cuenta de servicio se usa para generar tokens. Cada token tiene los privilegios asociados a los roles de la cuenta de servicio. roles/gkehub.admin
roles/logging.admin
roles/monitoring.admin
roles/monitoring.dashboardEditor
roles/iam.serviceAccountAdmin
roles/iam.serviceAccountTokenCreator
baremetal-controller Agente de Connect usa esta cuenta de servicio para mantener una conexión entre tu clúster y Google Cloud y para registrar tus clústeres en una flota. Esta cuenta de servicio también actualiza los tokens de la cuenta de servicio baremetal-gcr. roles/gkehub.admin
roles/monitoring.dashboardEditor
roles/serviceusage.serviceUsageViewer
baremetal-cloud-ops El agente de Stackdriver usa esta cuenta de servicio para exportar registros y métricas de clústeres a Cloud Logging y Cloud Monitoring. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor
roles/monitoring.viewer
roles/serviceusage.serviceUsageViewer
roles/kubernetesmetadata.publisher
baremetal-gcr Google Distributed Cloud usa esta cuenta de servicio para descargar imágenes de contenedor de Artifact Registry. Ninguno

Crear y configurar cuentas de servicio para la autenticación de clústeres de Workload Identity

En las siguientes secciones se incluyen instrucciones para crear las cuentas de servicio necesarias y asignarles los roles necesarios para la autenticación de clústeres de Workload Identity. Para ver una lista de las cuentas de servicio y los roles necesarios, consulta la tabla de la sección anterior.

Crear cuentas de servicio

Para crear las cuentas de servicio de la autenticación de clúster de Workload Identity, sigue estos pasos:

  1. En tu estación de trabajo de administrador, inicia sesión en Google Cloud CLI:

    gcloud auth login
    
  2. Opcionalmente, crea la cuenta de servicio administrativa:

    El nombre de la cuenta de servicio ADMIN_SA es arbitrario. También puedes usar una cuenta de servicio que ya tengas, siempre que tenga los roles que se indican en la tabla de la sección anterior, pero no es recomendable porque va en contra del principio de privilegio mínimo.

    gcloud iam service-accounts create ADMIN_SA \
        --project=PROJECT_ID
    

    Sustituye PROJECT_ID por el ID de tuGoogle Cloud proyecto.

  3. Crea las cuentas de servicio estándar para la autenticación de clústeres de Workload Identity:

    Las cuentas de servicio estándar de la autenticación de clústeres de Workload Identity tienen nombres predeterminados que se pueden personalizar, si quieres.

    gcloud iam service-accounts create baremetal-controller \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create baremetal-cloud-ops \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create baremetal-gcr \
        --project=PROJECT_ID
    

    Sustituye PROJECT_ID por el ID de tuGoogle Cloud proyecto.

Añadir enlaces de políticas de gestión de identidades y accesos para cuentas de servicio

  1. Añade vinculaciones de políticas de gestión de identidades y accesos para los roles necesarios de la cuenta de servicio ADMIN_SA:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/logging.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.dashboardEditor
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountAdmin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
    
  2. Añade vinculaciones de políticas de gestión de identidades y accesos para los roles necesarios de la cuenta de servicio baremetal-controller:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.dashboardEditor
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/serviceusage.serviceUsageViewer
    
  3. Añade vinculaciones de políticas de gestión de identidades y accesos para los roles necesarios de la cuenta de servicio baremetal-cloud-ops:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/logging.logWriter
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.dashboardEditor
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.metricWriter
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/opsconfigmonitoring.resourceMetadata.writer
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/stackdriver.resourceMetadata.writer
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.viewer
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/serviceusage.serviceUsageViewer
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/kubernetesmetadata.publisher
    
  4. Concede a la cuenta de servicio baremetal-controller la capacidad de generar tokens de acceso en nombre de la cuenta de servicio baremetal-gcr:

    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com \
        --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
    

Configurar Workload Identity Federation para tus clústeres

Para proporcionar acceso con la federación de identidades de carga de trabajo para GKE, crea una política de permiso de IAM que conceda acceso a un recursoGoogle Cloud específico a una entidad principal que corresponda a la identidad de tu aplicación. Google Cloud En este caso, la federación de identidades de cargas de trabajo concede acceso a operadores específicos del clúster. Para obtener más información sobre Workload Identity Federation para GKE, consulta Workload Identity Federation en la documentación de gestión de identidades y accesos.

Añadir enlaces de políticas de gestión de identidades y accesos para el operador del clúster

Los siguientes comandos conceden a la cuenta de servicio de Kubernetes anthos-cluster-operator la capacidad de usar la identidad de la cuenta de servicio baremetal-controller e interactuar con los recursos de Google Cloud en nombre del clúster:

  1. En cada clúster configurado para la autenticación de clústeres de Workload Identity (o que tenga previsto usarla), incluido el clúster de arranque, concede a anthos-cluster-operator en el clúster la capacidad de suplantar la cuenta de servicio baremetal-controller:

    En el siguiente comando, el principalSet consta del grupo de identidades de carga de trabajo y una cuenta de servicio de Kubernetes, anthos-cluster-operator, en el espacio de nombres kube-system.

    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/anthos-cluster-operator \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    

    Haz los cambios siguientes:

  2. Verifica las vinculaciones de políticas de la cuenta de servicio baremetal-controller:

    gcloud iam service-accounts get-iam-policy \
        baremetal-controller@PROJECT_ID.iam.gserviceaccount.com
    

    La respuesta debería ser similar a la siguiente:

    bindings:
    - members:
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/anthos-cluster-operator
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/anthos-cluster-operator
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/anthos-cluster-operator
      role: roles/iam.workloadIdentityUser
    etag: BwYoN3QLig0=
    version: 1
    

Añadir enlaces de políticas de gestión de identidades y accesos para los operadores de Google Cloud Observability

Los siguientes comandos conceden a las siguientes cuentas de servicio de Kubernetes de Google Cloud Observability la capacidad de usar la identidad de la cuenta de servicio baremetal-cloud-ops e interactuar con los recursos de Google Cloud en nombre del clúster:

  • cloud-audit-logging
  • gke-metrics-agent
  • kubestore-collector
  • metadata-agent
  • stackdriver-log-forwarder
  1. En cada clúster configurado para la autenticación de clústeres de Workload Identity (o que tenga previsto usarla), incluido el clúster de arranque, concede a los operadores de Google Cloud Observability del clúster la capacidad de suplantar la cuenta de servicio baremetal-cloud-ops:

    En cada uno de los siguientes comandos, principalSet consta del grupo de identidades de carga de trabajo y de una cuenta de servicio de Kubernetes, como cloud-audit-logging, en el espacio de nombres kube-system.

    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/cloud-audit-logging \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/gke-metrics-agent \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/kubestore-collector \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/metadata-agent \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/stackdriver-log-forwarder \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
  2. Verifica las vinculaciones de políticas de la cuenta de servicio baremetal-cloud-ops:

    gcloud iam service-accounts get-iam-policy \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
    

    La respuesta debería ser similar a la siguiente:

    bindings:
    - members:
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/cloud-audit-logging
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/gke-metrics-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/kubestore-collector
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/metadata-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/stackdriver-log-forwarder
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/cloud-audit-logging
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/gke-metrics-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/kubestore-collector
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/metadata-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/stackdriver-log-forwarder
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/cloud-audit-logging
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/gke-metrics-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/kubestore-collector
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/metadata-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/stackdriver-log-forwarder
      role: roles/iam.workloadIdentityUser
    etag: BwYhT4gL-dY=
    version: 1
    

Configuración de clúster

La diferencia más evidente en la configuración de los clústeres que usan la autenticación de clústeres de Workload Identity es que no se especifican las rutas a las claves de cuenta de servicio descargadas.

  1. Cuando rellenes la configuración del clúster en el archivo de configuración, deja en blanco las rutas de las claves de la cuenta de servicio en la sección de credenciales, como se muestra en el siguiente ejemplo:

    gcrKeyPath:
    sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa
    gkeConnectAgentServiceAccountKeyPath:
    gkeConnectRegisterServiceAccountKeyPath:
    cloudOperationsServiceAccountKeyPath:
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: cluster-CLUSTER_NAME
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: 1.30.0-gke.1930
      ...
    
  2. Opcionalmente, puedes definir nombres personalizados para las cuentas de servicio de autenticación de clústeres de Workload Identity:

    Si especificas nombres personalizados, puedes usar cuentas de servicio disponibles. Asegúrate de que los nombres de las cuentas de servicio personalizadas que especifiques sean distintos entre sí.

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: cluster-CLUSTER_NAME
      annotations:
        baremetal.cluster.gke.io/controller-service-account: "CUSTOM_CONTROLLER_GSA"
        baremetal.cluster.gke.io/cloud-ops-service-account: "CUSTOM_CLOUD_OPS_GSA"
        baremetal.cluster.gke.io/gcr-service-account: "CUSTOM_AR_GSA"
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: 1.30.0-gke.1930
        ...
    

    Haz los cambios siguientes:

    • CUSTOM_CONTROLLER_GSA: el nombre de correo de la cuenta de servicio que usa Connect Agent para mantener una conexión entre tu clúster y Google Cloud, así como para registrar tus clústeres.

    • CUSTOM_CLOUD_OPS_GSA: el nombre de correo de la cuenta de servicio que usa el agente de Stackdriver para exportar registros y métricas de clústeres a Cloud Logging y Cloud Monitoring.

    • CUSTOM_AR_GSA: el nombre de correo de la cuenta de servicio que usa Google Distributed Cloud para descargar imágenes de contenedor de Artifact Registry.

Operación de clústeres

Cuando quieras crear, actualizar o eliminar un clúster que use la autenticación de clúster de Workload Identity, sigue estos pasos:

  1. Inicia sesión en Google Cloud CLI:

    gcloud auth login
    
  2. En tu estación de trabajo de administrador, crea y descarga una clave para la cuenta de servicio ADMIN_SA:

    gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \
        --iam-account=ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com
    

    Sustituye TMP_KEY_FILE_PATH por la ruta, incluido el nombre de archivo, del archivo de clave descargado.

  3. Autoriza el acceso a Google Cloud con la cuenta de servicio ADMIN_SA:

    gcloud auth activate-service-account ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --key-file=TMP_KEY_FILE_PATH
    
  4. Elimina el archivo de clave JSON descargado:

    rm TMP_KEY_FILE_PATH
    
  5. En tu estación de trabajo de administrador, crea una variable de entorno GCP_ACCESS_TOKEN con el valor de un token de acceso creado por la cuenta de servicio ADMIN_SA:

    export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \
        --impersonate-service-account=ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com)
    

    De forma predeterminada, el token de acceso tiene una duración de 1 hora.

  6. Verifica que el token lo haya generado la cuenta de servicio ADMIN_SA con la fecha de vencimiento correcta:

    curl "https://oauth2.googleapis.com/tokeninfo?access_token=$GCP_ACCESS_TOKEN"
    

    La respuesta debe incluir líneas similares a las siguientes:

    ...
    "expires_in": "3582",
    "email": "ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com)",
    ...
    

    El valor de vencimiento está en segundos y debe ser inferior a 3600, lo que indica que el token caduca en menos de una hora.

  7. Ejecuta un comando bmctl para crear, actualizar o eliminar un clúster:

    Si bmctl detecta que se ha definido la variable de entorno GCP_ACCESS_TOKEN, realiza la validación del token. Si el token es válido, bmctl lo usa para las operaciones del clúster.

    En los clústeres que usan la autenticación de clúster de Workload Identity, los siguientes comandos requieren que la variable de entorno GCP_ACCESS_TOKEN se defina como un token de acceso válido y activo:

    • bmctl create cluster -c CLUSTER_NAME
    • bmctl reset cluster -c CLUSTER_NAME
    • bmctl upgrade cluster -c CLUSTER_NAME

Limitaciones

Mientras la autenticación de clústeres de Workload Identity esté en versión preliminar, no se admitirán las siguientes funciones:

  • Usar un servidor proxy
  • Controles de Servicio de VPC
  • Actualizar los clústeres del modo de claves para que usen la autenticación de clústeres de Workload Identity

Siguientes pasos