Vous pouvez définir des variables d'environnement arbitraires pour un service Cloud Run. Cloud Run injecte ces paires clé-valeur dans le conteneur et les rend accessibles à votre code. Vous pouvez également les utiliser pour transmettre des informations de configuration aux buildpacks lorsque vous déployez une fonction à partir du code source.
Les variables d'environnement sont liées à un seul service et ne sont pas visibles par les autres services de votre projet Google Cloud. Chaque variable est stockée dans le service déployé et existe dans le même cycle de vie que le service auquel elle est associée.
Nombre maximal de variables d'environnement
Vous pouvez définir un maximum de 1 000 variables d'environnement pour un service Cloud Run.
Cycle de vie d'une variable
Toutes les variables d'environnement sont liées au déploiement d'un service. Vous ne pouvez les définir ou les modifier qu'avec un déploiement. Si un déploiement échoue pour une raison quelconque, les modifications apportées aux variables d'environnement ne seront pas appliquées. Pour que les variables d'environnement soient modifiées, le déploiement doit être réussi.
Bonnes pratiques
La section suivante met en évidence certaines bonnes pratiques pour configurer les variables d'environnement.
Gérer les secrets
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. Certains environnements d'exécution ou frameworks peuvent entraîner l'envoi du contenu de variables d'environnement vers les journaux. Nous vous déconseillons également de stocker des identifiants sensibles dans des fichiers YAML, des scripts de déploiement ou des systèmes de contrôle des versions. N'oubliez pas que les variables d'environnement sont visibles par toute personne disposant des autorisations de lecteur de projet ou plus.
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 Configurer les secrets.
Il n'existe pas d'intégration spécifique de Cloud KMS avec Cloud Run.
Variables d'environnement réservées
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 pour les fonctions
Cloud Run définit automatiquement les variables d'environnement d'exécution suivantes lors du déploiement de fonctions:
Clé | Description |
---|---|
FUNCTION_TARGET |
Réservée : fonction à exécuter. |
FUNCTION_SIGNATURE_TYPE |
Réservée : type de la fonction : http pour les fonctions HTTP et event pour les fonctions basées sur les événements.
|
K_SERVICE |
Réservée : nom de la ressource de la fonction. |
K_REVISION |
Réservée : identifiant de version de la fonction. |
PORT |
Réservée : port sur lequel la fonction est appelée. |
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.
De plus, 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_ . |
Limites de taille des variables pour les fonctions
Le nombre total d'octets utilisés par les noms et les valeurs des variables d'environnement d'exécution pour une fonction individuelle est limité à 32 Kio. Il n'y a pas de limite spécifique pour les clés ou les valeurs individuelles dans cette capacité globale.
Pour les variables d'environnement de compilation, vous pouvez définir jusqu'à 100 variables, avec la chaîne de définition foo=bar
limitée à 64 Kio.
Utiliser des variables d'environnement portables dans les fonctions
Il est possible que les variables d'environnement qui fonctionnent avec vos fonctions ne fonctionnent pas avec un environnement d'exécution différent, par exemple dans un autre langage, ou avec certains outils et bibliothèques. Il se peut également qu'elles ne soient pas acceptées par une plate-forme différente.
Pour éviter ce type de problèmes, suivez la norme POSIX pour les variables d'environnement.
Si vous utilisez la console Google Cloud pour modifier des variables, vous êtes averti chaque fois que vous définissez une variable susceptible de présenter des problèmes de portabilité. Toutefois, la console n'empêche pas le déploiement. Nous recommandons que les clés des variable d'environnement se composent uniquement de lettres majuscules, de chiffres et du caractère <underscore>
(_
), comme défini dans le jeu de caractères compatibles, et qu'elles ne commencent pas par un chiffre.