Configurer des variables d'environnement pour les services

Cette page explique comment configurer des variables d'environnement pour votre service Cloud Run.

Vous pouvez utiliser des variables d'environnement pour la configuration du service, mais nous ne les recommandons pas pour stocker des secrets, tels que les identifiants de bases de données ou les clés API. Les valeurs sensibles doivent être stockées en dehors de votre code source et des variables d'environnement. Pour stocker des secrets, nous vous recommandons d'utiliser Secret Manager. Pour configurer des services afin d'accéder aux secrets stockés dans Secret Manager, consultez la page Configurer les secrets.

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer et déployer des services Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants:

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec des APIGoogle Cloud , telles que des bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.

Nombre maximal de variables d'environnement et limites

Vous pouvez définir un maximum de 1 000 variables d'environnement pour un service Cloud Run.

La longueur maximale de la variable est de 32 Ko.

Définir des variables d'environnement

Vous pouvez définir des variables d'environnement pour les services nouveaux et existants. Notez que l'indicateur --set-env-vars est une action destructive qui supprime les variables d'environnement précédemment définies qui ne sont pas incluses dans la nouvelle liste de variables d'environnement.

Les variables d'environnement sont liées à une révision de service spécifique et ne sont pas visibles par les autres services de votre Google Cloud projet.

Vous pouvez définir des variables d'environnement à l'aide de la Google Cloud console, de gcloud CLI ou d'un fichier YAML lorsque vous créez un service ou déployez une nouvelle révision:

Console

  1. Dans la console Google Cloud , accédez à Cloud Run:

    Accédez à Cloud Run

  2. Sélectionnez Services dans le menu, puis cliquez sur Déployer un conteneur pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service, puis cliquez sur Conteneur(s), volumes, mise en réseau et sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Conteneur.

    image

    • Cliquez sur Ajouter une variable pour ajouter une variable, puis spécifiez le nom et la valeur de cette variable dans les champs Nom et Valeur.
  5. Cliquez sur Créer ou Déployer.

gcloud

Pour spécifier des variables d'environnement lors du déploiement de votre service, utilisez l'indicateur --set-env-vars:

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

Remplacez :

  • SERVICE par le nom de votre service.
  • KEY1=VALUE1,KEY2=VALUE2, avec la liste des noms et valeurs des variables, séparés par une virgule.
  • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Pour spécifier des variables d'environnement lors de la mise à jour d'un service, utilisez l'option --set-env-vars:

gcloud run services update SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

Définir de nombreuses variables d'environnement

Si vous avez de nombreuses variables d'environnement qui ne peuvent pas être listées au format KEY1=VALUE1,KEY2=VALUE2, vous pouvez répéter l'option --set-env-vars plusieurs fois:
   [...]
   --set-env-vars "KEY1=VALUE1" \
   --set-env-vars "KEY2=VALUE2" \
   --set-env-vars "KEY3=VALUE3"

Échapper les caractères de virgule

Comme la virgule , est utilisée pour séparer les variables d'environnement, si votre variable d'environnement contient des virgules en tant que valeurs, vous devez échapper ces délimiteurs en spécifiant un caractère de délimitation différent, par exemple @:
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Modifiez les attributs name et value sous l'attribut env sous containers: :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            env:
            - name: KEY-1
              value: VALUE-1
            - name: KEY-N
              value: VALUE-N

    Remplacer

    • SERVICE par le nom de votre service Cloud Run
    • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • KEY-1, VALUE-1 par la variable d'environnement et la valeur. Si vous le souhaitez, vous pouvez ajouter d'autres variables accompagnées de leur valeur.
    • REVISION par un nouveau nom de révision ou supprimez-le (le cas échéant). Si vous indiquez un nouveau nom de révision, il doit répondre aux critères suivants :
      • Commencer par SERVICE-
      • Ne contenir que des lettres minuscules, des chiffres et -
      • Ne pas se terminer par -
      • Ne pas dépasser 63 caractères
  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-env-var"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Environment variables
      env {
        name  = "foo"
        value = "bar"
      }
      env {
        name  = "baz"
        value = "quux"
      }
    }
  }
}

La ressource google_cloud_run_v2_service précédente définit la variable d'environnement foo sur bar et la variable d'environnement baz sur quux. Mettez à jour les variables d'environnement si nécessaire.

Définir des variables d'environnement par défaut dans le conteneur

Vous pouvez utiliser l'instruction ENV dans un fichier Dockerfile pour définir les valeurs par défaut des variables d'environnement :

ENV KEY1=VALUE1,KEY2=VALUE2

Ordre de priorité entre les variables de conteneur et de service

Si vous définissez une variable d'environnement par défaut dans le conteneur et définissez une variable d'environnement portant le même nom sur le service Cloud Run, la valeur définie au niveau du service est prioritaire.

Mettre à jour des variables d'environnement

Vous pouvez mettre à jour les variables d'environnement des services existants. Il s'agit d'une approche non destructrice, qui permet de modifier ou d'ajouter des variables d'environnement, mais qui ne supprime pas les variables d'environnement précédemment définies.

Console

