Workload Identity-Clusterauthentifizierung

In diesem Dokument wird beschrieben, wie Sie die Clusterauthentifizierung von Workload Identity für Google Distributed Cloud (nur Software) auf Bare Metal einrichten und verwenden. Anstelle von Dienstkontoschlüsseln verwendet die Workload Identity-Clusterauthentifizierung kurzlebige Tokens und die Workload Identity-Föderation, um Cluster zu erstellen und zu schützen. Die kurzlebigen Anmeldedaten für das Dienstkonto haben die Form von OAuth 2.0-Zugriffstokens. Die Zugriffstokens laufen standardmäßig nach einer Stunde ab, mit Ausnahme von Pull-Tokens für Bilder, die nach 12 Stunden ablaufen.

Die Workload Identity-Clusterauthentifizierung ist nur für Cluster ab Version 1.30 verfügbar.

Im Schlüsselmodus, der Standardmethode zum Erstellen und Schützen von Clustern, werden dagegen heruntergeladene Dienstkontoschlüssel verwendet. Wenn Sie einen selbstverwalteten Cluster (Administrator-, Hybrid- oder Standalone-Cluster) erstellen, geben Sie den Pfad zu den heruntergeladenen Schlüsseln an. Die Schlüssel werden dann als Secrets im Cluster und in allen verwalteten Nutzerclustern gespeichert. Standardmäßig laufen Dienstkontoschlüssel nicht ab und stellen ein Sicherheitsrisiko dar, wenn sie nicht ordnungsgemäß verwaltet werden.

Die Workload Identity-Clusterauthentifizierung bietet zwei Hauptvorteile gegenüber der Verwendung von Dienstkontoschlüsseln:

  • Verbesserte Sicherheit: Dienstkontoschlüssel stellen ein Sicherheitsrisiko dar, wenn sie nicht ordnungsgemäß verwaltet werden. OAuth 2.0-Tokens und die Workload Identity-Föderation gelten als Best Practices für Dienstkontoschlüssel. Weitere Informationen zu Dienstkontotokens finden Sie unter Kurzlebige Anmeldedaten für das Dienstkonto erstellen. Weitere Informationen zur Workload Identity-Föderation finden Sie unter Workload Identity-Föderation.

  • Geringere Wartung: Dienstkontoschlüssel erfordern mehr Wartung. Das regelmäßige Wechseln und Schützen dieser Schlüssel kann einen erheblichen Verwaltungsaufwand bedeuten.

Da sich diese Funktion noch im Vorabzugriff befindet, gibt es einige bekannte Einschränkungen.

Hinweis

In den folgenden Abschnitten erstellen Sie Dienstkonten und gewähren Rollen, die für die Workload Identity-Clusterauthentifizierung erforderlich sind. Die Einrichtungsanleitung in diesem Dokument ersetzt nicht die Anleitung unter Ressourcen einrichten Google Cloud , sondern ist zusätzlich zu den Standardvoraussetzungen für die Installation von Google Distributed Cloud-Software erforderlich. Die für die Clusterauthentifizierung mit Arbeitslastidentitäten erforderlichen Dienstkonten ähneln den Dienstkonten, die unter Ressourcen einrichten Google Cloud beschrieben werden. Sie haben jedoch eindeutige Namen, sodass sie nicht mit Clustern in Konflikt stehen, die die Standarddienstkontoschlüssel verwenden.

Diese Seite richtet sich an Administratoren, Architekturfachkräfte und Betreiber, die technische Infrastrukturen einrichten, überwachen und verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir inGoogle Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und ‑Aufgaben.

In der folgenden Tabelle werden die Dienstkonten beschrieben, die für die Workload Identity-Clusterauthentifizierung erforderlich sind:

Dienstkonto Zweck Rollen
ADMIN_SA Mit diesem Dienstkonto werden Tokens generiert. Jedem Token sind die Berechtigungen der Dienstkontorollen zugewiesen. roles/gkehub.admin
roles/logging.admin
roles/monitoring.admin
roles/monitoring.dashboardEditor
roles/iam.serviceAccountAdmin
roles/iam.serviceAccountTokenCreator
baremetal-controller Connect Agent verwendet dieses Dienstkonto, um eine Verbindung zwischen Ihrem Cluster und Google Cloud aufrechtzuerhalten und Ihre Cluster bei einer Flotte zu registrieren. Dieses Dienstkonto aktualisiert auch die Tokens für das Dienstkonto baremetal-gcr. roles/gkehub.admin
roles/monitoring.dashboardEditor
roles/serviceusage.serviceUsageViewer
baremetal-cloud-ops Stackdriver Agent verwendet dieses Dienstkonto, um Logs und Messwerte von Clustern nach Cloud Logging und Cloud Monitoring zu exportieren. 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 verwendet dieses Dienstkonto, um Container-Images aus Container Registry herunterzuladen. Keine

