Autenticazione cluster Workload Identity

Questo documento descrive come configurare e utilizzare l'autenticazione del cluster Workload Identity per Google Distributed Cloud (solo software) su bare metal. Anziché le chiavi degli account di servizio, l'autenticazione del cluster Workload Identity utilizza token di breve durata e la federazione di Workload Identity per creare e proteggere i cluster. Le credenziali di breve durata per il account di servizio sono sotto forma di token di accesso OAuth 2.0. I token di accesso scadono dopo 1 ora per impostazione predefinita, ad eccezione dei token di pull delle immagini, che scadono dopo 12 ore.

L'autenticazione del cluster Workload Identity è disponibile solo durante la creazione di nuovi cluster che eseguono la versione 1.30 e successive. Non puoi configurare un cluster esistente per utilizzare l'autenticazione del cluster Workload Identity durante un aggiornamento.

Al contrario, la modalità con chiave, il metodo standard per creare e proteggere i cluster, utilizza le chiavi account di servizio scaricate. Quando crei un cluster autogestito (amministrativo, ibrido o autonomo), specifichi il percorso delle chiavi scaricate. Le chiavi vengono quindi archiviate come secret nel cluster e in tutti i cluster utente gestiti. Per impostazione predefinita, le chiavi del account di servizio non scadono e rappresentano un rischio per la sicurezza se non vengono gestite correttamente.

L'autenticazione del cluster Workload Identity offre due vantaggi principali rispetto all'utilizzo delle chiavi del account di servizio:

  • Maggiore sicurezza: le chiavi degli account di servizio comportano un rischio per la sicurezza se non vengono gestite correttamente. I token OAuth 2.0 e la federazione delle identità per i carichi di lavoro sono considerati alternative consigliate alle chiavi degli account di servizio. Per ulteriori informazioni sui token account di servizio, consulta Credenziali account di servizio di breve durata. Per maggiori informazioni sulla federazione delle identità per i workload, consulta Federazione delle identità per i workload.

  • Manutenzione ridotta: le chiavi del service account richiedono più manutenzione. La rotazione e la protezione regolari di queste chiavi possono rappresentare un onere amministrativo significativo.

Mentre questa funzionalità è in anteprima, esistono alcune limitazioni note.

Prima di iniziare

Nelle sezioni seguenti, crea service account e concedi i ruoli necessari per l'autenticazione del cluster Workload Identity. Le istruzioni di configurazione riportate in questo documento non sostituiscono le istruzioni riportate nelle risorse di configurazione Google Cloud , ma sono necessarie in aggiunta ai prerequisiti di installazione solo software standard di Google Distributed Cloud. Gli account di servizio richiesti per l'autenticazione del cluster Workload Identity sono simili a quelli descritti nelle risorse di configurazione Google Cloud , ma hanno un nome univoco, quindi non interferiscono con i cluster che utilizzano le chiavi dell'account di servizio predefinito.

Questa pagina è rivolta ad amministratori, architetti e operatori che configurano, monitorano e gestiscono il ciclo di vita dell'infrastruttura tecnologica sottostante. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti diGoogle Cloud , consulta Ruoli utente e attività comuni di GKE Enterprise.

La tabella seguente descrive gli account di servizio richiesti per l'autenticazione del cluster Workload Identity:

Service account Finalità Ruoli
ADMIN_SA Utilizzi questo account di servizio per generare token. Ogni token ha i privilegi associati ai ruoli delaccount di serviziot. roles/gkehub.admin
roles/logging.admin
roles/monitoring.admin
roles/monitoring.dashboardEditor
roles/iam.serviceAccountAdmin
roles/iam.serviceAccountTokenCreator
baremetal-controller L'agente Connect utilizza questo account di servizio per mantenere una connessione tra il cluster e Google Cloud e per registrare i cluster in un parco risorse. Questo account di servizio aggiorna anche i token per il account di servizio baremetal-gcr. roles/gkehub.admin
roles/monitoring.dashboardEditor
roles/serviceusage.serviceUsageViewer
baremetal-cloud-ops L'agente Stackdriver utilizza questo account di servizio per esportare log e metriche dai cluster a Cloud Logging e 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 utilizza questo account di servizio per scaricare immagini container da Artifact Registry. Nessuno