Pour mettre à jour des variables d'environnement à l'aide de la console Google Cloud :

  1. Dans la console Google Cloud , accédez à Cloud Run:

    Accédez à Cloud Run

  2. Sélectionnez votre service dans la liste, puis cliquez sur Modifier et déployer la nouvelle révision.

  3. Cliquez sur l'onglet Conteneur.

  4. Dans l'onglet Variables et secrets, modifiez les champs Nom ou Valeur, puis cliquez sur OK.

  5. Cliquez sur Déployer.

gcloud

Pour mettre à jour les variables d'environnement d'un service existant, utilisez l'indicateur --update-env-vars:

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

Remplacez :

  • SERVICE par le nom de votre service.
  • KEY1=VALUE1,KEY2=VALUE2, avec la liste des noms et valeurs de variables, séparés par une virgule.

Pour mettre à jour les variables d'environnement d'un service multirégion existant, utilisez la commande gcloud beta run multi-region-services update.

Afficher les paramètres des variables d'environnement

Pour afficher les paramètres des variables d'environnement actuels de votre service Cloud Run, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à Cloud Run:

    Accédez à Cloud Run

  2. Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.

  3. Cliquez sur l'onglet Révisions.

  4. Dans le panneau de détails sur la droite, le paramètre des variables d'environnement est répertorié sous l'onglet Conteneur.

gcloud

  1. Exécutez la commande suivante :

    gcloud run services describe SERVICE
  2. Recherchez le paramètre de variables d'environnement dans la configuration renvoyée.

Supprimer des variables d'environnement

Vous pouvez supprimer des variables d'environnement pour des services existants.

Console

Pour supprimer des variables d'environnement à l'aide de la console Google Cloud :

  1. Dans la console Google Cloud , accédez à Cloud Run:

    Accédez à Cloud Run

  2. Sélectionnez votre service dans la liste, puis cliquez sur Modifier et déployer la nouvelle révision.

  3. Cliquez sur l'onglet Conteneur.

  4. Dans l'onglet Variables et secrets, placez le curseur à gauche du champ Valeur de la variable d'environnement que vous supprimez pour afficher l'icône Supprimer, puis cliquez dessus.

  5. Cliquez sur OK.

  6. Cliquez sur Déployer.

gcloud

Pour supprimer de manière sélective des variables d'environnement d'un service existant,utilisez l'option --remove-env-vars:

gcloud run services update SERVICE --remove-env-vars KEY1,KEY2

Remplacez :

  • SERVICE par le nom de votre service.
  • KEY1,KEY2, avec la liste des noms de variables, séparés par une virgule.

Vous pouvez également effacer l'ensemble des variables d'environnement définies précédemment à l'aide de l'option --clear-env-vars:

gcloud run services update SERVICE --clear-env-vars

Remplacez :

  • SERVICE par le nom de votre service.

Bonnes pratiques

La section suivante met en évidence certaines des bonnes pratiques de configuration des variables d'environnement.

Variables d'environnement réservées pour les services

Les variables d'environnement définies dans le contrat d'exécution du conteneur sont réservées et ne peuvent pas être définies. En particulier, la variable d'environnement PORT est injectée dans votre conteneur par Cloud Run. Vous ne devriez pas la définir vous-même.

Variables d'environnement réservées supplémentaires lors du déploiement de fonctions

Cloud Run définit automatiquement les variables d'environnement d'exécution suivantes lors du déploiement de fonctions:

  • FUNCTION_TARGET: fonction à exécuter.
  • FUNCTION_SIGNATURE_TYPE: type de la fonction: http pour les fonctions HTTP et event pour les fonctions basées sur les événements.

D'autres variables d'environnement sont définies automatiquement suivant l'environnement d'exécution utilisé par votre fonction. Celles-ci dépendent du système d'exploitation de l'environnement d'exécution (par exemple, DEBIAN_FRONTEND, SHLVL ou PATH) ainsi que de l'environnement d'exécution du langage (par exemple NODE_ENV, VIRTUAL_ENV ou GOPATH).

Les variables d'environnement fournies par l'environnement, autres que celles définies automatiquement, pourront faire l'objet de modifications dans des versions d'exécution ultérieures. Il est déconseillé de modifier ou de dépendre de variables d'environnement que vous n'avez pas définies explicitement.

Modifier les variables d'environnement fournies par l'environnement peut avoir des conséquences imprévisibles. Les tentatives de modification de ces variables d'environnement peuvent être bloquées ou, pire, avoir des conséquences inattendues comme empêcher le lancement de certaines fonctions. Nous vous recommandons de préfixer les variables d'environnement à l'aide d'une clé unique afin d'éviter tout conflit.

Variables d'environnement non valides

Vous ne pouvez pas utiliser les variables d'environnement suivantes:

Clé Description
Vide ('') Une clé ne peut pas être une chaîne vide.
= Les clés ne peuvent pas contenir le caractère "=".
X_GOOGLE_ Une clé ne peut pas contenir le préfixe X_GOOGLE_.

Exemple de code

Pour obtenir un exemple de code montrant comment accéder aux variables d'environnement de votre code, reportez-vous à la section Gérer une configuration sensible avec Secret Manager du tutoriel sur l'authentification des utilisateurs finaux.

Étapes suivantes

Vous pouvez utiliser des variables d'environnement pour définir la configuration des buildpacks. Pour obtenir des informations propres à chaque langage, consultez la documentation sur les buildpacks pour:

Si vous effectuez un déploiement à partir de la source et que vous devez personnaliser des variables au moment de la compilation, consultez Définir des variables d'environnement de compilation.