En este documento, se describe cómo configurar y usar la autenticación de clústeres de Workload Identity para Google Distributed Cloud (solo software) en equipos físicos. En lugar de las claves de cuenta de servicio, la autenticación de clústeres de Workload Identity usa tokens de corta duración y la federación de identidades para cargas de trabajo para crear y proteger tus clústeres. Las credenciales de corta duración para la cuenta de servicio se presentan en forma de tokens de acceso de OAuth 2.0. De forma predeterminada, los tokens de acceso vencen después de 1 hora, excepto los tokens de extracción de imágenes, que vencen después de 12 horas.
La autenticación de clústeres con Workload Identity solo está disponible cuando se crean clústeres nuevos que ejecutan la versión 1.30 y versiones posteriores. No puedes configurar un clúster existente para que use la autenticación del 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, usa claves de cuentas de servicio descargadas. Cuando creas un clúster autoadministrado (de administrador, híbrido o independiente), debes especificar la ruta de acceso a las claves descargadas. Luego, las claves se almacenan como Secrets en el clúster y en cualquier clúster de usuario administrado. De forma predeterminada, las claves de cuentas de servicio no vencen y son un riesgo de seguridad si no se administran de forma adecuada.
La autenticación de clústeres de Workload Identity ofrece dos beneficios principales en comparación con el uso de claves de cuentas de servicio:
Mayor seguridad: Las claves de cuenta de servicio son un riesgo de seguridad si no se administran de forma adecuada. Los tokens de OAuth 2.0 y Workload Identity Federation se consideran alternativas de prácticas recomendadas a las claves de cuenta de servicio. Para obtener más información sobre los tokens de cuentas de servicio, consulta Crea credenciales de corta duración para una cuenta de servicio. Para obtener más información sobre la federación de Workload Identity, consulta Workload Identity Federation.
Menos mantenimiento: Las claves de cuentas de servicio requieren más mantenimiento. La rotación y la protección periódicas de estas claves pueden ser una carga administrativa importante.
Mientras esta función esté en vista previa, existen algunas limitaciones conocidas.
Antes de comenzar
En las siguientes secciones, crearás cuentas de servicio y otorgarás los roles necesarios para la autenticación de clústeres de Workload Identity. Las instrucciones de configuración de este documento no reemplazan las instrucciones de Configura recursos de Google Cloud , sino que se requieren 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 que se describen en los recursos de configuración Google Cloud , pero tienen nombres únicos, por lo que no interfieren con los clústeres que usan las claves de cuentas de servicio predeterminadas.
Esta página está destinada a administradores, arquitectos y operadores que configuran, supervisan y administran el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido deGoogle Cloud , consulta Roles de usuario y tareas comunes de GKE Enterprise.
En la siguiente tabla, se describen las cuentas de servicio necesarias para la autenticación del clúster de Workload Identity:
Cuenta de servicio | Objetivo | Funciones |
---|---|---|
ADMIN_SA |
Usas esta cuenta de servicio 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 |
El 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 |
Crea y configura cuentas de servicio para la autenticación de clústeres con Workload Identity
En las siguientes secciones, se incluyen instrucciones para crear las cuentas de servicio necesarias y otorgarles los roles necesarios para la autenticación del clúster de Workload Identity. Para obtener una lista de las cuentas de servicio y sus roles obligatorios, consulta la tabla de la sección anterior.
Crea cuentas de servicio
Para crear las cuentas de servicio para la autenticación del clúster de Workload Identity, sigue estos pasos:
En tu estación de trabajo de administrador, accede a Google Cloud CLI:
gcloud auth login
De manera opcional, crea la cuenta de servicio administrativa:
El nombre de la cuenta de servicio
ADMIN_SA
es arbitrario. Incluso puedes usar una cuenta de servicio existente si tiene los roles identificados en la tabla de la sección anterior, pero no se recomienda porque va en contra del principio de privilegio mínimo.gcloud iam service-accounts create ADMIN_SA \ --project=PROJECT_ID
Reemplaza
PROJECT_ID
por el ID de tu proyecto deGoogle Cloud .Crea las cuentas de servicio estándar para la autenticación de clústeres de Workload Identity:
Las cuentas de servicio estándar para la autenticación de clústeres de Workload Identity tienen nombres predeterminados que se pueden personalizar, si lo deseas.
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
Reemplaza
PROJECT_ID
por el ID de tu proyecto deGoogle Cloud .
Agrega vinculaciones de políticas de Identity and Access Management para cuentas de servicio
Agrega vinculaciones de políticas de IAM para los roles requeridos de la cuenta de servicio de
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
Agrega vinculaciones de políticas de IAM para los roles requeridos de la cuenta de servicio de
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
Agrega vinculaciones de políticas de IAM para los roles requeridos de la cuenta de servicio de
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
Otorga a la cuenta de servicio
baremetal-controller
la capacidad de generar tokens de acceso en nombre de la cuenta de serviciobaremetal-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
Configura Workload Identity Federation para tus clústeres
Para proporcionar Google Cloud acceso con la federación de identidades para cargas de trabajo para GKE, crea una política de permisos de IAM que otorgue acceso en un recursoGoogle Cloud específico a una principal que corresponda a la identidad de tu aplicación. En este caso, Workload Identity Federation for GKE otorga acceso a operadores específicos en el clúster. Para obtener más información sobre Workload Identity Federation for GKE, consulta Workload Identity Federation en la documentación de IAM.
Agrega vinculaciones de políticas de IAM para el operador de clústeres
Los siguientes comandos otorgan a la cuenta de servicio de Kubernetes anthos-cluster-operator
la capacidad de suplantar la identidad de la cuenta de servicio de baremetal-controller
y de interactuar con los recursos de Google Cloud en nombre del clúster:
Para cada clúster configurado para la autenticación de clústeres con Workload Identity (o que se planea usar para la autenticación de clústeres con Workload Identity), incluido el clúster de arranque, otorga a
anthos-cluster-operator
en el clúster la capacidad de suplantar la cuenta de serviciobaremetal-controller
:En el siguiente comando,
principalSet
consta del grupo de identidades de cargas de trabajo y una cuenta de servicio de Kubernetes,anthos-cluster-operator
, en el espacio de nombreskube-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
Reemplaza lo siguiente:
PROJECT_NUM
: El identificador único generado de forma automática para tu proyecto.REGION
: Es la ubicación de la membresía de la flota de tu clúster, que esglobal
de forma predeterminada. Para obtener más información, consulta Ubicación de la membresía de la flota.CLUSTER_NAME
: el nombre del clúster De forma predeterminada, el nombre del clúster de arranque esbmctl-MACHINE_NAME
.
Verifica las vinculaciones de políticas para 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
Agrega vinculaciones de políticas de IAM para los operadores de Google Cloud Observability
Los siguientes comandos otorgan a las siguientes cuentas de servicio de Google Cloud Observability Kubernetes la capacidad de suplantar la cuenta de servicio baremetal-cloud-ops
y de 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
Para cada clúster configurado para la autenticación de clústeres con Workload Identity (o que se planea usar para la autenticación de clústeres con Workload Identity), incluido el clúster de arranque, otorga a los operadores de Google Cloud Observability en el 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 cargas de trabajo y una cuenta de servicio de Kubernetes, comocloud-audit-logging
, en el espacio de nombreskube-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
Verifica las vinculaciones de políticas para 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 del clúster
La diferencia más obvia en la configuración de los clústeres que usan la autenticación de clústeres de Workload Identity es que no especificas rutas de acceso a las claves de cuentas de servicio descargadas.
Cuando completes la configuración del clúster en el archivo de configuración, deja en blanco las rutas de acceso a 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 ...
De manera opcional, establece 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 existentes. 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 ...
Reemplaza lo siguiente:
CUSTOM_CONTROLLER_GSA
: Es el nombre de correo electrónico de la cuenta de servicio que usa el agente de Connect para mantener una conexión entre tu clúster y Google Cloud, y para registrar tus clústeres.CUSTOM_CLOUD_OPS_GSA
: Es el nombre de correo electrónico 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
: Es el nombre de correo electrónico de la cuenta de servicio que usa Google Distributed Cloud para descargar imágenes de contenedores desde Artifact Registry.
Operación del clúster
Cuando esté todo listo para crear, actualizar o borrar un clúster que use la autenticación de clústeres de Workload Identity, sigue estos pasos:
Accede a Google Cloud CLI:
gcloud auth login
En tu estación de trabajo de administrador, crea y descarga una clave para la cuenta de servicio de
ADMIN_SA
:gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com
Reemplaza
TMP_KEY_FILE_PATH
por la ruta de acceso del archivo de claves descargado, incluido el nombre de archivo.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
Borra el archivo de claves JSON que descargaste:
rm TMP_KEY_FILE_PATH
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 servicioADMIN_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 vida útil de 1 hora.
Verifica que la cuenta de servicio de
ADMIN_SA
genere el token con la fecha de vencimiento correcta:curl "https://oauth2.googleapis.com/tokeninfo?access_token=$GCP_ACCESS_TOKEN"
La respuesta debería 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 vence en menos de una hora.Ejecuta un comando
bmctl
para crear, actualizar o borrar un clúster:Si
bmctl
detecta que se configuró la variable de entornoGCP_ACCESS_TOKEN
, realiza la validación del token. Si el token es válido,bmctl
lo usa para las operaciones del clúster.En el caso de los clústeres que usan la autenticación de clústeres de Workload Identity, los siguientes comandos requieren que la variable de entorno
GCP_ACCESS_TOKEN
esté configurada como un token de acceso activo y válido: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 vista previa, no se admitirán las siguientes funciones:
- Usa un servidor proxy
- Controles del servicio de VPC
- Actualiza los clústeres existentes en modo con clave para que usen la autenticación de clústeres de Workload Identity