Utiliser des secrets

Apprenez à créer un secret et à configurer vos services de diffusion Knative et vos révisions pour qu'ils utilisent ce secret.

Un cas d'utilisation courant pour un service consiste à accéder à des applications tierces via des noms d'utilisateur et des mots de passe. Pour Google Kubernetes Engine, il est recommandé de stocker ce type d'informations sensibles dans un objet Secret Kubernetes.

Pour permettre à vos conteneurs d'accéder aux secrets, vous pouvez installer chaque secret en tant que volume, afin de mettre les entrées du secret à la disposition du conteneur en tant que fichiers. Vous devez installer votre secret pour vous assurer d'obtenir la dernière version de chaque secret lors de sa lecture.

Vous pouvez également transmettre un Secret à l'aide de variables d'environnement.

Créer un secret

Les étapes suivantes décrivent un moyen simple de créer un secret. Mais il existe plusieurs façons de créer un secret, comme expliqué dans la rubrique Secret.

Lorsque vous créez un secret, veillez à le créer dans le même espace de noms que le cluster qui exécute votre service de diffusion Knative. Dans les exemples ci-dessous, l'espace de noms default est utilisé.

Pour créer un secret dans l'espace de noms default de votre cluster, procédez comme suit :

  • Créez un secret à l'aide d'un fichier :

    echo -n 'devuser' > ./username.txt
    echo -n 'S!B\*d$zDsb' > ./password.txt
    kubectl create secret generic user-creds --from-file=./username.txt --from-file=./password.txt
    
  • Créez un secret à l'aide d'une commande kubectl uniquement :

    kubectl create secret generic user-creds --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb'
    

Rendre un secret disponible auprès d'un service

Vous pouvez associer des secrets à un service à l'aide de Google Cloud Console ou des outils de ligne de commande lorsque vous déployez un nouveau service, ou mettez à jour un service existant et déployez une révision. :

Console

  1. Accédez à l'inférence Knative dans la console Google Cloud:

    Accéder à l'inférence Knative

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Sous Paramètres avancés, cliquez sur Variables et secrets.

  4. Sous Reference a Secret (Référencer un secret), sélectionnez le secret souhaité dans le menu déroulant.

    • Dans le menu déroulant Méthode de référence, sélectionnez la manière dont vous souhaitez utiliser votre secret, installé en tant que volume ou exposé en tant que variables d'environnement.
    • Si vous utilisez l'installation en tant que volume, spécifiez le chemin d'accès, puis cliquez sur Done (OK).
    • Si vous exposez en tant que variables d'environnement :
      1. Indiquez le nom de la variable et sélectionnez la valeur de secret correspondante dans le menu déroulant Clé.
      2. Cliquez sur Add (Ajouter) pour ajouter une autre valeur de secret.
      3. Indiquez le nom de la variable et sélectionnez la valeur de secret correspondante dans le menu déroulant Clé.
      4. Cliquez sur OK.

  5. Cliquez sur Suivant pour passer à la section suivante.

  6. Dans la section Configurer la manière dont ce service est déclenché, sélectionnez la connectivité que vous souhaitez utiliser pour appeler le service.

  7. Cliquez sur Créer pour déployer l'image sur la diffusion Knative et attendez la fin du déploiement.

gcloud

Vous pouvez utiliser la CLI Google Cloud pour associer des secrets à de nouveaux services ou pour mettre à jour des services existants:

  • Pour les services existants, mettez à jour un secret en exécutant la commande gcloud run services update avec l'un des paramètres suivants :

    Exemple :

    gcloud run services update SERVICE --update-secrets KEY1=VALUE1,KEY2=VALUE2
    

    Remplacez :

    • SERVICE par le nom de votre service ;
    • KEY1=VALUE1,KEY2=VALUE2 par une liste de paires nom/valeur séparées par des virgules pour chaque ConfigMap. Pour chaque KEY, spécifiez le chemin d'accès en commençant par une barre oblique / pour installer un Secret en tant que fichier. Vous pouvez éventuellement exclure la barre oblique pour installer le Secret en guise de variable d'environnement. Pour chaque VALUE, spécifiez le nom du secret. Découvrez comment spécifier plusieurs paramètres.
    • Options des paramètres de commande

      Pour spécifier plusieurs ensembles de paires clé/valeur, vous pouvez spécifier plusieurs paramètres pour plus de lisibilité. Exemple :
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
      
  • Pour les nouveaux services, définissez un secret en exécutant la commande gcloud run deploy avec le paramètre --set-secrets :

    gcloud run deploy SERVICE --image=IMAGE_URL --set-secrets KEY1=VALUE1,KEY2=VALUE2
    

    Remplacez :

    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/cloudrun/hello ;
    • SERVICE par le nom de votre service ;
    • KEY1=VALUE1,KEY2=VALUE2 par une liste de paires nom/valeur séparées par des virgules pour chaque ConfigMap. Pour chaque KEY, spécifiez le chemin d'accès en commençant par une barre oblique / pour installer un Secret en tant que fichier. Vous pouvez éventuellement exclure la barre oblique pour installer le Secret en guise de variable d'environnement. Pour chaque VALUE, spécifiez le nom du secret. Découvrez comment spécifier plusieurs paramètres.
    • Options des paramètres de commande

      Pour spécifier plusieurs ensembles de paires clé/valeur, vous pouvez spécifier plusieurs paramètres pour plus de lisibilité. Exemple :
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"