Configuration de l’environnement et secrets
Configuration selon les douze facteurs, variables d’environnement et secrets Docker
Configuration de l’environnement et secrets est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Configuration d’une application à 12 facteurs
La méthode des applications à 12 facteurs recommande de stocker la configuration dans des variables d’environnement, et non dans le code ou des fichiers de configuration. Cela rend l’application portable entre développement, préproduction et production sans modification du code.
os.Getenv
Lisez les variables d’environnement avec os.Getenv (renvoie "" si la variable n’est pas définie) ou os.LookupEnv (renvoie la valeur et un booléen indiquant sa présence) :
port := os.Getenv("PORT")
if port == "" { port = "8080" }
dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }Chargement des fichiers .env
Utilisez github.com/joho/godotenv pour charger les fichiers .env en développement. En production, injectez les variables d’environnement via la plateforme (Docker, Kubernetes, cloud).
godotenv.Load() // loads .env if present; ignores error in prodConfiguration structurée avec envconfig
github.com/kelseyhightower/envconfig associe les variables d’environnement aux champs d’une structure, avec conversion des types et validation :
type Config struct {
Port int `envconfig:"PORT" default:"8080"`
DBUrl string `envconfig:"DB_URL" required:"true"`
LogLevel string `envconfig:"LOG_LEVEL" default:"info"`
}
var cfg Config
envconfig.MustProcess("", &cfg)Gestion des secrets
Ne stockez jamais les secrets (mots de passe, clés API, certificats TLS) dans des variables d’environnement en production : ils apparaissent dans les listes de processus et les journaux. Utilisez un gestionnaire de secrets : AWS Secrets Manager, HashiCorp Vault ou des Secrets Kubernetes montés sous forme de fichiers.
Lecture des secrets depuis des fichiers
Montez les secrets sous forme de fichiers et lisez-les au démarrage :
secret, err := os.ReadFile("/run/secrets/db_password")
if err != nil { log.Fatal(err) }
dsn := fmt.Sprintf("postgres://user:%s@host/db", strings.TrimSpace(string(secret)))Secrets Kubernetes
Dans Kubernetes, montez les valeurs des objets Secret en tant que variables d’environnement ou sous forme de fichiers dans un volume. Les montages de fichiers sont préférables, car ils peuvent être renouvelés sans redémarrer le pod.
Indicateurs de fonctionnalités
Stockez les noms des indicateurs de fonctionnalités dans des variables d’environnement pour gérer simplement des activations et désactivations. Pour des règles complexes (déploiements par pourcentage, ciblage), utilisez un service dédié de gestion des indicateurs de fonctionnalités.
Validation de la configuration au démarrage
Validez toute la configuration requise au démarrage et échouez immédiatement si un élément est manquant ou invalide. Il vaut mieux arrêter l’application immédiatement que d’échouer lors de la première requête.
if cfg.DBUrl == "" { log.Fatal("DB_URL required") }Configuration immuable
Considérez la configuration comme immuable après le démarrage. Si vous avez besoin de mises à jour dynamiques, utilisez un service d’indicateurs de fonctionnalités ou un magasin de configuration doté d’un mécanisme de surveillance, plutôt que de recharger automatiquement les variables d’environnement.
Configuration dans les tests
Utilisez t.Setenv pour définir des variables d’environnement pendant toute la durée d’un test. Cette méthode est sûre pour les tests parallèles avec Go 1.17 et les versions ultérieures.
t.Setenv("PORT", "9090")
// test code here...Vérification rapide
Pourquoi les secrets ne doivent-ils pas être stockés dans des variables d’environnement en production ?
Récapitulatif : configuration de l’environnement et secrets
Points clés :
- Stockez la configuration dans des variables d’environnement ; utilisez godotenv pour les fichiers .env du développement local
- Utilisez envconfig pour remplir des structures typées avec des valeurs par défaut
- Montez les secrets sous forme de fichiers ; utilisez Vault ou Secrets Manager en production
- Validez toute la configuration au démarrage ; échouez immédiatement si un élément est manquant
Apprends Go avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 51
- Leçons
- 203
Questions Fréquemment Posées
La leçon « Configuration de l’environnement et secrets » est-elle gratuite ?
Oui — le texte complet de « Configuration de l’environnement et secrets » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Configuration de l’environnement et secrets » ?
Configuration selon les douze facteurs, variables d’environnement et secrets Docker Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Configuration de l’environnement et secrets » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Builds Docker en plusieurs étapes pour Go
- Configuration de l’environnement et secrets
- Docker Compose pour le développement local
- Contrôles d’état et réglages de production