L'intégration entre Secret Manager et Google Kubernetes Engine (GKE) vous permet de stocker des données sensibles telles que les mots de passe et les certificats utilisés par les clusters GKE en tant que secrets dans Secret Manager.
Cette page explique comment utiliser le module complémentaire Secret Manager pour accéder aux secrets stockés dans Secret Manager en tant que volumes installés dans des pods Kubernetes.
Ce processus comprend les étapes suivantes :
- Activez le module complémentaire Secret Manager sur un cluster GKE nouveau ou existant, et configurez éventuellement la rotation automatique des secrets.
- Configurer les applications pour qu'elles s'authentifient auprès de l'API Secret Manager
- Définissez les secrets à monter sur les pods Kubernetes à l'aide d'un fichier YAML
SecretProviderClass. Le module complémentaire Secret Manager est compatible avec les secrets globaux et régionaux. - Créez un volume dans lequel les secrets seront installés. Une fois le volume associé, les applications du conteneur peuvent accéder aux données dans le système de fichiers du conteneur.
Le module complémentaire Secret Manager est dérivé du pilote CSI Kubernetes Secret Store Open Source et du fournisseur Google Secret Manager. Si vous utilisez le pilote CSI Secrets Store Open Source pour accéder aux secrets, vous pouvez migrer vers le module complémentaire Secret Manager. Pour en savoir plus, consultez Migrer depuis le pilote CSI Secrets Store existant.
Avantages
Le module complémentaire Secret Manager offre les avantages suivants :
- Vous pouvez utiliser une solution entièrement gérée et compatible pour accéder aux secrets Secret Manager depuis GKE sans frais opérationnels.
- Vous n'avez pas besoin d'écrire de code personnalisé pour accéder aux secrets stockés dans Secret Manager.
- Vous pouvez stocker et gérer tous vos secrets de manière centralisée dans Secret Manager, et y accéder de manière sélective à partir des pods GKE à l'aide du module complémentaire Secret Manager. Vous pouvez ainsi utiliser les fonctionnalités proposées par Secret Manager, telles que le chiffrement CMEK, le contrôle des accès précis, la rotation gérée, la gestion du cycle de vie et les journaux d'audit, ainsi que les fonctionnalités Kubernetes, telles que la transmission de secrets aux conteneurs sous forme de volumes montés.
- Le module complémentaire Secret Manager est compatible avec les clusters Standard et Autopilot.
- Le module complémentaire Secret Manager est compatible avec les nœuds qui utilisent des images de nœuds Container-Optimized OS ou Ubuntu.
Limites
Le module complémentaire Secret Manager présente les limites suivantes :
Le module complémentaire Secret Manager n'est pas compatible avec la fonctionnalité Synchroniser en tant que secret Kubernetes, qui est disponible dans le pilote CSI Secrets Store Open Source. Si vous souhaitez synchroniser les secrets stockés dans Secret Manager avec les secrets Kubernetes, utilisez la fonctionnalité de synchronisation des secrets intégrée à Secret Manager. Pour en savoir plus, consultez Synchroniser les secrets avec les secrets Kubernetes.
Le module complémentaire Secret Manager n'est pas compatible avec les nœuds Windows Server.
Avant de commencer
-
Activez les API Secret Manager et Google Kubernetes Engine, si ce n'est pas déjà fait.
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles. Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande
gcloud components update.Vous ne pouvez pas configurer manuellement le module complémentaire Secret Manager à l'aide de Google Cloud SDK ni de la console Google Cloud .
Assurez-vous que votre cluster exécute GKE version 1.27.14-gke.1042001 ou ultérieure avec une image de nœud Linux. Pour utiliser la rotation automatique des secrets, votre cluster doit exécuter GKE version 1.32.2-gke.1059000 ou ultérieure.
Si vous utilisez un cluster GKE Standard, assurez-vous que la fédération d'identité de charge de travail pour GKE est activée sur votre cluster. La fédération d'identité de charge de travail pour GKE est activée par défaut sur un cluster Autopilot. Les pods Kubernetes utilisent Workload Identity Federation for GKE pour s'authentifier auprès de l'API Secret Manager.
Activer le module complémentaire Secret Manager
Vous pouvez activer le module complémentaire Secret Manager sur les clusters Standard et Autopilot.
Lorsque vous activez le module complémentaire sur un cluster nouveau ou existant, vous pouvez également configurer la rotation automatique des secrets. Lorsque la rotation automatique est activée, les mises à jour des secrets dans Secret Manager sont régulièrement envoyées aux volumes de pods installés sans nécessiter de redémarrage des pods. L'intervalle de rotation par défaut est de deux minutes (120 secondes), et l'intervalle minimal autorisé est de 60 secondes. La rotation automatique des secrets nécessite GKE version 1.32.2-gke.1059000 ou ultérieure.
Activer le module complémentaire Secret Manager sur un nouveau cluster GKE
Pour activer le module complémentaire Secret Manager lors de la création du cluster, procédez comme suit :
Console
-
Dans la console Google Cloud , accédez à la page Google Kubernetes Engine.
Cliquez sur add_box Créer.
Dans la boîte de dialogue Créer un cluster, cliquez sur Configurer pour un cluster Standard.
Dans le volet de navigation, dans la section Cluster, cliquez sur Paramètres avancés.
Sur la ligne Secret Manager, cliquez sur edit Modifier la configuration.
Cochez la case Activer Secret Manager.
(Facultatif) Pour activer la rotation automatique des secrets, cochez la case Configurer la rotation automatique, puis spécifiez l'intervalle de rotation et l'unité de l'intervalle de rotation.
Cliquez sur Enregistrer.
Sur la ligne Workload Identity, vérifiez que Détails indique Activé. Si la valeur Désactivé s'affiche, cliquez sur edit Modifier la configuration, cochez la case Activer Workload Identity, puis cliquez sur Enregistrer.
Poursuivez la configuration du cluster, puis cliquez sur Créer.
gcloud
{ Standard cluster}
Pour créer un cluster standard avec le module complémentaire Secret Manager, choisissez l'une des options suivantes en fonction de vos exigences de rotation :
Option 1 (recommandée) : Rotation automatique par défaut
Activez le module complémentaire Secret Manager avec rotation automatique en utilisant l'intervalle par défaut de deux minutes (120 secondes) :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : région Compute Engine du cluster, par exemple
us-central1 - VERSION : version spécifique de GKE que vous souhaitez utiliser. Assurez-vous que votre cluster exécute GKE version 1.32.2-gke.1059000 ou ultérieure. Si le canal de publication par défaut n'inclut pas cette version, utilisez l'option
--release-channelpour choisir un version disponible qui l'inclut. - PROJECT_ID : ID de votre projet Google Cloud
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud container clusters create CLUSTER_NAME \ --enable-secret-manager \ --enable-secret-manager-rotation \ --location=LOCATION \ --cluster-version=VERSION \ --workload-pool=PROJECT_ID.svc.id.goog
Windows (PowerShell)
gcloud container clusters create CLUSTER_NAME ` --enable-secret-manager ` --enable-secret-manager-rotation ` --location=LOCATION ` --cluster-version=VERSION ` --workload-pool=PROJECT_ID.svc.id.goog
Windows (cmd.exe)
gcloud container clusters create CLUSTER_NAME ^ --enable-secret-manager ^ --enable-secret-manager-rotation ^ --location=LOCATION ^ --cluster-version=VERSION ^ --workload-pool=PROJECT_ID.svc.id.goog
Option 2 : Intervalle de rotation automatique personnalisé
Activez le module complémentaire Secret Manager avec la rotation automatique et un intervalle de rotation personnalisé :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : région Compute Engine du cluster, par exemple
us-central1 - VERSION : version spécifique de GKE que vous souhaitez utiliser. Assurez-vous que votre cluster exécute GKE version 1.32.2-gke.1059000 ou ultérieure. Si le canal de publication par défaut n'inclut pas cette version, utilisez l'option
--release-channelpour choisir un version disponible qui l'inclut. - PROJECT_ID : ID de votre projet Google Cloud
- ROTATION_INTERVAL : intervalle de rotation en secondes. La valeur doit être un entier positif suivi du suffixe
s. La valeur minimale autorisée est60s. Par exemple, pour définir l'intervalle sur cinq minutes, utilisez300s.
Exécutez la commande suivante :
Linux, macOS ou 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
Option 3 : Sans rotation automatique
Activez le module complémentaire Secret Manager sans rotation automatique :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : région Compute Engine du cluster, telle que
us-central1. - VERSION : version spécifique de GKE que vous souhaitez utiliser. Assurez-vous que votre cluster exécute GKE version 1.27.14-gke.1042001 ou ultérieure. Si le canal de publication par défaut n'inclut pas cette version, utilisez l'option
--release-channelpour choisir un version disponible qui l'inclut. - PROJECT_ID : ID de votre projet Google Cloud .
Exécutez la commande suivante :
Linux, macOS ou 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
{ Cluster Autopilot}
Pour créer un cluster Autopilot avec le module complémentaire Secret Manager, choisissez l'une des options suivantes en fonction de vos exigences de rotation :
Option 1 (recommandée) : Rotation automatique par défaut
Activez le module complémentaire Secret Manager avec rotation automatique en utilisant l'intervalle par défaut de deux minutes (120 secondes) :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- VERSION : version spécifique de GKE que vous souhaitez utiliser. Assurez-vous que votre cluster exécute GKE version 1.32.2-gke.1059000 ou ultérieure. Pour définir une version spécifique, consultez Définir la version et le version disponible d'un nouveau cluster Autopilot.
- LOCATION : région Compute Engine du cluster, par exemple
us-central1
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud container clusters create-auto CLUSTER_NAME \ --enable-secret-manager \ --enable-secret-manager-rotation \ --cluster-version=VERSION \ --location=LOCATION
Windows (PowerShell)
gcloud container clusters create-auto CLUSTER_NAME ` --enable-secret-manager ` --enable-secret-manager-rotation ` --cluster-version=VERSION ` --location=LOCATION
Windows (cmd.exe)
gcloud container clusters create-auto CLUSTER_NAME ^ --enable-secret-manager ^ --enable-secret-manager-rotation ^ --cluster-version=VERSION ^ --location=LOCATION
Option 2 : Intervalle de rotation automatique personnalisé
Activez le module complémentaire Secret Manager avec la rotation automatique et un intervalle de rotation personnalisé :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- VERSION : version spécifique de GKE que vous souhaitez utiliser. Assurez-vous que votre cluster exécute GKE version 1.32.2-gke.1059000 ou ultérieure. Pour définir une version spécifique, consultez Définir la version et le version disponible d'un nouveau cluster Autopilot.
- LOCATION : région Compute Engine du cluster, par exemple
us-central1 - ROTATION_INTERVAL : intervalle de rotation en secondes. La valeur doit être un entier positif suivi du suffixe
s. La valeur minimale autorisée est60s. Par exemple, pour définir l'intervalle sur cinq minutes, utilisez300s.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud container clusters create-auto CLUSTER_NAME \ --enable-secret-manager \ --enable-secret-manager-rotation \ --secret-manager-rotation-interval=ROTATION_INTERVAL \ --cluster-version=VERSION \ --location=LOCATION
Windows (PowerShell)
gcloud container clusters create-auto CLUSTER_NAME ` --enable-secret-manager ` --enable-secret-manager-rotation ` --secret-manager-rotation-interval=ROTATION_INTERVAL ` --cluster-version=VERSION ` --location=LOCATION
Windows (cmd.exe)
gcloud container clusters create-auto CLUSTER_NAME ^ --enable-secret-manager ^ --enable-secret-manager-rotation ^ --secret-manager-rotation-interval=ROTATION_INTERVAL ^ --cluster-version=VERSION ^ --location=LOCATION
Option 3 : Sans rotation automatique
Activez le module complémentaire Secret Manager sans rotation automatique :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- VERSION : version spécifique de GKE que vous souhaitez utiliser. Assurez-vous que votre cluster exécute GKE version 1.27.14-gke.1042001 ou ultérieure. Pour définir une version spécifique, consultez Définir la version et le version disponible d'un nouveau cluster Autopilot.
- LOCATION : région Compute Engine du cluster, par exemple
us-central1.
Exécutez la commande suivante :
Linux, macOS ou 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
Après avoir activé le module complémentaire Secret Manager, vous pouvez utiliser le pilote CSI Secrets Store dans les volumes Kubernetes à l'aide du nom du pilote et de l'approvisionneur : secrets-store-gke.csi.k8s.io.
Activer le module complémentaire Secret Manager sur un cluster GKE existant
Pour activer le module complémentaire Secret Manager sur un cluster existant, procédez comme suit :
Console
-
Dans la console Google Cloud , accédez à la page Google Kubernetes Engine.
Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.
Sur la page d'informations du cluster, dans la section Sécurité, cliquez sur Secret Manager.
Dans la boîte de dialogue Modifier Secret Manager, cochez la case Activer Secret Manager.
(Facultatif) Pour activer la rotation automatique des secrets, cochez la case Configurer la rotation automatique, puis spécifiez l'intervalle de rotation et l'unité de l'intervalle de rotation.
Cliquez sur Enregistrer les modifications.
gcloud
Pour activer le module complémentaire Secret Manager sur un cluster existant, choisissez l'une des options suivantes en fonction de vos besoins de rotation :
Option 1 (recommandée) : Rotation automatique par défaut
Activez le module complémentaire Secret Manager avec rotation automatique en utilisant l'intervalle par défaut de deux minutes (120 secondes) sur un cluster existant :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : région Compute Engine de votre cluster, par exemple
us-central1
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud container clusters update CLUSTER_NAME \ --enable-secret-manager \ --location=LOCATION \ --enable-secret-manager-rotation
Windows (PowerShell)
gcloud container clusters update CLUSTER_NAME ` --enable-secret-manager ` --location=LOCATION ` --enable-secret-manager-rotation
Windows (cmd.exe)
gcloud container clusters update CLUSTER_NAME ^ --enable-secret-manager ^ --location=LOCATION ^ --enable-secret-manager-rotation
Option 2 : Intervalle de rotation automatique personnalisé
Activez le module complémentaire Secret Manager avec rotation automatique et intervalle de rotation personnalisé sur un cluster existant :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : région Compute Engine de votre cluster, par exemple
us-central1 - ROTATION_INTERVAL : intervalle de rotation en secondes. La valeur doit être un entier positif suivi du suffixe
s. La valeur minimale autorisée est60s. Par exemple, pour définir l'intervalle sur cinq minutes, utilisez300s.
Exécutez la commande suivante :
Linux, macOS ou 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
Option 3 : Sans rotation automatique
Activez le module complémentaire Secret Manager sur un cluster existant sans rotation automatique :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : région Compute Engine du cluster, telle que
us-central1
Exécutez la commande suivante :
Linux, macOS ou 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
Vérifier l'installation du module complémentaire Secret Manager
Pour vérifier que le module complémentaire Secret Manager est installé sur le cluster Kubernetes, exécutez la commande suivante :
gcloud container clusters describe CLUSTER_NAME --location LOCATION | grep secretManagerConfig -A 4
Remplacez les éléments suivants :
CLUSTER_NAME: nom du clusterLOCATION: emplacement de votre cluster, par exempleus-central1
Gérer la rotation automatique des secrets
Lorsque vous activez la rotation automatique des secrets (--enable-secret-manager-rotation), le module complémentaire Secret Manager vérifie régulièrement si de nouvelles versions des secrets spécifiés dans la ressource personnalisée SecretProviderClass sont disponibles dans Secret Manager. L'indicateur --secret-manager-rotation-interval détermine la fréquence à laquelle le module complémentaire recherche les mises à jour (par défaut : 120 s ; minimum : 60 s).
Lorsque le module complémentaire détecte une nouvelle version de secret dans Secret Manager, il met à jour le fichier secret installé dans le volume du pod sans nécessiter de redémarrage du pod.
Désactiver la rotation automatique des secrets sur un cluster existant
Pour désactiver la rotation automatique des secrets sur un cluster existant, procédez comme suit :
Console
-
Dans la console Google Cloud , accédez à la page Google Kubernetes Engine.
Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.
Sur la page d'informations du cluster, dans la section Sécurité, cliquez sur Secret Manager.
Dans la boîte de dialogue Modifier Secret Manager, décochez la case Configurer la rotation automatique.
Cliquez sur Enregistrer les modifications.
gcloud
Pour désactiver la rotation automatique des secrets sur un cluster existant, exécutez la commande suivante :
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : région Compute Engine de votre cluster, par exemple
us-central1
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --no-enable-secret-manager-rotation
Windows (PowerShell)
gcloud container clusters update CLUSTER_NAME ` --location=LOCATION ` --no-enable-secret-manager-rotation
Windows (cmd.exe)
gcloud container clusters update CLUSTER_NAME ^ --location=LOCATION ^ --no-enable-secret-manager-rotation
Configurer les applications pour qu'elles s'authentifient auprès de l'API Secret Manager
Le fournisseur Google Secret Manager utilise l'identité de charge de travail du pod sur lequel un secret est monté lors de l'authentification auprès de l'API Secret Manager. Pour permettre à vos applications de s'authentifier auprès de l'API Secret Manager à l'aide de Workload Identity Federation for GKE, procédez comme suit :
Créez un ServiceAccount Kubernetes ou utilisez-en un existant dans le même espace de noms que le pod sur lequel vous souhaitez installer le secret.
Créez une stratégie d'autorisation Identity and Access Management (IAM) pour le secret dans Secret Manager.
Les pods qui utilisent le compte de service Kubernetes configuré s'authentifient automatiquement en tant qu'identifiant principal IAM correspondant au compte de service Kubernetes lorsqu'ils accèdent à l'API Secret Manager.
Créer un compte de service Kubernetes
Enregistrez le manifeste suivant sous le nom
service-account.yaml:apiVersion: v1 kind: ServiceAccount metadata: name: KSA_NAME namespace: NAMESPACERemplacez les éléments suivants :
KSA_NAME: nom de votre nouveau compte de service KubernetesNAMESPACE: nom de l'espace de noms Kubernetes du compte de service.
Appliquez le fichier manifeste :
kubectl apply -f service-account.yamlCréez une stratégie d'autorisation IAM qui fait référence au nouveau compte de service Kubernetes et accordez-lui l'autorisation d'accéder au 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_NAMERemplacez les éléments suivants :
SECRET_NAME: nom du secret dans Secret ManagerPROJECT_NUMBER: numéro numérique de votre projet Google CloudPROJECT_ID: ID du projet Google Cloud contenant votre cluster GKE.NAMESPACE: nom de l'espace de noms Kubernetes du compte de service.KSA_NAME: nom de votre compte de service Kubernetes existant
Utiliser un compte de service Kubernetes existant
Créez une stratégie d'autorisation IAM qui fait référence au compte de service Kubernetes existant et accordez-lui l'autorisation d'accéder au 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
Remplacez les éléments suivants :
SECRET_NAME: nom du secret dans Secret ManagerPROJECT_NUMBER: numéro numérique de votre projet Google CloudPROJECT_ID: ID du projet Google Cloud contenant votre cluster GKE.NAMESPACE: nom de l'espace de noms Kubernetes du compte de service.KSA_NAME: nom de votre compte de service Kubernetes existant
Définir les secrets à installer
Pour spécifier les secrets à installer en tant que fichiers dans le pod Kubernetes, créez un fichier manifeste YAML SecretProviderClass et listez les secrets à installer ainsi que le nom de fichier sous lequel les installer. Procédez comme suit :
Enregistrez le manifeste suivant sous le nom
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"Remplacez les éléments suivants :
SECRET_PROVIDER_CLASS_NAME: nom de votre objetSecretProviderClass.PROJECT_ID: ID de votre projet.SECRET_NAME: nom du secret.SECRET_VERSION: version du secret. La version du secret doit se trouver dans la même région que le cluster.FILENAME.txt: nom du fichier dans lequel la valeur secrète sera montée. Vous pouvez créer plusieurs fichiers à l'aide des variablesresourceNameetpath.
Pour un secret régional,
resourceNamecorrespond au chemin d'accès complet à la ressource secrète, y compris l'emplacement du secret régional. Par exemple, "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME/versions/SECRET_VERSION"Appliquez le fichier manifeste :
kubectl apply -f app-secrets.yaml -n NAMESPACERemplacez
NAMESPACEpar le nom de l'espace de noms Kubernetes pour le compte de service.Vérifiez que l'objet
SecretProviderClassa été créé :kubectl get SecretProviderClasses -n NAMESPACE
Configurer un volume dans lequel les secrets seront installés
Enregistrez la configuration suivante sous
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_NAMERemplacez les éléments suivants :
POD_NAME: nom du pod Kubernetes dans lequel le secret est installéNAMESPACE: nom de l'espace de noms Kubernetes du compte de service.KSA_NAME: compte de service Kubernetes que vous avez configuré à l'étape Configurer les applications pour qu'elles s'authentifient auprès de l'API Secret ManagerIMAGE_NAME: nom de l'image de conteneurSECRET_PROVIDER_CLASS_NAME: nom de votre objetSecretProviderClass
Dans les clusters standards uniquement, ajoutez les éléments suivants au champ
template.specpour placer les pods sur des pools de nœuds qui utilisent la fédération d'identité de charge de travail pour GKE.Ignorez cette étape dans les clusters Autopilot, qui rejettent ce nodeSelector, car chaque nœud utilise la fédération d'identité de charge de travail pour GKE.
spec: nodeSelector: iam.gke.io/gke-metadata-server-enabled: "true"Appliquez la configuration à votre cluster.
kubectl apply -f my-pod.yaml
Cette étape monte un volume mysecret à /var/secrets à l'aide du pilote CSI (secrets-store-gke.csi.k8s.io). Ce volume fait référence à l'objet SecretProviderClass qui sert de fournisseur.
Migrer depuis le pilote CSI Kubernetes Secrets Store Open Source existant
Si vous utilisez le pilote CSI Kubernetes Secret Store Open Source et le fournisseur Google Secret Manager, vous pouvez migrer vos charges de travail vers le module complémentaire Secret Manager géré.
Le module complémentaire géré et le pilote Open Source peuvent s'exécuter simultanément sur le même cluster. Cette fonctionnalité vous permet de migrer progressivement des applications et des espaces de noms individuels sans temps d'arrêt du cluster.
Pour migrer vers le module complémentaire Secret Manager, procédez comme suit :
- Activez le module complémentaire Secret Manager sur votre cluster.
- Créer des fichiers manifestes
SecretProviderClass - Mettre à jour les fichiers manifestes des charges de travail
- Vérifier la migration
- Nettoyer les anciennes ressources Open Source
Étape 1 : Activez le module complémentaire Secret Manager sur votre cluster
Activez le module complémentaire Secret Manager sur votre cluster GKE existant :
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--enable-secret-manager \
[--enable-secret-manager-rotation \
--secret-manager-rotation-interval=ROTATION_INTERVAL]
Remplacez les éléments suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : emplacement de votre cluster, par exemple
us-central1 - Facultatif : ROTATION_INTERVAL : fréquence à laquelle les secrets montés sont automatiquement mis à jour (par exemple,
120sou3600s). La valeur minimale autorisée est60set la valeur par défaut est120s.
Étape 2 : Créez des fichiers manifestes SecretProviderClass
Créez un fichier manifeste SecretProviderClass avec provider: gke pour chaque application. Nous vous recommandons d'ajouter -gke au nom de la ressource afin que les anciennes et nouvelles ressources SecretProviderClass puissent coexister lors des mises à jour progressives.
Enregistrez le manifeste suivant sous le nom
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"Remplacez les éléments suivants :
- SECRET_PROVIDER_CLASS_NAME-gke : nom de votre nouvelle ressource
SecretProviderClass - NAMESPACE : espace de noms Kubernetes dans lequel votre charge de travail s'exécute
- PROJECT_ID : ID de votre projet Google Cloud
- SECRET_NAME : nom du secret dans Secret Manager
- SECRET_VERSION : version du secret, par exemple
latestou1 - FILENAME.txt : nom du fichier dans lequel la valeur secrète est installée
Pour les secrets régionaux, spécifiez le chemin d'accès complet à la ressource, y compris l'emplacement :
"projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME/versions/SECRET_VERSION"- SECRET_PROVIDER_CLASS_NAME-gke : nom de votre nouvelle ressource
Appliquez le nouveau fichier manifeste
SecretProviderClass:kubectl apply -f secret-provider-class-gke.yaml
Étape 3 : Mettez à jour les manifestes de charge de travail
Mettez à jour vos fichiers manifestes de pod ou de déploiement pour utiliser le pilote géré (secrets-store-gke.csi.k8s.io) et référencer le nouveau nom SecretProviderClass.
Mettez à jour la section
volumesdu fichier manifeste de votre charge de travail (par exemple,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 nameRemplacez les éléments suivants :
- CONTAINER_NAME : nom du conteneur dans votre charge de travail
- IMAGE_NAME : nom de votre image de conteneur
- SECRET_PROVIDER_CLASS_NAME-gke : nom de votre nouvelle ressource
SecretProviderClass
Appliquez le fichier manifeste de charge de travail mis à jour pour déclencher un déploiement continu :
kubectl apply -f deployment.yaml
Étape 4 : Vérifiez la migration
Vérifiez que vos charges de travail utilisent bien le module complémentaire géré :
Vérifiez que vos pods ont été déployés et qu'ils ont atteint l'état
Running:kubectl get pods -n NAMESPACERemplacez NAMESPACE par l'espace de noms Kubernetes dans lequel s'exécute votre charge de travail.
Vérifiez que les secrets sont correctement installés et accessibles dans le conteneur :
kubectl exec -it POD_NAME -n NAMESPACE -- cat /var/secrets/FILENAME.txtRemplacez les éléments suivants :
- POD_NAME : nom de votre pod Kubernetes
- NAMESPACE : espace de noms Kubernetes dans lequel votre charge de travail s'exécute
- FILENAME.txt : nom du fichier secret monté configuré dans votre
SecretProviderClass
(Facultatif) Si vous avez activé la rotation automatique, vérifiez les mises à jour des secrets :
- Ajoutez une nouvelle version du secret dans Secret Manager.
- Patientez pendant l'intervalle de rotation configuré, par exemple 120 secondes.
Inspectez à nouveau le fichier secret monté dans le pod pour vérifier que le contenu a été mis à jour sans redémarrage du pod :
kubectl exec -it POD_NAME -n NAMESPACE -- cat /var/secrets/FILENAME.txt
Étape 5 : Nettoyer les anciennes ressources Open Source
Supprimez les anciennes ressources
SecretProviderClass:kubectl delete secretproviderclass OLD_SECRET_PROVIDER_CLASS_NAME -n NAMESPACERemplacez les éléments suivants :
- OLD_SECRET_PROVIDER_CLASS_NAME : nom de votre ancienne ressource
SecretProviderClass, par exemplemy-app-secrets - NAMESPACE : espace de noms Kubernetes dans lequel votre charge de travail s'exécute
- OLD_SECRET_PROVIDER_CLASS_NAME : nom de votre ancienne ressource
Si vous avez déployé le plug-in de fournisseur Google Secret Manager Open Source à l'aide d'un fichier manifeste, supprimez le DaemonSet :
kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/secrets-store-csi-driver-provider-gcp/main/deploy/provider-gcp-plugin.yamlSi vous avez installé le pilote CSI Secrets Store Open Source à l'aide de Helm, désinstallez la version Helm :
helm uninstall csi-secrets-store -n kube-system
Désactiver le module complémentaire Secret Manager
Pour désactiver le module complémentaire Secret Manager sur un cluster Standard existant ou sur un cluster Autopilot, exécutez la commande suivante :
Console
-
Dans la console Google Cloud , accédez à la page Google Kubernetes Engine.
Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.
Dans la section Sécurité de la page d'informations du cluster, cliquez sur Secret Manager.
Dans la boîte de dialogue Modifier Secret Manager, décochez la case Activer Secret Manager.
Cliquez sur Enregistrer les modifications.
gcloud
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : emplacement Compute Engine du cluster, tel que
us-central1.
Exécutez la commande suivante :
Linux, macOS ou 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
Étapes suivantes
- Consultez les notes de version de l'intégration de Secret Manager à GKE.