L'integrazione tra Secret Manager e Google Kubernetes Engine (GKE) consente di archiviare dati sensibili come password e certificati utilizzati dai cluster GKE come secret in Secret Manager.
Questa pagina spiega come utilizzare il componente aggiuntivo Secret Manager per accedere ai secret archiviati in Secret Manager come volumi montati nei pod Kubernetes.
Questo processo prevede i seguenti passaggi:
- Abilita il componente aggiuntivo Secret Manager su un cluster GKE nuovo o esistente.
- Configura le applicazioni per l'autenticazione all'API Secret Manager.
- Definisci i secret da montare sui pod Kubernetes utilizzando un file YAML
SecretProviderClass. Il componente aggiuntivo Secret Manager supporta sia i secret globali che quelli regionali. - Crea un volume in cui verranno montati i secret. Una volta collegato il volume, le applicazioni nel container possono accedere ai dati nel file system del container.
Il componente aggiuntivo Secret Manager deriva dal driver CSI di Kubernetes Secrets Store open source e dal provider Google Secret Manager. Se utilizzi il driver CSI Secrets Store open source per accedere ai secret, puoi eseguire la migrazione al componente aggiuntivo Secret Manager. Per informazioni, consulta la pagina Eseguire la migrazione dal driver CSI Secrets Store esistente.
Vantaggi
Il componente aggiuntivo Secret Manager offre i seguenti vantaggi:
- Puoi utilizzare una soluzione completamente gestita e supportata per accedere ai secret di Secret Manager da GKE senza alcun overhead operativo.
- Non devi scrivere codice personalizzato per accedere ai secret archiviati in Secret Manager.
- Puoi archiviare e gestire tutti i tuoi secret centralmente in Secret Manager e accedere in modo selettivo ai secret dai pod GKE utilizzando il componente aggiuntivo Secret Manager. In questo modo, puoi utilizzare le funzionalità offerte da Secret Manager, come la crittografia CMEK, il controllo dell'accesso granulare, la rotazione gestita, la gestione del ciclo di vita e i log di controllo, oltre a utilizzare le funzionalità di Kubernetes, come il passaggio dei secret ai container sotto forma di volumi montati.
- Il componente aggiuntivo Secret Manager è supportato sia sui cluster Standard sia sui cluster Autopilot.
- Il componente aggiuntivo Secret Manager supporta i nodi che utilizzano immagini del nodo Container-Optimized OS o Ubuntu.
Limitazioni
Il componente aggiuntivo Secret Manager presenta le seguenti limitazioni:
Il componente aggiuntivo Secret Manager non supporta la funzionalità Sincronizza come secret Kubernetes, disponibile nel driver CSI Secrets Store open source. Se vuoi sincronizzare i secret archiviati in Secret Manager con i secret Kubernetes, utilizza la funzionalità di sincronizzazione dei secret integrata di Secret Manager. Per informazioni, vedi Sincronizzare i secret con i secret di Kubernetes.
Il componente aggiuntivo Secret Manager non supporta i nodi Windows Server.
Prima di iniziare
-
Abilita le API Secret Manager e Google Kubernetes Engine.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli. Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il comando
gcloud components update.Non puoi configurare manualmente il componente aggiuntivo Secret Manager utilizzando Google Cloud SDK o la console Google Cloud .
Assicurati che il cluster esegua GKE versione 1.27.14-gke.1042001 o successive con un'immagine del nodo Linux.
Se utilizzi un cluster GKE Standard, assicurati che Workload Identity Federation for GKE sia abilitato. Workload Identity Federation for GKE è abilitata per impostazione predefinita su un cluster Autopilot. I pod Kubernetes utilizzano Workload Identity Federation for GKE per l'autenticazione all'API Secret Manager.
Abilita il componente aggiuntivo Secret Manager
Puoi abilitare il componente aggiuntivo Secret Manager sia sui cluster Standard sia sui cluster Autopilot.
Abilita il componente aggiuntivo Secret Manager su un nuovo cluster GKE
Per abilitare il componente aggiuntivo Secret Manager durante la creazione del cluster, procedi nel seguente modo:
Console
-
Nella console Google Cloud , vai alla pagina Google Kubernetes Engine.
Fai clic su add_boxCrea.
Nella finestra di dialogo Crea cluster, fai clic su Configura.
Nel menu di navigazione, nella sezione Cluster, fai clic su Sicurezza.
Seleziona la casella di controllo Abilita Secret Manager.
Seleziona la casella di controllo Abilita Workload Identity.
Continua a configurare il cluster, quindi fai clic su Crea.
gcloud
{ Standard cluster}
Per abilitare il componente aggiuntivo Secret Manager su un nuovo cluster Standard, esegui questo comando:
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- CLUSTER_NAME: il nome del tuo cluster.
- LOCATION: la regione di Compute Engine per il cluster, ad esempio
us-central1. - VERSION: la versione specifica di GKE che
vuoi utilizzare. Assicurati che il cluster esegua GKE versione
1.27.14-gke.1042001 o successive. Se il
canale di rilascio
predefinito non include questa versione, utilizza il flag
--release-channelper scegliere un canale di rilascio che la includa. - PROJECT_ID: l'ID del tuo Google Cloud progetto.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud container clusters create CLUSTER_NAME \ --enable-secret-manager \ --location=LOCATION \ --cluster-version=VERSION \ --workload-pool=PROJECT_ID.svc.id.goog
Windows (PowerShell)
gcloud container clusters create CLUSTER_NAME ` --enable-secret-manager ` --location=LOCATION ` --cluster-version=VERSION ` --workload-pool=PROJECT_ID.svc.id.goog
Windows (cmd.exe)
gcloud container clusters create CLUSTER_NAME ^ --enable-secret-manager ^ --location=LOCATION ^ --cluster-version=VERSION ^ --workload-pool=PROJECT_ID.svc.id.goog
{ Autopilot cluster}
Per attivare il componente aggiuntivo Secret Manager su un nuovo cluster Autopilot, esegui questo comando:
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- CLUSTER_NAME: il nome del tuo cluster.
- VERSION: la versione specifica di GKE che vuoi utilizzare. Assicurati che il cluster esegua GKE versione 1.27.14-gke.1042001 o successive. Per impostare una versione specifica, vedi Impostare la versione e il canale di rilascio di un nuovo cluster Autopilot.
- LOCATION: la regione di Compute Engine per il cluster, ad esempio
us-central1.
Esegui questo comando:
Linux, macOS o 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
Dopo aver attivato il componente aggiuntivo Secret Manager, puoi utilizzare il driver CSI Secrets Store nei volumi Kubernetes utilizzando il nome del driver e del provisioner: secrets-store-gke.csi.k8s.io.
Abilita il componente aggiuntivo Secret Manager su un cluster GKE esistente
Per abilitare il componente aggiuntivo Secret Manager su un cluster esistente, procedi nel seguente modo:
Console
-
Nella console Google Cloud , vai alla pagina Google Kubernetes Engine.
Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.
Nella pagina dei dettagli del cluster, nella sezione Sicurezza, fai clic su Secret Manager.
Nella finestra di dialogo Modifica Secret Manager, seleziona la casella di controllo Abilita Secret Manager.
Fai clic su Salva modifiche.
gcloud
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- CLUSTER_NAME: il nome del cluster
- LOCATION: la regione di Compute Engine per il cluster, ad esempio
us-central1
Esegui questo comando:
Linux, macOS o 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 ^
Verificare l'installazione del componente aggiuntivo Secret Manager
Per verificare che il componente aggiuntivo Secret Manager sia installato sul cluster Kubernetes, esegui questo comando:
gcloud container clusters describe CLUSTER_NAME --location LOCATION | grep secretManagerConfig -A 4
Sostituisci quanto segue:
CLUSTER_NAME: il nome del clusterLOCATION: la posizione del cluster, ad esempious-central1
Configurare la rotazione automatica dei secret
Puoi configurare il componente aggiuntivo Secret Manager in modo che ruoti automaticamente i secret, in modo che i secret aggiornati in Secret Manager dopo il deployment iniziale del pod vengano inviati automaticamente e periodicamente al pod. La rotazione automatica dei secret montati consente alle applicazioni di ricevere automaticamente i secret aggiornati senza richiedere un riavvio o un intervento manuale. Questa funzionalità garantisce che le applicazioni utilizzino sempre i secret più aggiornati.
Tieni presente quanto segue in merito alla configurazione della rotazione automatica dei secret:
- La rotazione automatica dei secret è una configurazione facoltativa.
- Puoi configurare questa funzionalità al momento della creazione di un nuovo cluster o dell'aggiornamento di un cluster esistente.
- Puoi configurare la frequenza di rotazione automatica specificando l'intervallo di rotazione e l'unità dell'intervallo di rotazione.
- La rotazione automatica dei secret è supportata in GKE versione 1.32.2-gke.1059000 o successive.
Per configurare la rotazione automatica dei secret, devi abilitare la funzionalità
enable-secret-manager-rotation e configurare l'intervallo di rotazione impostando
secret-manager-rotation-interval.
Configura la rotazione automatica dei secret su un nuovo cluster GKE
Per configurare la rotazione automatica dei secret durante la creazione del cluster:
Console
{ Autopilot cluster}
-
Nella console Google Cloud , vai alla pagina Crea un cluster Autopilot.
Nel menu di navigazione, nella sezione Impostazioni avanzate, fai clic su Sicurezza.
Seleziona la casella di controllo Abilita Secret Manager.
Seleziona la casella di controllo Configura rotazione automatica.
Specifica l'Intervallo di rotazione e l'Unità intervallo di rotazione.
Continua a configurare il cluster, quindi fai clic su Crea.
{ Standard cluster}
-
Nella console Google Cloud , vai alla pagina Crea un cluster Kubernetes.
Nel menu di navigazione, nella sezione Cluster, fai clic su Sicurezza.
Seleziona la casella di controllo Abilita Secret Manager.
Seleziona la casella di controllo Configura rotazione automatica.
Specifica l'Intervallo di rotazione e l'Unità intervallo di rotazione.
Continua a configurare il cluster, quindi fai clic su Crea.
gcloud
{ Autopilot cluster}
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- CLUSTER_NAME: il nome del cluster
- VERSION: la versione specifica di GKE che
vuoi utilizzare. Assicurati che il cluster esegua GKE versione
1.27.14-gke.1042001 o successive. Se il
canale di rilascio
predefinito non include questa versione, utilizza il flag
--release-channelper scegliere un canale di rilascio che la includa. - LOCATION: la posizione del cluster, ad esempio
us-central1 - ROTATION_INTERVAL: l'intervallo di rotazione in secondi. Il valore deve essere un numero intero positivo seguito dal suffisso
s. Il valore minimo consentito è120s. Ad esempio, per impostare l'intervallo su 5 minuti, utilizza300s.
Esegui questo comando:
Linux, macOS o 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}
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- CLUSTER_NAME: il nome del cluster
- LOCATION: la
posizione del cluster, ad esempio
us-central1 - VERSION: la versione specifica di GKE che
vuoi utilizzare. Assicurati che il cluster esegua GKE versione
1.27.14-gke.1042001 o successive. Se il
canale di rilascio
predefinito non include questa versione, utilizza il flag
--release-channelper scegliere un canale di rilascio che la includa. - PROJECT_ID: l'ID del tuo Google Cloud progetto
- ROTATION_INTERVAL: l'intervallo di rotazione in secondi. Il valore deve essere un numero intero positivo seguito dal suffisso
s. Il valore minimo consentito è120s. Ad esempio, per impostare l'intervallo su 5 minuti, utilizza300s.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud container clusters create CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION \ --workload-pool=PROJECT_ID.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.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.svc.id.goog ^ --enable-secret-manager ^ --enable-secret-manager-rotation ^ --secret-manager-rotation-interval=ROTATION_INTERVAL
Configurare la rotazione automatica dei secret su un cluster GKE esistente
Per configurare la rotazione automatica dei secret in un cluster GKE esistente, procedi nel seguente modo:
Console
-
Nella console Google Cloud , vai alla pagina Cluster Kubernetes.
Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.
Nella pagina dei dettagli del cluster, fai clic su Modifica.
Nella sezione Sicurezza, fai clic su Secret Manager.
Nella finestra di dialogo Modifica Secret Manager, seleziona la casella di controllo Abilita Secret Manager.
Seleziona la casella di controllo Configura rotazione automatica.
Specifica l'Intervallo di rotazione e l'Unità intervallo di rotazione.
Fai clic su Salva modifiche.
gcloud
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- CLUSTER_NAME: il nome del cluster
- LOCATION: la posizione
del cluster, ad esempio
us-central1 - ROTATION_INTERVAL: l'intervallo di rotazione in secondi. Il valore deve essere un numero intero positivo seguito dal suffisso
s. Il valore minimo consentito è120s. Ad esempio, per impostare l'intervallo su 5 minuti, utilizza300s.
Esegui questo comando:
Linux, macOS o 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
Configura le applicazioni per l'autenticazione all'API Secret Manager
Il provider Google Secret Manager utilizza la workload identity del pod su cui è montato un secret per l'autenticazione all'API Secret Manager. Per consentire alle tue applicazioni di autenticarsi all'API Secret Manager utilizzando Workload Identity Federation for GKE, segui questi passaggi:
Crea un ServiceAccount Kubernetes o utilizza un ServiceAccount Kubernetes esistente nello stesso spazio dei nomi del pod in cui vuoi montare il secret.
Crea un criterio di autorizzazione Identity and Access Management (IAM) per il secret in Secret Manager.
I pod che utilizzano il service account Kubernetes configurato si autenticano automaticamente come identificatore principale IAM corrispondente al service account Kubernetes quando accedono all'API Secret Manager.
Crea un ServiceAccount Kubernetes
Salva il seguente manifest come
service-account.yaml:apiVersion: v1 kind: ServiceAccount metadata: name: KSA_NAME namespace: NAMESPACESostituisci quanto segue:
KSA_NAME: il nome del nuovo service account KubernetesNAMESPACE: il nome dello spazio dei nomi Kubernetes per il service account
Applica il manifest:
kubectl apply -f service-account.yamlCrea una policy di autorizzazione IAM che faccia riferimento al nuovo service account Kubernetes e concedigli l'autorizzazione per accedere al 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.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAMESostituisci quanto segue:
SECRET_NAME: il nome del secret in Secret ManagerPROJECT_NUMBER: il tuo Google Cloud numero di progetto numericoPROJECT_ID: l'ID progetto del progetto Google Cloud che contiene il cluster GKENAMESPACE: il nome dello spazio dei nomi Kubernetes per il service accountKSA_NAME: il nome del service account Kubernetes esistente
Utilizza un ServiceAccount Kubernetes esistente
Crea una policy di autorizzazione IAM che faccia riferimento al service account Kubernetes esistente e concedigli l'autorizzazione per accedere al 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.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME
Sostituisci quanto segue:
SECRET_NAME: il nome del secret in Secret ManagerPROJECT_NUMBER: il tuo Google Cloud numero di progetto numericoPROJECT_ID: l'ID progetto del progetto Google Cloud che contiene il cluster GKENAMESPACE: il nome dello spazio dei nomi Kubernetes per il service accountKSA_NAME: il nome del service account Kubernetes esistente
Definisci i secret da montare
Per specificare i secret da montare come file nel pod Kubernetes, crea un
manifest YAML SecretProviderClass ed elenca i secret da montare e il nome del file in cui
montarli. Segui questi passaggi:
Salva il seguente manifest come
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"Sostituisci quanto segue:
SECRET_PROVIDER_CLASS_NAME: il nome dell'oggettoSecretProviderClass.PROJECT_ID: il tuo ID progetto.SECRET_NAME: il nome del secret.SECRET_VERSION: la versione del secret. La versione del secret deve trovarsi nella stessa regione del cluster.FILENAME.txt: il nome del file in cui verrà montato il valore del secret. Puoi creare più file utilizzando le variabiliresourceNameepath.
Per un secret regionale,
resourceNameè il percorso completo alla risorsa secret che include la posizione del secret regionale. Ad esempio, "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME/versions/SECRET_VERSION"Applica il manifest:
kubectl apply -f app-secrets.yaml -n NAMESPACESostituisci
NAMESPACEcon il nome dello spazio dei nomi Kubernetes per ServiceAccount.Verifica che l'oggetto
SecretProviderClasssia stato creato:kubectl get SecretProviderClasses -n NAMESPACE
Configura un volume in cui verranno montati i secret
Salva la seguente configurazione come
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_NAMESostituisci quanto segue:
POD_NAME: il nome del pod Kubernetes in cui è montato il secretNAMESPACE: il nome dello spazio dei nomi Kubernetes per il service accountKSA_NAME: il ServiceAccount Kubernetes che hai configurato nel passaggio Configura le applicazioni per l'autenticazione all'API Secret ManagerIMAGE_NAME: il nome dell'immagine containerSECRET_PROVIDER_CLASS_NAME: il nome dell'oggettoSecretProviderClass
Solo nei cluster Standard, aggiungi quanto segue al campo
template.specper posizionare i pod nei pool di nodi che utilizzano Workload Identity Federation for GKE.Salta questo passaggio nei cluster Autopilot, che rifiutano questo nodeSelector perché ogni nodo utilizza Workload Identity Federation for GKE.
spec: nodeSelector: iam.gke.io/gke-metadata-server-enabled: "true"Applica la configurazione al cluster.
kubectl apply -f my-pod.yaml
Questo passaggio monta un volume mysecret in /var/secrets utilizzando il driver CSI
(secrets-store-gke.csi.k8s.io). Questo volume fa riferimento all'oggetto SecretProviderClass
che funge da fornitore.
Esegui la migrazione dal driver CSI Secrets Store Kubernetes open source esistente
Se utilizzi il driver CSI di Kubernetes Secrets Store open source e il provider Google Secret Manager, puoi eseguire la migrazione dei tuoi carichi di lavoro al componente aggiuntivo Secret Manager gestito.
Il componente aggiuntivo gestito e il driver open source possono essere eseguiti contemporaneamente sullo stesso cluster. Questa funzionalità ti consente di eseguire la migrazione incrementale di singoli spazi dei nomi e applicazioni senza tempi di inattività del cluster.
Per eseguire la migrazione al componente aggiuntivo Secret Manager:
- Abilita il componente aggiuntivo Secret Manager sul tuo cluster
- Crea manifest
SecretProviderClass - Aggiorna i manifest dei carichi di lavoro
- Verificare la migrazione
- Liberare spazio dalle vecchie risorse open source
Passaggio 1: attiva il componente aggiuntivo Secret Manager sul cluster
Abilita il componente aggiuntivo Secret Manager sul cluster GKE esistente:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--enable-secret-manager \
[--enable-secret-manager-rotation \
--secret-manager-rotation-interval=ROTATION_INTERVAL]
Sostituisci quanto segue:
- CLUSTER_NAME: il nome del cluster
- LOCATION: la posizione
del cluster, ad esempio
us-central1 - (Facoltativo) ROTATION_INTERVAL: la frequenza con cui i secret montati vengono aggiornati automaticamente, ad esempio
120so3600s. Il valore minimo consentito è60se il valore predefinito è120s.
Passaggio 2: crea i file manifest SecretProviderClass
Crea un manifest SecretProviderClass con provider: gke per ogni
applicazione. Ti consigliamo di aggiungere -gke al nome della risorsa in modo che le risorse SecretProviderClass vecchie e nuove possano coesistere durante gli aggiornamenti in sequenza.
Salva il seguente manifest come
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"Sostituisci quanto segue:
- SECRET_PROVIDER_CLASS_NAME-gke: il nome della nuova risorsa
SecretProviderClass - NAMESPACE: lo spazio dei nomi Kubernetes in cui viene eseguito il workload
- PROJECT_ID: il tuo Google Cloud ID progetto
- SECRET_NAME: il nome del secret in Secret Manager
- SECRET_VERSION: la versione del secret, ad esempio
latesto1 - FILENAME.txt: il nome del file in cui è montato il valore del secret
Per i secret regionali, specifica il percorso completo della risorsa, inclusa la località:
"projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME/versions/SECRET_VERSION"- SECRET_PROVIDER_CLASS_NAME-gke: il nome della nuova risorsa
Applica il nuovo manifest
SecretProviderClass:kubectl apply -f secret-provider-class-gke.yaml
Passaggio 3: aggiorna i manifest dei workload
Aggiorna i manifest di Pod o Deployment in modo che utilizzino il driver gestito
(secrets-store-gke.csi.k8s.io) e fai riferimento al nuovo nome SecretProviderClass.
Aggiorna la sezione
volumesdel manifest del workload (ad esempiodeployment.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 nameSostituisci quanto segue:
- CONTAINER_NAME: il nome del container nel workload
- IMAGE_NAME: il nome dell'immagine container
- SECRET_PROVIDER_CLASS_NAME-gke: il nome della nuova risorsa
SecretProviderClass
Applica il manifest del workload aggiornato per attivare un deployment in sequenza:
kubectl apply -f deployment.yaml
Passaggio 4: verifica la migrazione
Verifica che i tuoi carichi di lavoro utilizzino correttamente il componente aggiuntivo gestito:
Controlla che i pod siano stati implementati e abbiano raggiunto lo stato
Running:kubectl get pods -n NAMESPACESostituisci NAMESPACE con lo spazio dei nomi Kubernetes in cui viene eseguito il tuo workload.
Verifica che i secret siano montati correttamente e accessibili all'interno del container:
kubectl exec -it POD_NAME -n NAMESPACE -- cat /var/secrets/FILENAME.txtSostituisci quanto segue:
- POD_NAME: il nome del pod Kubernetes
- NAMESPACE: lo spazio dei nomi Kubernetes in cui viene eseguito il workload
- FILENAME.txt: il nome del file secret montato configurato in
SecretProviderClass
(Facoltativo) Se hai attivato la rotazione automatica, verifica gli aggiornamenti dei secret:
- Aggiungi una nuova versione del secret in Secret Manager.
- Attendi l'intervallo di rotazione configurato, ad esempio 120 secondi.
Ispeziona di nuovo il file secret montato all'interno del pod per verificare che il contenuto sia stato aggiornato senza riavviare il pod:
kubectl exec -it POD_NAME -n NAMESPACE -- cat /var/secrets/FILENAME.txt
Passaggio 5: libera spazio dalle vecchie risorse open source
Elimina le vecchie risorse
SecretProviderClass:kubectl delete secretproviderclass OLD_SECRET_PROVIDER_CLASS_NAME -n NAMESPACESostituisci quanto segue:
- OLD_SECRET_PROVIDER_CLASS_NAME: il nome della risorsa
SecretProviderClasslegacy, ad esempiomy-app-secrets - NAMESPACE: lo spazio dei nomi Kubernetes in cui viene eseguito il workload
- OLD_SECRET_PROVIDER_CLASS_NAME: il nome della risorsa
Se hai eseguito il deployment del plug-in del provider Google Secret Manager open source utilizzando un manifest, elimina il DaemonSet:
kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/secrets-store-csi-driver-provider-gcp/main/deploy/provider-gcp-plugin.yamlSe hai installato il driver CSI Secrets Store open source utilizzando Helm, disinstalla la release di Helm:
helm uninstall csi-secrets-store -n kube-system
Disattiva il componente aggiuntivo Secret Manager
Per disattivare il componente aggiuntivo Secret Manager su un cluster Standard esistente o su un cluster Autopilot, esegui questo comando:
Console
-
Nella console Google Cloud , vai alla pagina Google Kubernetes Engine.
Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.
Nella pagina dei dettagli del cluster, nella sezione Sicurezza, fai clic su Secret Manager.
Nella finestra di dialogo Modifica Secret Manager, deseleziona la casella di controllo Abilita Secret Manager.
Fai clic su Salva modifiche.
gcloud
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- CLUSTER_NAME: il nome del cluster
- REGION: la regione di Compute Engine per il cluster, ad esempio
us-central1
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud container clusters update CLUSTER_NAME \ --no-enable-secret-manager \ --region=REGION \
Windows (PowerShell)
gcloud container clusters update CLUSTER_NAME ` --no-enable-secret-manager ` --region=REGION `
Windows (cmd.exe)
gcloud container clusters update CLUSTER_NAME ^ --no-enable-secret-manager ^ --region=REGION ^