Crea e configura service account per l'autenticazione del cluster Workload Identity

Le seguenti sezioni contengono le istruzioni per creare i service account richiesti e concedere loro i ruoli necessari per l'autenticazione del cluster Workload Identity. Per un elenco dei service account e dei ruoli richiesti, consulta la tabella nella sezione precedente.

Creazione di account di servizio

Per creare i service account per l'autenticazione del cluster Workload Identity, segui questi passaggi:

  1. Sulla workstation amministrativa, accedi a Google Cloud CLI:

    gcloud auth login
    
  2. (Facoltativo) Crea il account di servizio amministrativo:

    Il nome del account di servizio ADMIN_SA è arbitrario. Puoi anche utilizzare un account di servizio esistente, se dispone dei ruoli identificati nella tabella della sezione precedente, ma non è consigliabile perché è contrario al principio del privilegio minimo.

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

    Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud .

  3. Crea i service account standard per l'autenticazione del cluster Workload Identity:

    I service account standard per l'autenticazione del cluster Workload Identity hanno nomi predeterminati che possono essere personalizzati, se vuoi.

    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
    

    Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud .

Aggiungi associazioni di policy Identity and Access Management per i service account

  1. Aggiungi i binding delle policy IAM per i ruoli richiesti per il account di servizio 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. Aggiungi i binding delle policy IAM per i ruoli richiesti per il account di servizio 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. Aggiungi i binding delle policy IAM per i ruoli richiesti per il account di servizio 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. Concedi all'account di servizio baremetal-controller la possibilità di generare token di accesso per conto dell'account di servizio 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
    

Configura la federazione delle identità per i workload per i tuoi cluster

Per fornire l'accesso Google Cloud con la federazione delle identità per i carichi di lavoro per GKE, crea una policy di autorizzazione IAM che conceda l'accesso a una risorsaGoogle Cloud specifica a un principal che corrisponde all'identità della tua applicazione. In questo caso, Workload Identity Federation concede l'accesso a operatori specifici nel cluster. Per saperne di più su Workload Identity Federation for GKE, consulta Workload Identity Federation nella documentazione di IAM.

Aggiungi binding dei criteri IAM per l'operatore del cluster

I seguenti comandi concedono al service account Kubernetes anthos-cluster-operator la possibilità di rappresentare il account di servizio baremetal-controller e interagire con le risorse Google Cloud per conto del cluster:

  1. Per ogni cluster configurato per l'autenticazione cluster Workload Identity (o per cui è prevista l'autenticazione cluster Workload Identity), incluso il cluster di bootstrap, concedi a anthos-cluster-operator nel cluster la possibilità di rappresentare l'account di servizio baremetal-controller:

    Nel comando seguente, principalSet è costituito dal pool di identità dei carichi di lavoro e da un account di servizio Kubernetes, anthos-cluster-operator, nello spazio dei nomi 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
    

    Sostituisci quanto segue:

  2. Verifica i binding dei criteri per il account di servizio baremetal-controller:

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

    La risposta dovrebbe essere simile alla seguente:

    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
    

Aggiungi binding dei criteri IAM per gli operatori Google Cloud Observability

I seguenti comandi concedono ai seguenti service account Kubernetes di Google Cloud Observability la possibilità di rappresentare il account di servizio baremetal-cloud-ops e interagire con le risorse Google Cloud per conto del cluster:

  • cloud-audit-logging
  • gke-metrics-agent
  • kubestore-collector
  • metadata-agent
  • stackdriver-log-forwarder
  1. Per ogni cluster configurato per l'autenticazione del cluster Workload Identity (o per cui è previsto l'utilizzo dell'autenticazione del cluster Workload Identity), incluso il cluster di bootstrap, concedi agli operatori Google Cloud Observability nel cluster la possibilità di rappresentare l'account di servizio baremetal-cloud-ops:

    In ognuno dei seguenti comandi, principalSet è costituito dal pool di identità dei carichi di lavoro e da un account di servizio Kubernetes, ad esempio cloud-audit-logging, nello spazio dei nomi 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 i binding dei criteri per il account di servizio baremetal-cloud-ops:

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

    La risposta dovrebbe essere simile alla seguente:

    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
    