Dienstkonten für die Workload Identity-Clusterauthentifizierung erstellen und konfigurieren

In den folgenden Abschnitten finden Sie eine Anleitung zum Erstellen der erforderlichen Dienstkonten und zum Zuweisen der erforderlichen Rollen für die Workload Identity-Clusterauthentifizierung. Eine Liste der Dienstkonten und der erforderlichen Rollen finden Sie in der Tabelle im vorherigen Abschnitt.

Dienstkonten erstellen

So erstellen Sie die Dienstkonten für die Clusterauthentifizierung von Workload Identity:

  1. Melden Sie sich auf Ihrer Administrator-Workstation in der Google Cloud CLI an:

    gcloud auth login
    
  2. Optional können Sie das Verwaltungsdienstkonto erstellen:

    Der Name des ADMIN_SA-Dienstkontos ist beliebig. Sie können auch ein vorhandenes Dienstkonto verwenden, wenn es die in der Tabelle im vorherigen Abschnitt aufgeführten Rollen hat. Dies wird jedoch nicht empfohlen, da es gegen das Prinzip der geringsten Berechtigung verstößt.

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

    Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

  3. Erstellen Sie die Standarddienstkonten für die Workload Identity-Clusterauthentifizierung:

    Die Standarddienstkonten für die Workload Identity-Clusterauthentifizierung haben vordefinierte Namen, die Sie bei Bedarf anpassen können.

    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
    

    Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

IAM-Richtlinienbindungen für Dienstkonten hinzufügen

  1. Fügen Sie dem Dienstkonto ADMIN_SA IAM-Richtlinienbindungen für die erforderlichen Rollen hinzu:

    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. Fügen Sie dem Dienstkonto baremetal-controller IAM-Richtlinienbindungen für die erforderlichen Rollen hinzu:

    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. Fügen Sie dem Dienstkonto baremetal-cloud-ops IAM-Richtlinienbindungen für die erforderlichen Rollen hinzu:

    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. Gewähren Sie dem Dienstkonto baremetal-controller die Berechtigung, im Namen des Dienstkontos baremetal-gcr Zugriffstokens zu generieren:

    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
    

Workload Identity-Föderation für Ihre Cluster konfigurieren

Um Google Cloud Zugriff über die Identitätsföderation von Arbeitslasten für GKE zu gewähren, erstellen Sie eine IAM-Zulassungsrichtlinie, die einem Hauptkonto Zugriff auf eine bestimmteGoogle Cloud Ressource gewährt, das der Identität Ihrer Anwendung entspricht. In diesem Fall gewährt die Workload Identity-Föderation Zugriff auf bestimmte Operatoren im Cluster. Weitere Informationen zur Identitätsföderation von Arbeitslasten für GKE finden Sie in der IAM-Dokumentation unter Identitätsföderation von Arbeitslasten.

IAM-Richtlinienbindungen für den Cluster-Betriebsmitarbeiter hinzufügen

Mit den folgenden Befehlen wird dem Kubernetes-Dienstkonto anthos-cluster-operator die Möglichkeit gewährt, die Identität des Dienstkontos baremetal-controller zu übernehmen und im Namen des Clusters mit Google Cloud -Ressourcen zu interagieren:

  1. Gewähren Sie für jeden Cluster, der für die Clusterauthentifizierung mit Workload Identity konfiguriert ist (oder für die Verwendung der Clusterauthentifizierung mit Workload Identity vorgesehen ist), einschließlich des Bootstrap-Clusters, anthos-cluster-operator im Cluster die Berechtigung, sich als Dienstkonto baremetal-controller auszugeben:

    Im folgenden Befehl besteht principalSet aus dem Identitätspool der Arbeitslast und einem Kubernetes-Dienstkonto, anthos-cluster-operator, im Namespace 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
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUM: die automatisch generierte eindeutige Kennung für Ihr Projekt.

    • REGION: Der Standort der Flottenmitgliedschaft für Ihren Cluster. Standardmäßig ist das global. Weitere Informationen finden Sie unter Standort der Flottenmitgliedschaft.

    • CLUSTER_NAME ist der Name des Clusters. Standardmäßig lautet der Name des Bootstrap-Clusters bmctl-MACHINE_NAME.

  2. Prüfen Sie die Richtlinienbindungen für das Dienstkonto baremetal-controller:

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

    Die Antwort sollte in etwa so aussehen:

    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
    

IAM-Richtlinienbindungen für die Google Cloud Observability-Operatoren hinzufügen

