In diesem Dokument wird beschrieben, wie Sie die Clusterauthentifizierung mit Workload Identity für Google Distributed Cloud (nur Software) auf Bare Metal einrichten und verwenden. Anstelle von Dienstkontoschlüsseln werden bei der Workload Identity-Clusterauthentifizierung kurzlebige Tokens und die Workload Identity-Föderation verwendet, um Ihre Cluster zu erstellen und zu schützen. Die kurzlebigen Anmeldedaten für das Dienstkonto liegen in Form von OAuth 2.0-Zugriffstokens vor. Die Zugriffstokens laufen standardmäßig nach einer Stunde ab, mit Ausnahme von Image-Pull-Tokens, die nach 12 Stunden ablaufen.
Die Clusterauthentifizierung mit Workload Identity ist nur beim Erstellen neuer Cluster mit Version 1.30 und höher verfügbar. Sie können einen vorhandenen Cluster während eines Updates oder Upgrades nicht für die Verwendung der Workload Identity-Clusterauthentifizierung konfigurieren.
Im Schlüsselmodus, der Standardmethode zum Erstellen und Sichern von Clustern, werden dagegen heruntergeladene Dienstkontoschlüssel verwendet. Wenn Sie einen selbstverwalteten (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 Clusterauthentifizierung mit Workload Identity 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-Practice-Alternativen zu Dienstkontoschlüsseln. Weitere Informationen zu Dienstkonto-Tokens finden Sie unter Kurzlebige Anmeldedaten für das Dienstkonto. Weitere Informationen zur Workload Identity-Föderation finden Sie unter Workload Identity-Föderation.
Weniger Wartung: Dienstkontoschlüssel erfordern mehr Wartung. Das regelmäßige Rotieren und Sichern dieser Schlüssel kann einen erheblichen Verwaltungsaufwand bedeuten.
Da sich diese Funktion im Vorschaumodus befindet, gibt es einige bekannte Einschränkungen.
Hinweise
In den folgenden Abschnitten erstellen Sie Dienstkonten und weisen Rollen zu, die für die Clusterauthentifizierung mit Workload Identity erforderlich sind. Die Einrichtungsanleitung in diesem Dokument ersetzt nicht die Anleitung unter Google Cloud -Ressourcen einrichten. Sie ist zusätzlich zu den standardmäßigen Voraussetzungen für die reine Softwareinstallation von Google Distributed Cloud erforderlich. Die für die Clusterauthentifizierung mit Workload Identity erforderlichen Dienstkonten ähneln den in Google Cloud Ressourcen einrichten beschriebenen Dienstkonten. Sie haben jedoch eindeutige Namen, damit sie nicht mit Clustern in Konflikt geraten, die die Standardschlüssel für Dienstkonten 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 Clusterauthentifizierung mit Workload Identity erforderlich sind:
Dienstkonto | Zweck | Rollen |
---|---|---|
ADMIN_SA |
Mit diesem Dienstkonto generieren Sie Tokens. Jedes Token hat die Berechtigungen, die mit den Dienstkontorollen verknüpft sind. |
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 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 Artifact Registry herunterzuladen. | Keine |
Dienstkonten für die Clusterauthentifizierung mit Workload Identity 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 ihrer erforderlichen Rollen finden Sie in der Tabelle im vorherigen Abschnitt.
Dienstkonten erstellen
So erstellen Sie die Dienstkonten für die Clusterauthentifizierung mit Workload Identity:
Melden Sie sich auf Ihrer Administrator-Workstation in der Google Cloud CLI an:
gcloud auth login
Optional: Erstellen Sie das administrative Dienstkonto:
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. Das 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 IhresGoogle Cloud -Projekts.Erstellen Sie die Standarddienstkonten für die Clusterauthentifizierung mit Workload Identity:
Die Standarddienstkonten für die Clusterauthentifizierung mit Workload Identity haben vordefinierte Namen, die Sie 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 IhresGoogle Cloud -Projekts.
IAM-Richtlinienbindungen für Dienstkonten hinzufügen
Fügen Sie IAM-Richtlinienbindungen für die erforderlichen Rollen für das Dienstkonto
ADMIN_SA
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
Fügen Sie IAM-Richtlinienbindungen für die erforderlichen Rollen für das Dienstkonto
baremetal-controller
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
Fügen Sie IAM-Richtlinienbindungen für die erforderlichen Rollen für das Dienstkonto
baremetal-cloud-ops
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
Gewähren Sie dem Dienstkonto
baremetal-controller
die Berechtigung, Zugriffstokens im Namen des Dienstkontosbaremetal-gcr
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, das der Identität Ihrer Anwendung entspricht, Zugriff auf eine bestimmteGoogle Cloud -Ressource gewährt. 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 Clusteroperator hinzufügen
Mit den folgenden Befehlen wird dem Kubernetes-Dienstkonto anthos-cluster-operator
die Möglichkeit eingeräumt, die Identität des Dienstkontos baremetal-controller
zu übernehmen und im Namen des Clusters mit Google Cloud -Ressourcen zu interagieren:
Gewähren Sie für jeden Cluster, der für die Clusterauthentifizierung mit Workload Identity konfiguriert ist (oder für den die Clusterauthentifizierung mit Workload Identity geplant ist), einschließlich des Bootstrap-Clusters,
anthos-cluster-operator
im Cluster die Möglichkeit, dasbaremetal-controller
-Dienstkonto zu imitieren:Im folgenden Befehl besteht
principalSet
aus dem Arbeitslastidentitätspool und einem Kubernetes-Dienstkonto,anthos-cluster-operator
, im Namespacekube-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, der standardmäßigglobal
ist. Weitere Informationen finden Sie unter Standort der Flottenmitgliedschaft.CLUSTER_NAME
ist der Name des Clusters. Standardmäßig lautet der Name des Bootstrap-Clustersbmctl-MACHINE_NAME
.
Richtlinienbindungen für das Dienstkonto
baremetal-controller
prüfen: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 wird den folgenden Google Cloud Observability Kubernetes-Dienstkonten die Möglichkeit eingeräumt, 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
Erteilen Sie für jeden Cluster, der für die Clusterauthentifizierung mit Workload Identity konfiguriert ist (oder für die Clusterauthentifizierung mit Workload Identity verwendet werden soll), einschließlich des Bootstrap-Clusters, den Google Cloud Observability-Operatoren im Cluster die Möglichkeit, das
baremetal-cloud-ops
-Dienstkonto zu imitieren:In jedem der folgenden Befehle besteht
principalSet
aus dem Arbeitslastidentitätspool und einem Kubernetes-Dienstkonto, z. B.cloud-audit-logging
, im Namespacekube-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
Richtlinienbindungen für das Dienstkonto
baremetal-cloud-ops
prüfen: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 in der Clusterkonfiguration für Cluster, die die Workload Identity-Clusterauthentifizierung verwenden, besteht darin, dass Sie keine Pfade zu heruntergeladenen Dienstkontoschlüsseln angeben.
Wenn Sie die Clustereinstellungen in der Konfigurationsdatei ausfüllen, 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 ...
Optional können Sie benutzerdefinierte Namen für die Dienstkonten des Workload Identity-Clusterauthentifizierungsdienstes festlegen:
Wenn Sie benutzerdefinierte Namen angeben, können Sie vorhandene Dienstkonten verwenden. Achten Sie darauf, dass sich die von Ihnen angegebenen benutzerdefinierten Dienstkontonamen voneinander unterscheiden.
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 ...
Ersetzen Sie Folgendes:
CUSTOM_CONTROLLER_GSA
: Die E-Mail-Adresse des Dienstkontos, das vom Connect-Agent verwendet wird, um eine Verbindung zwischen Ihrem Cluster und Google Cloudaufrechtzuerhalten und Ihre Cluster zu registrieren.CUSTOM_CLOUD_OPS_GSA
: Die E-Mail-Adresse des Dienstkontos, das vom Stackdriver Agent verwendet wird, um Logs und Messwerte von Clustern nach Cloud Logging und Cloud Monitoring zu exportieren.CUSTOM_AR_GSA
: Die E-Mail-Adresse des Dienstkontos, das von Google Distributed Cloud zum Herunterladen von Container-Images aus Artifact Registry verwendet wird.
Clustervorgang
Wenn Sie einen Cluster erstellen, aktualisieren oder löschen möchten, der die Clusterauthentifizierung mit Workload Identity verwendet, gehen Sie so vor:
Melden Sie sich in der Google Cloud CLI an:
gcloud auth login
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.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
Löschen Sie die heruntergeladene JSON-Schlüsseldatei:
rm TMP_KEY_FILE_PATH
Erstellen Sie auf Ihrer Administrator-Workstation eine Umgebungsvariable
GCP_ACCESS_TOKEN
mit dem Wert eines Zugriffstokens, das vom DienstkontoADMIN_SA
erstellt wurde: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.
Prüfen Sie, ob das Token vom
ADMIN_SA
-Dienstkonto mit dem richtigen Ablaufdatum generiert wurde: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 Ablaufwert wird in Sekunden angegeben und sollte kleiner als
3600
sein. Das bedeutet, dass das Token in weniger als einer Stunde abläuft.Führen Sie einen
bmctl
-Befehl aus, um einen Cluster zu erstellen, zu aktualisieren oder zu löschen:Wenn
bmctl
erkennt, dass die UmgebungsvariableGCP_ACCESS_TOKEN
festgelegt wurde, wird die Tokenvalidierung durchgeführt. Wenn das Token gültig ist, verwendetbmctl
es für Clusteroperationen.Für Cluster, die die Clusterauthentifizierung mit Workload Identity verwenden, muss für die folgenden Befehle die Umgebungsvariable
GCP_ACCESS_TOKEN
auf ein gültiges, aktives Zugriffstoken gesetzt sein:bmctl create cluster -c CLUSTER_NAME
bmctl reset cluster -c CLUSTER_NAME
bmctl upgrade cluster -c CLUSTER_NAME
Beschränkungen
Während sich die Workload Identity-Clusterauthentifizierung in der Vorschau befindet, werden die folgenden Funktionen nicht unterstützt:
- Proxyserver verwenden
- VPC Service Controls
- Vorhandene Cluster im Schlüsselmodus für die Verwendung der Workload Identity-Clusterauthentifizierung aktualisieren