Configurazione cluster

La differenza più ovvia nella configurazione dei cluster che utilizzano l'autenticazione del cluster Workload Identity è che non devi specificare i percorsi delle chiavi delaccount di serviziot scaricate.

  1. Quando compili le impostazioni del cluster nel file di configurazione, lascia vuoti i percorsi della chiave dell'account di servizio nella sezione delle credenziali, come mostrato nell'esempio seguente:

    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. (Facoltativo) Imposta nomi personalizzati per i service account del servizio di autenticazione del cluster Workload Identity:

    La specifica di nomi personalizzati consente di utilizzare service account esistenti. Assicurati che i nomi deiaccount di serviziot personalizzati che specifichi siano diversi tra loro.

    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
        ...
    

    Sostituisci quanto segue:

    • CUSTOM_CONTROLLER_GSA: il nome email del account di servizio utilizzato dall'agente Connect per mantenere una connessione tra il cluster e Google Cloude per registrare i cluster.

    • CUSTOM_CLOUD_OPS_GSA: il nome email del service account utilizzato da Stackdriver Agent per esportare log e metriche dai cluster a Cloud Logging e Cloud Monitoring.

    • CUSTOM_AR_GSA: il nome email del service account utilizzato da Google Distributed Cloud per scaricare le immagini container da Artifact Registry.

Funzionamento dei cluster

Quando è tutto pronto per creare, eseguire l'upgrade o eliminare un cluster che utilizza l'autenticazione del cluster Workload Identity, segui questi passaggi:

  1. Accedi a Google Cloud CLI:

    gcloud auth login
    
  2. Sulla workstation amministrativa, crea e scarica una chiave per il account di servizio ADMIN_SA:

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

    Sostituisci TMP_KEY_FILE_PATH con il percorso, incluso il nome file, del file della chiave scaricato.

  3. Autorizza l'accesso a Google Cloud con il account di servizio ADMIN_SA:

    gcloud auth activate-service-account ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --key-file=TMP_KEY_FILE_PATH
    
  4. Elimina il file della chiave JSON scaricato:

    rm TMP_KEY_FILE_PATH
    
  5. Sulla workstation amministrativa, crea una variabile di ambiente GCP_ACCESS_TOKEN con il valore di un token di accesso creato dall'account di servizio ADMIN_SA:

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

    Per impostazione predefinita, il token di accesso ha una durata di 1 ora.

  6. Verifica che il token sia generato dal account di servizio ADMIN_SA con la scadenza corretta:

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

    La risposta dovrebbe includere righe simili alle seguenti:

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

    Il valore di scadenza è in secondi e deve essere inferiore a 3600, a indicare che il token scade in meno di un'ora.

  7. Esegui un comando bmctl per creare, eseguire l'upgrade o eliminare un cluster:

    Se bmctl rileva che la variabile di ambiente GCP_ACCESS_TOKEN è stata impostata, esegue la convalida del token. Se il token è valido, bmctl lo utilizza per le operazioni del cluster.

    Per i cluster che utilizzano l'autenticazione del cluster Workload Identity, i seguenti comandi richiedono che la variabile di ambiente GCP_ACCESS_TOKEN sia impostata su un token di accesso valido e attivo:

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

Limitazioni

Mentre l'autenticazione del cluster Workload Identity è in anteprima, le seguenti funzionalità non sono supportate:

  • Utilizzo di un server proxy
  • Controlli di servizio VPC
  • Aggiorna i cluster esistenti in modalità con chiave per utilizzare l'autenticazione del cluster Workload Identity

Passaggi successivi