Mit den folgenden Befehlen erhalten die folgenden Kubernetes-Dienstkonten für Google Cloud Observability die Möglichkeit, die Identität des Dienstkontos baremetal-cloud-ops zu übernehmen und im Namen des Clusters mit Google Cloud -Ressourcen zu interagieren:

  • cloud-audit-logging
  • gke-metrics-agent
  • kubestore-collector
  • metadata-agent
  • stackdriver-log-forwarder
  1. Gewähren Sie für jeden Cluster, der für die Clusterauthentifizierung mit Workload Identity konfiguriert ist (oder für die Verwendung der Clusterauthentifizierung mit Workload Identity vorgesehen ist), einschließlich des Bootstrap-Clusters, den Google Cloud Observability-Bearbeitern im Cluster die Berechtigung, sich als baremetal-cloud-ops-Dienstkonto auszugeben:

    In den folgenden Befehlen besteht principalSet aus dem Arbeitslastpool und einem Kubernetes-Dienstkonto, z. B. cloud-audit-logging, im Namespace 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. Prüfen Sie die Richtlinienbindungen für das Dienstkonto baremetal-cloud-ops:

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

    Die Antwort sollte in etwa so aussehen:

    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
    

Clusterkonfiguration

Der offensichtlichste Unterschied bei der Clusterkonfiguration für Cluster, die die Clusterauthentifizierung von Workload Identity verwenden, besteht darin, dass Sie keine Pfade zu heruntergeladenen Dienstkontoschlüsseln angeben.

  1. Wenn Sie die Clustereinstellungen in der Konfigurationsdatei eingeben, lassen Sie die Pfade zu den Dienstkontoschlüsseln im Abschnitt „Anmeldedaten“ leer, wie im folgenden Beispiel gezeigt:

    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. Optional können Sie benutzerdefinierte Namen für die Dienstkonten der Workload Identity-Clusterauthentifizierung festlegen:

    Wenn Sie benutzerdefinierte Namen angeben, können Sie vorhandene Dienstkonten verwenden. Wenn Sie denselben benutzerdefinierten Namen für mehrere Dienstkonten angeben, können Sie weniger Dienstkonten verwenden.

    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_GCR_GSA"
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: 1.30.0-gke.1930
        ...
    

Clustervorgang

Wenn Sie einen Cluster mit Workload Identity-Clusterauthentifizierung erstellen, aktualisieren oder löschen möchten, gehen Sie so vor:

  1. Melden Sie sich in der Google Cloud CLI an:

    gcloud auth login
    
  2. Erstellen Sie auf Ihrer Administrator-Workstation einen Schlüssel für das Dienstkonto ADMIN_SA und laden Sie ihn herunter:

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

    Ersetzen Sie TMP_KEY_FILE_PATH durch den Pfad einschließlich des Dateinamens der heruntergeladenen Schlüsseldatei.

  3. Autorisieren Sie den Zugriff auf Google Cloud mit dem Dienstkonto ADMIN_SA:

    gcloud auth activate-service-account ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --key-file=TMP_KEY_FILE_PATH
    
  4. Löschen Sie die heruntergeladene JSON-Schlüsseldatei:

    rm TMP_KEY_FILE_PATH
    
  5. Erstellen Sie auf Ihrer Administrator-Workstation die Umgebungsvariable GCP_ACCESS_TOKEN mit dem Wert eines vom Dienstkonto ADMIN_SA erstellten Zugriffstokens:

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

    Standardmäßig hat das Zugriffstoken eine Gültigkeitsdauer von 1 Stunde.

  6. Prüfen Sie, ob das Token vom ADMIN_SA-Dienstkonto mit der richtigen Ablaufzeit generiert wird:

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

    Die Antwort sollte Zeilen wie die folgenden enthalten:

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

    Der Ablaufzeitwert wird in Sekunden angegeben und sollte kleiner als 3600 sein. Das bedeutet, dass das Token in weniger als einer Stunde abläuft.

  7. Führen Sie einen bmctl-Befehl aus, um einen Cluster zu erstellen, zu aktualisieren oder zu löschen:

    Wenn bmctl erkennt, dass die Umgebungsvariable GCP_ACCESS_TOKEN festgelegt wurde, führt er eine Tokenbestätigung durch. Wenn das Token gültig ist, verwendet bmctl es für Clustervorgänge.

    Bei Clustern, für die die Workload Identity-Clusterauthentifizierung verwendet wird, muss die Umgebungsvariable GCP_ACCESS_TOKEN für die folgenden Befehle auf ein gültiges, aktives Zugriffstoken festgelegt sein:

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

Beschränkungen

Die Workload Identity-Clusterauthentifizierung befindet sich in der Vorabversion. Die folgenden Funktionen werden nicht unterstützt:

  • Proxyserver verwenden
  • VPC Service Controls

Nächste Schritte