Utiliser des secrets

Découvrez comment créer un secret, puis configurer vos services et révisions Cloud Run for Anthos sur Google Cloud de manière à utiliser ce secret.

Un cas d'utilisation courant d'un service consiste à accéder aux 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 Cloud Run pour Anthos. 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 définir des secrets à l'aide de Cloud Console ou de l'outil de ligne de commande gcloud lorsque vous déployez un nouveau service ou mettez à jour un service existant et déployez une révision :

Console

  1. Accédez à Cloud Run for Anthos sur Google Cloud.

  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.

    image

  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 Créer ou Déployer.

Ligne de commande

Vous pouvez utiliser l'une des commandes gcloud kuberun suivantes pour définir des secrets pour les nouveaux services ou pour mettre à jour des services existants :

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

    Exemple :

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

    Remplacez :

    • SERVICE par le nom de votre service ;
    • KEY1=VALUE1,KEY2=VALUE2 avec une liste de paires nom/valeur séparées par une virgule pour chaque secret. Pour chaque KEY, spécifiez le chemin 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 tant que variable d'environnement. Pour chaque paramètre 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 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 kuberun core services create avec le paramètre --set-secrets :

    gcloud kuberun core services create 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/myproject/my-image:latest ;
    • SERVICE par le nom de votre service ;
    • KEY1=VALUE1,KEY2=VALUE2 avec une liste de paires nom/valeur séparées par une virgule pour chaque secret. Pour chaque KEY, spécifiez le chemin 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 tant que variable d'environnement. Pour chaque paramètre 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 de lisibilité. Exemple :
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"