Durch die Integration von Secret Manager und Google Kubernetes Engine (GKE) können Sie sensible Daten wie Passwörter und Zertifikate, die von GKE-Clustern verwendet werden, als Secrets in Secret Manager speichern.
Auf dieser Seite wird erläutert, wie Sie mit dem Secret Manager-Add-on auf die in Secret Manager gespeicherten Secrets als Volumes zugreifen, die in Kubernetes-Pods bereitgestellt sind.
Dieser Vorgang umfasst folgende Schritte:
- Aktivieren Sie das Secret Manager-Add-on für einen neuen oder vorhandenen GKE-Cluster.
- Anwendungen für die Authentifizierung bei der Secret Manager API konfigurieren
- Definieren Sie mit einer
SecretProviderClass-YAML-Datei, welche Secrets in Kubernetes-Pods eingebunden werden sollen. Das Secret Manager-Add-on unterstützt sowohl globale als auch regionale Secrets. - Erstellen Sie ein Volume, in dem die Secrets bereitgestellt werden. Nachdem das Volume angehängt wurde, können Anwendungen im Container auf die Daten im Containerdateisystem zugreifen.
Das Secret Manager-Add-on basiert auf dem Open-Source-CSI-Treiber für Kubernetes Secret Store und dem Google Secret Manager-Anbieter. Wenn Sie den Open-Source-CSI-Treiber für Secrets Store verwenden, um auf Secrets zuzugreifen, können Sie zum Secret Manager-Add-on migrieren. Weitere Informationen finden Sie unter Von vorhandenem CSI-Treiber für Secrets-Speicher migrieren.
Vorteile
Das Secret Manager-Add-on bietet folgende Vorteile:
- Sie können eine vollständig verwaltete und unterstützte Lösung verwenden, um ohne Betriebsaufwand auf Secret Manager-Secrets in GKE zuzugreifen.
- Sie müssen keinen benutzerdefinierten Code schreiben, um auf in Secret Manager gespeicherte Secrets zuzugreifen.
- Sie können alle Ihre Secrets zentral in Secret Manager speichern und verwalten und mit dem Secret Manager-Add-on selektiv auf Secrets aus GKE-Pods zugreifen. So können Sie Funktionen von Secret Manager wie CMEK-Verschlüsselung, detaillierte Zugriffssteuerung, verwaltete Rotation, Lebenszyklusverwaltung und Audit-Logs nutzen und gleichzeitig Kubernetes-Funktionen wie das Übergeben von Secrets an Container in Form von eingebundenen Volumes verwenden.
- Das Secret Manager-Add-on wird sowohl in Standard-Clustern als auch in Autopilot-Clustern unterstützt.
- Das Secret Manager-Add-on unterstützt Knoten, die Knoten-Images für Container-Optimized OS oder Ubuntu verwenden.
Beschränkungen
Für das Secret Manager-Add-on gelten die folgenden Einschränkungen:
Das Secret Manager-Add-on unterstützt die Funktion Als Kubernetes-Secret synchronisieren nicht, die im Open-Source-Secrets Store CSI-Treiber verfügbar ist. Wenn Sie in Secret Manager gespeicherte Secrets mit Kubernetes-Secrets synchronisieren möchten, verwenden Sie die integrierte Secret-Synchronisierungsfunktion von Secret Manager. Weitere Informationen finden Sie unter Secrets mit Kubernetes Secrets synchronisieren.
Das Secret Manager-Add-on unterstützt keine Windows Server-Knoten.
Hinweis
-
Aktivieren Sie die Secret Manager API und die Google Kubernetes Engine API, falls sie noch nicht aktiviert sind.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components updateab.Sie können das Secret Manager-Add-on nicht manuell mit dem Google Cloud SDK oder der Cloud de Confiance -Konsole einrichten.
Achten Sie darauf, dass in Ihrem Cluster die GKE-Version 1.27.14-gke.1042001 oder höher mit einem Linux-Knoten-Image ausgeführt wird.
Wenn Sie einen GKE Standard-Cluster verwenden, muss Workload Identity Federation for GKE für Ihren Cluster aktiviert sein. Die Workload Identity-Föderation für GKE ist in einem Autopilot-Cluster standardmäßig aktiviert. Kubernetes-Pods verwenden die Workload Identity-Föderation für GKE, um sich bei der Secret Manager API zu authentifizieren.
Secret Manager-Add-on aktivieren
Sie können das Secret Manager-Add-on sowohl für Standard- als auch für Autopilot-Cluster aktivieren.
Secret Manager-Add-on in einem neuen GKE-Cluster aktivieren
So aktivieren Sie das Secret Manager-Add-on beim Erstellen des Clusters:
Console
-
Rufen Sie in der Cloud de Confiance Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf add_boxErstellen.
Klicken Sie im Dialogfeld Cluster erstellen auf Konfigurieren.
Klicken Sie im Navigationsmenü im Bereich Cluster auf Sicherheit.
Klicken Sie das Kästchen Secret Manager aktivieren an.
Klicken Sie das Kästchen Workload Identity aktivieren an.
Fahren Sie mit der Konfiguration des Clusters fort und klicken Sie dann auf Erstellen.
gcloud
{ Standard cluster}
Führen Sie den folgenden Befehl aus, um das Secret Manager-Add-on in einem neuen Standardcluster zu aktivieren:
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- CLUSTER_NAME: Der Name Ihres Clusters.
- LOCATION: die Compute Engine-Region für den Cluster, z. B.
us-central1. - VERSION: Die spezifische GKE-Version, die Sie verwenden möchten. Achten Sie darauf, dass in Ihrem Cluster die GKE-Version 1.27.14-gke.1042001 oder höher ausgeführt wird. Wenn die Standardversion des Release-Kanals diese Version nicht enthält, verwenden Sie das Flag
--release-channel, um einen Release-Kanal auszuwählen, der sie enthält. - PROJECT_ID: die ID Ihres Projekts in Cloud de Confiance by S3NS .
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud container clusters create CLUSTER_NAME \ --enable-secret-manager \ --location=LOCATION \ --cluster-version=VERSION \ --workload-pool=PROJECT_ID.s3ns.svc.id.goog
Windows (PowerShell)
gcloud container clusters create CLUSTER_NAME ` --enable-secret-manager ` --location=LOCATION ` --cluster-version=VERSION ` --workload-pool=PROJECT_ID.s3ns.svc.id.goog
Windows (cmd.exe)
gcloud container clusters create CLUSTER_NAME ^ --enable-secret-manager ^ --location=LOCATION ^ --cluster-version=VERSION ^ --workload-pool=PROJECT_ID.s3ns.svc.id.goog
{ Autopilot-Cluster}
Führen Sie den folgenden Befehl aus, um das Secret Manager-Add-on in einem neuen Autopilot-Cluster zu aktivieren:
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- CLUSTER_NAME: Der Name Ihres Clusters.
- VERSION: Die spezifische GKE-Version, die Sie verwenden möchten. Achten Sie darauf, dass in Ihrem Cluster die GKE-Version 1.27.14-gke.1042001 oder höher ausgeführt wird. Informationen zum Festlegen einer bestimmten Version finden Sie unter Version und Release-Version eines neuen Autopilot-Clusters festlegen.
- LOCATION: die Compute Engine-Region für den Cluster, z. B.
us-central1.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud container clusters create-auto CLUSTER_NAME \ --enable-secret-manager \ --cluster-version=VERSION \ --location=LOCATION
Windows (PowerShell)
gcloud container clusters create-auto CLUSTER_NAME ` --enable-secret-manager ` --cluster-version=VERSION ` --location=LOCATION
Windows (cmd.exe)
gcloud container clusters create-auto CLUSTER_NAME ^ --enable-secret-manager ^ --cluster-version=VERSION ^ --location=LOCATION
Nachdem Sie das Secret Manager-Add-on aktiviert haben, können Sie den Secrets Store CSI-Treiber in Kubernetes-Volumes mit dem Namen des Treibers und des Bereitstellers verwenden: secrets-store-gke.csi.k8s.io.
Secret Manager-Add-on in einem vorhandenen GKE-Cluster aktivieren
So aktivieren Sie das Secret Manager-Add-on für einen vorhandenen Cluster:
Console
-
Rufen Sie in der Cloud de Confiance Console die Seite Google Kubernetes Engine auf.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf der Cluster-Detailseite im Bereich Sicherheit auf Secret Manager.
Wählen Sie im Dialogfeld Secret Manager bearbeiten das Kästchen Secret Manager aktivieren aus.
Klicken Sie auf Änderungen speichern.
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- CLUSTER_NAME: der Name Ihres Clusters
- LOCATION: die Compute Engine-Region für den Cluster, z. B.
us-central1
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud container clusters update CLUSTER_NAME \ --enable-secret-manager \ --location=LOCATION
Windows (PowerShell)
gcloud container clusters update CLUSTER_NAME ` --enable-secret-manager ` --location=LOCATION
Windows (cmd.exe)
gcloud container clusters update CLUSTER_NAME ^ --enable-secret-manager ^ --location=LOCATION
Installation des Secret Manager-Add-ons prüfen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob das Secret Manager-Add-on im Kubernetes-Cluster installiert ist:
gcloud container clusters describe CLUSTER_NAME --location LOCATION | grep secretManagerConfig -A 4
Ersetzen Sie Folgendes:
CLUSTER_NAMEist der Name des Clusters.LOCATION: Der Standort Ihres Clusters, z. B.us-central1
Automatische Rotation von Secrets konfigurieren
Sie können das Secret Manager-Add-on so konfigurieren, dass Secrets automatisch rotiert werden. Secrets, die nach der ersten Bereitstellung des Pods in Secret Manager aktualisiert werden, werden dann automatisch und regelmäßig an den Pod übertragen. Durch die automatische Rotation von eingebundenen Secrets erhalten Anwendungen automatisch aktualisierte Secrets, ohne dass ein Neustart oder manueller Eingriff erforderlich ist. Diese Funktion sorgt dafür, dass Anwendungen immer die aktuellsten Secrets verwenden.
Beachten Sie beim Konfigurieren der automatischen Rotation von Secrets Folgendes:
- Die automatische Rotation von Secrets ist eine optionale Konfiguration.
- Sie können diese Funktion beim Erstellen eines neuen Clusters oder beim Aktualisieren eines vorhandenen Clusters konfigurieren.
- Sie können die Häufigkeit der automatischen Rotation konfigurieren, indem Sie das Rotationsintervall und die Rotationsintervalleinheit angeben.
- Die automatische Rotation von Secrets wird in GKE-Version 1.32.2-gke.1059000 oder höher unterstützt.
Wenn Sie die automatische Rotation von Secrets konfigurieren möchten, müssen Sie die Funktion enable-secret-manager-rotation aktivieren und das Rotationsintervall durch Festlegen von secret-manager-rotation-interval konfigurieren.
Automatische Rotation von Secrets in einem neuen GKE-Cluster konfigurieren
So konfigurieren Sie die automatische Rotation von Secrets beim Erstellen des Clusters:
Console
{ Autopilot-Cluster}
-
Rufen Sie in der Cloud de Confiance Console die Seite Autopilot-Cluster erstellen auf.
Klicken Sie im Navigationsmenü im Bereich Erweiterte Einstellungen auf Sicherheit.
Klicken Sie das Kästchen Secret Manager aktivieren an.
Klicken Sie das Kästchen Automatische Rotation konfigurieren an.
Geben Sie das Rotationsintervall und die Einheit des Rotationsintervalls an.
Fahren Sie mit der Konfiguration des Clusters fort und klicken Sie dann auf Erstellen.
{ Standard cluster}
-
Rufen Sie in der Cloud de Confiance Console die Seite Kubernetes-Cluster erstellen auf.
Klicken Sie im Navigationsmenü im Bereich Cluster auf Sicherheit.
Klicken Sie das Kästchen Secret Manager aktivieren an.
Klicken Sie das Kästchen Automatische Rotation konfigurieren an.
Geben Sie das Rotationsintervall und die Einheit des Rotationsintervalls an.
Fahren Sie mit der Konfiguration des Clusters fort und klicken Sie dann auf Erstellen.
gcloud
{ Autopilot-Cluster}
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- CLUSTER_NAME ist der Name des Clusters.
- VERSION: Die spezifische GKE-Version, die Sie verwenden möchten. Achten Sie darauf, dass in Ihrem Cluster die GKE-Version 1.27.14-gke.1042001 oder höher ausgeführt wird. Wenn die Standardversion des Release-Kanals diese Version nicht enthält, verwenden Sie das Flag
--release-channel, um einen Release-Kanal auszuwählen, der sie enthält. - LOCATION: Der Standort Ihres Clusters, z. B.
us-central1 - ROTATION_INTERVAL: Das Rotationsintervall in Sekunden. Der Wert muss eine positive Ganzzahl sein, gefolgt vom Suffix
s. Der zulässige Mindestwert ist120s. Wenn Sie beispielsweise das Intervall auf 5 Minuten festlegen möchten, verwenden Sie300s.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud container clusters create CLUSTER_NAME \ --cluster-version=VERSION \ --location=LOCATION \ --enable-secret-manager \ --enable-secret-manager-rotation \ --secret-manager-rotation-interval=ROTATION_INTERVAL
Windows (PowerShell)
gcloud container clusters create CLUSTER_NAME ` --cluster-version=VERSION ` --location=LOCATION ` --enable-secret-manager ` --enable-secret-manager-rotation ` --secret-manager-rotation-interval=ROTATION_INTERVAL
Windows (cmd.exe)
gcloud container clusters create CLUSTER_NAME ^ --cluster-version=VERSION ^ --location=LOCATION ^ --enable-secret-manager ^ --enable-secret-manager-rotation ^ --secret-manager-rotation-interval=ROTATION_INTERVAL
{ Standard cluster}
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- CLUSTER_NAME ist der Name des Clusters.
- LOCATION: Der Standort Ihres Clusters, z. B.
us-central1. - VERSION: Die spezifische GKE-Version, die Sie verwenden möchten. Achten Sie darauf, dass in Ihrem Cluster die GKE-Version 1.27.14-gke.1042001 oder höher ausgeführt wird. Wenn die Standardversion des Release-Kanals diese Version nicht enthält, verwenden Sie das Flag
--release-channel, um einen Release-Kanal auszuwählen, der sie enthält. - PROJECT_ID: die ID Ihres Cloud de Confiance by S3NS -Projekts
- ROTATION_INTERVAL: Das Rotationsintervall in Sekunden. Der Wert muss eine positive Ganzzahl sein, gefolgt vom Suffix
s. Der zulässige Mindestwert ist120s. Wenn Sie beispielsweise das Intervall auf 5 Minuten festlegen möchten, verwenden Sie300s.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud container clusters create CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION \ --workload-pool=PROJECT_ID.s3ns.svc.id.goog \ --enable-secret-manager \ --enable-secret-manager-rotation \ --secret-manager-rotation-interval=ROTATION_INTERVAL
Windows (PowerShell)
gcloud container clusters create CLUSTER_NAME ` --location=LOCATION ` --cluster-version=VERSION ` --workload-pool=PROJECT_ID.s3ns.svc.id.goog ` --enable-secret-manager ` --enable-secret-manager-rotation ` --secret-manager-rotation-interval=ROTATION_INTERVAL
Windows (cmd.exe)
gcloud container clusters create CLUSTER_NAME ^ --location=LOCATION ^ --cluster-version=VERSION ^ --workload-pool=PROJECT_ID.s3ns.svc.id.goog ^ --enable-secret-manager ^ --enable-secret-manager-rotation ^ --secret-manager-rotation-interval=ROTATION_INTERVAL
Automatische Rotation von Secrets in einem vorhandenen GKE-Cluster konfigurieren
So konfigurieren Sie die automatische Rotation von Secrets in einem vorhandenen GKE-Cluster:
Console
-
Rufen Sie in der Cloud de Confiance Console die Seite Kubernetes-Cluster auf.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf der Cluster-Detailseite auf Bearbeiten.
Klicken Sie im Bereich Sicherheit auf Secret Manager.
Wählen Sie im Dialogfeld Secret Manager bearbeiten das Kästchen Secret Manager aktivieren aus.
Klicken Sie das Kästchen Automatische Rotation konfigurieren an.
Geben Sie das Rotationsintervall und die Einheit des Rotationsintervalls an.
Klicken Sie auf Änderungen speichern.
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- CLUSTER_NAME ist der Name des Clusters.
- LOCATION: Der Standort Ihres Clusters, z. B.
us-central1. - ROTATION_INTERVAL: Das Rotationsintervall in Sekunden. Der Wert muss eine positive Ganzzahl sein, gefolgt vom Suffix
s. Der zulässige Mindestwert ist120s. Wenn Sie beispielsweise das Intervall auf 5 Minuten festlegen möchten, verwenden Sie300s.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud container clusters update CLUSTER_NAME \ --enable-secret-manager \ --location=LOCATION \ --enable-secret-manager-rotation \ --secret-manager-rotation-interval=ROTATION_INTERVAL
Windows (PowerShell)
gcloud container clusters update CLUSTER_NAME ` --enable-secret-manager ` --location=LOCATION ` --enable-secret-manager-rotation ` --secret-manager-rotation-interval=ROTATION_INTERVAL
Windows (cmd.exe)
gcloud container clusters update CLUSTER_NAME ^ --enable-secret-manager ^ --location=LOCATION ^ --enable-secret-manager-rotation ^ --secret-manager-rotation-interval=ROTATION_INTERVAL
Anwendungen für die Authentifizierung bei der Secret Manager API konfigurieren
Der Google Secret Manager-Anbieter verwendet die Arbeitslastidentität des Pods, in den ein Secret eingebunden ist, wenn er sich bei der Secret Manager API authentifiziert. So ermöglichen Sie es Ihren Anwendungen, sich mit Workload Identity Federation for GKE bei der Secret Manager API zu authentifizieren:
Erstellen Sie ein Kubernetes-ServiceAccount oder verwenden Sie ein vorhandenes Kubernetes-ServiceAccount im selben Namespace wie der Pod, in den Sie das Secret einbinden möchten.
Erstellen Sie eine IAM-Richtlinie (Identity and Access Management) für das Secret in Secret Manager.
Pods, die das konfigurierte Kubernetes-Dienstkonto verwenden, werden beim Zugriff auf die Secret Manager API automatisch als die IAM-Haupt-ID authentifiziert, die dem Kubernetes-Dienstkonto entspricht.
Kubernetes-Dienstkonto erstellen
Speichern Sie das folgende Manifest als
service-account.yaml:apiVersion: v1 kind: ServiceAccount metadata: name: KSA_NAME namespace: NAMESPACEErsetzen Sie Folgendes:
KSA_NAME: der Name des neuen Kubernetes-ServiceAccountNAMESPACE: der Name des Kubernetes-Namespace für das ServiceAccount
Wenden Sie das Manifest an:
kubectl apply -f service-account.yamlErstellen Sie eine IAM-Zulassungsrichtlinie, die auf das neue Kubernetes-ServiceAccount verweist, und gewähren Sie ihm die Berechtigung für den Zugriff auf das Secret:
gcloud secrets add-iam-policy-binding SECRET_NAME \ --role=roles/secretmanager.secretAccessor \ --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAMEErsetzen Sie Folgendes:
SECRET_NAME: Der Name des Secrets im Secret ManagerPROJECT_NUMBER: Ihre numerische Cloud de Confiance ProjektnummerPROJECT_ID: Die Projekt-ID des Cloud de Confiance by S3NS -Projekts, das Ihren GKE-Cluster enthält.NAMESPACE: der Name des Kubernetes-Namespace für das ServiceAccountKSA_NAME: der Name Ihres vorhandenen Kubernetes-ServiceAccount
Vorhandenes Kubernetes-ServiceAccount verwenden
Erstellen Sie eine IAM-Zulassungsrichtlinie, die auf das vorhandene Kubernetes-ServiceAccount verweist, und gewähren Sie ihm die Berechtigung für den Zugriff auf das Secret:
gcloud secrets add-iam-policy-binding SECRET_NAME \
--role=roles/secretmanager.secretAccessor \
--member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME
Ersetzen Sie Folgendes:
SECRET_NAME: Der Name des Secrets im Secret ManagerPROJECT_NUMBER: Ihre numerische Cloud de Confiance ProjektnummerPROJECT_ID: Die Projekt-ID des Cloud de Confiance by S3NS -Projekts, das Ihren GKE-Cluster enthält.NAMESPACE: der Name des Kubernetes-Namespace für das ServiceAccountKSA_NAME: der Name Ihres vorhandenen Kubernetes-ServiceAccount
Festlegen, welche Secrets bereitgestellt werden sollen
Wenn Sie angeben möchten, welche Secrets als Dateien im Kubernetes-Pod bereitgestellt werden sollen, erstellen Sie ein SecretProviderClass-YAML-Manifest und listen Sie die Secrets auf, die bereitgestellt werden sollen, sowie den Dateinamen, unter dem sie bereitgestellt werden sollen. Gehen Sie so vor:
Speichern Sie das folgende Manifest als
app-secrets.yaml:apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: SECRET_PROVIDER_CLASS_NAME spec: provider: gke parameters: secrets: | - resourceName: "projects/PROJECT_ID/secrets/SECRET_NAME/versions/SECRET_VERSION" path: "FILENAME.txt"Ersetzen Sie Folgendes:
SECRET_PROVIDER_CLASS_NAME: der Name für IhrSecretProviderClass-Objekt.PROJECT_ID: Ihre Projekt-ID.SECRET_NAME: der Secret-Name.SECRET_VERSION: die Secret-Version. Die Secret-Version muss sich in derselben Region wie der Cluster befinden.FILENAME.txt: Der Dateiname, in dem der Secret-Wert bereitgestellt wird. Sie können mehrere Dateien mit den VariablenresourceNameundpatherstellen.
Bei einem regionalen Secret ist
resourceNameder vollständige Pfad zur Secret-Ressource, der den Speicherort des regionalen Secrets enthält. Beispiel: „projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME/versions/SECRET_VERSION“Wenden Sie das Manifest an:
kubectl apply -f app-secrets.yaml -n NAMESPACEErsetzen Sie
NAMESPACEdurch den Namen des Kubernetes-Namespace für das Dienstkonto.Prüfen Sie, ob das
SecretProviderClass-Objekt erstellt wurde:kubectl get SecretProviderClasses -n NAMESPACE
Volume konfigurieren, in dem die Secrets bereitgestellt werden
Speichern Sie die folgende Konfiguration als
my-pod.yaml:apiVersion: v1 kind: Pod metadata: name: POD_NAME namespace: NAMESPACE spec: serviceAccountName: KSA_NAME containers: - image: IMAGE_NAME imagePullPolicy: IfNotPresent name: POD_NAME resources: requests: cpu: 100m stdin: true stdinOnce: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File tty: true volumeMounts: - mountPath: "/var/secrets" name: mysecret volumes: - name: mysecret csi: driver: secrets-store-gke.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: SECRET_PROVIDER_CLASS_NAMEErsetzen Sie Folgendes:
POD_NAME: der Name des Kubernetes-Pods, in dem das Secret eingebunden istNAMESPACE: der Name des Kubernetes-Namespace für das ServiceAccountKSA_NAME: Das Kubernetes-Dienstkonto, das Sie im Schritt Anwendungen für die Authentifizierung bei der Secret Manager API konfigurieren eingerichtet haben.IMAGE_NAMEist der Name des Container-Images.SECRET_PROVIDER_CLASS_NAME: der Name für IhrSecretProviderClass-Objekt
Nur in Standardclustern: Fügen Sie dem Feld
template.specFolgendes hinzu, um die Pods in Knotenpools zu platzieren, die Workload Identity Federation for GKE verwenden.In Autopilot-Clustern wird dieser Schritt übersprungen, sodass dieser nodeSelector abgelehnt wird, da jeder Knoten Workload Identity Federation for GKE verwendet.
spec: nodeSelector: iam.gke.io/gke-metadata-server-enabled: "true"Wenden Sie die Konfiguration auf Ihren Cluster an.
kubectl apply -f my-pod.yaml
In diesem Schritt wird ein Volume mysecret unter /var/secrets mit dem CSI-Treiber (secrets-store-gke.csi.k8s.io) bereitgestellt. Dieses Volume verweist auf das SecretProviderClass-Objekt, das als Anbieter fungiert.
Vom vorhandenen Open-Source-CSI-Treiber für Kubernetes Secrets Store migrieren
Wenn Sie den Open-Source-CSI-Treiber für Kubernetes Secret Store und den Google Secret Manager-Anbieter verwenden, können Sie Ihre Arbeitslasten zum verwalteten Secret Manager-Add-on migrieren.
Das verwaltete Add-on und der Open-Source-Treiber können gleichzeitig im selben Cluster ausgeführt werden. So können Sie einzelne Anwendungen und Namespaces inkrementell migrieren, ohne dass es zu Cluster-Ausfallzeiten kommt.
So migrieren Sie zum Secret Manager-Add-on:
- Secret Manager-Add-on für Ihren Cluster aktivieren
SecretProviderClass-Manifeste erstellen- Arbeitslastmanifeste aktualisieren
- Migration überprüfen
- Alte Open-Source-Ressourcen bereinigen
Schritt 1: Secret Manager-Add-on für Ihren Cluster aktivieren
Aktivieren Sie das Secret Manager-Add-on in Ihrem vorhandenen GKE-Cluster:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--enable-secret-manager \
[--enable-secret-manager-rotation \
--secret-manager-rotation-interval=ROTATION_INTERVAL]
Ersetzen Sie Folgendes:
- CLUSTER_NAME: der Name Ihres Clusters
- LOCATION: Der Standort Ihres Clusters, z. B.
us-central1. - (Optional) ROTATION_INTERVAL: Die Häufigkeit, mit der eingebundene Secrets automatisch aktualisiert werden, z. B.
120soder3600s. Der zulässige Mindestwert ist60sund der Standardwert ist120s.
Schritt 2: SecretProviderClass-Manifeste erstellen
Erstellen Sie für jede Anwendung ein SecretProviderClass-Manifest mit provider: gke. Wir empfehlen, dem Ressourcennamen -gke anzuhängen, damit die alten und neuen SecretProviderClass-Ressourcen während der laufenden Updates nebeneinander existieren können.
Speichern Sie das folgende Manifest als
secret-provider-class-gke.yaml:apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: SECRET_PROVIDER_CLASS_NAME-gke # Append -gke to coexist with existing SPC namespace: NAMESPACE spec: provider: gke # Changed from 'gcp' parameters: secrets: | - resourceName: "projects/PROJECT_ID/secrets/SECRET_NAME/versions/SECRET_VERSION" path: "FILENAME.txt"Ersetzen Sie Folgendes:
- SECRET_PROVIDER_CLASS_NAME-gke: der Name der neuen
SecretProviderClass-Ressource - NAMESPACE: der Kubernetes-Namespace, in dem Ihre Arbeitslast ausgeführt wird
- PROJECT_ID: Ihre Cloud de Confiance by S3NS Projekt-ID
- SECRET_NAME: Der Name des Secrets im Secret Manager.
- SECRET_VERSION: die Secret-Version, z. B.
latestoder1 - FILENAME.txt: der Dateiname, in dem der Secret-Wert bereitgestellt wird
Geben Sie für regionale Secrets den vollständigen Ressourcenpfad einschließlich des Standorts an:
"projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME/versions/SECRET_VERSION"- SECRET_PROVIDER_CLASS_NAME-gke: der Name der neuen
Wenden Sie das neue
SecretProviderClass-Manifest an:kubectl apply -f secret-provider-class-gke.yaml
Schritt 3: Arbeitslastmanifeste aktualisieren
Aktualisieren Sie Ihre Pod- oder Deployment-Manifeste, damit der verwaltete Treiber (secrets-store-gke.csi.k8s.io) verwendet wird und auf den neuen Namen SecretProviderClass verwiesen wird.
Aktualisieren Sie den Abschnitt
volumesIhres Arbeitslastmanifests (z. B.deployment.yaml):spec: containers: - name: CONTAINER_NAME image: IMAGE_NAME volumeMounts: - name: secrets-volume mountPath: "/var/secrets" readOnly: true volumes: - name: secrets-volume csi: driver: secrets-store-gke.csi.k8s.io # Changed from 'secrets-store.csi.k8s.io' readOnly: true volumeAttributes: secretProviderClass: SECRET_PROVIDER_CLASS_NAME-gke # Reference new SPC nameErsetzen Sie Folgendes:
- CONTAINER_NAME: der Name des Containers in Ihrer Arbeitslast
- IMAGE_NAME: der Name Ihres Container-Images
- SECRET_PROVIDER_CLASS_NAME-gke: der Name der neuen
SecretProviderClass-Ressource
Wenden Sie das aktualisierte Arbeitslastmanifest an, um ein Rolling Deployment auszulösen:
kubectl apply -f deployment.yaml
Schritt 4: Migration überprüfen
Prüfen Sie, ob Ihre Arbeitslasten das verwaltete Add-on erfolgreich verwenden:
Prüfen Sie, ob Ihre Pods bereitgestellt wurden und den Status
Runningerreicht haben:kubectl get pods -n NAMESPACEErsetzen Sie NAMESPACE durch den Kubernetes-Namespace, in dem Ihre Arbeitslast ausgeführt wird.
Prüfen Sie, ob Secrets korrekt bereitgestellt wurden und im Container darauf zugegriffen werden kann:
kubectl exec -it POD_NAME -n NAMESPACE -- cat /var/secrets/FILENAME.txtErsetzen Sie Folgendes:
- POD_NAME: der Name Ihres Kubernetes-Pods
- NAMESPACE: der Kubernetes-Namespace, in dem Ihre Arbeitslast ausgeführt wird
- FILENAME.txt: der Name der eingebundenen Secret-Datei, die in Ihrer
SecretProviderClasskonfiguriert ist
Optional: Wenn Sie die automatische Rotation aktiviert haben, prüfen Sie die Secret-Aktualisierungen:
- Fügen Sie in Secret Manager eine neue Version des Secrets hinzu.
- Warten Sie das konfigurierte Rotationsintervall ab, z. B. 120 Sekunden.
Sehen Sie sich die eingebundene Secret-Datei noch einmal im Pod an, um zu prüfen, ob der Inhalt aktualisiert wurde, ohne dass der Pod neu gestartet wurde:
kubectl exec -it POD_NAME -n NAMESPACE -- cat /var/secrets/FILENAME.txt
Schritt 5: Alte Open-Source-Ressourcen bereinigen
Löschen Sie die alten
SecretProviderClass-Ressourcen:kubectl delete secretproviderclass OLD_SECRET_PROVIDER_CLASS_NAME -n NAMESPACEErsetzen Sie Folgendes:
- OLD_SECRET_PROVIDER_CLASS_NAME: Der Name Ihrer Legacy-
SecretProviderClass-Ressource, z. B.my-app-secrets. - NAMESPACE: der Kubernetes-Namespace, in dem Ihre Arbeitslast ausgeführt wird
- OLD_SECRET_PROVIDER_CLASS_NAME: Der Name Ihrer Legacy-
Wenn Sie das Open-Source-Plugin für den Google Secret Manager-Anbieter mit einem Manifest bereitgestellt haben, löschen Sie das DaemonSet:
kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/secrets-store-csi-driver-provider-gcp/main/deploy/provider-gcp-plugin.yamlWenn Sie den Open-Source-CSI-Treiber für Secrets-Speicher mit Helm installiert haben, deinstallieren Sie die Helm-Version:
helm uninstall csi-secrets-store -n kube-system
Secret Manager-Add-on deaktivieren
Führen Sie den folgenden Befehl aus, um das Secret Manager-Add-on in einem vorhandenen Standard-Cluster oder in einem Autopilot-Cluster zu deaktivieren:
Console
-
Rufen Sie in der Cloud de Confiance Console die Seite Google Kubernetes Engine auf.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf der Cluster-Detailseite im Bereich Sicherheit auf Secret Manager.
Entfernen Sie im Dialogfeld Secret Manager bearbeiten das Häkchen aus dem Kästchen Secret Manager aktivieren.
Klicken Sie auf Änderungen speichern.
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- CLUSTER_NAME: der Name Ihres Clusters
- LOCATION: der Compute Engine-Standort für den Cluster, z. B.
us-central1
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud container clusters update CLUSTER_NAME \ --no-enable-secret-manager \ --location=LOCATION
Windows (PowerShell)
gcloud container clusters update CLUSTER_NAME ` --no-enable-secret-manager ` --location=LOCATION
Windows (cmd.exe)
gcloud container clusters update CLUSTER_NAME ^ --no-enable-secret-manager ^ --location=LOCATION