Umgebungskonfiguration und Secrets
Konfiguration nach dem Twelve-Factor-Prinzip, Umgebungsvariablen und Docker-Secrets
Umgebungskonfiguration und Secrets ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Konfiguration für 12-Factor-Apps
Die 12-Factor-App-Methodik empfiehlt, die Konfiguration in Umgebungsvariablen statt im Code oder in Konfigurationsdateien zu speichern. Dadurch bleibt die Anwendung über Entwicklungs-, Staging- und Produktionsumgebungen hinweg portierbar, ohne dass Codeänderungen erforderlich sind.
os.Getenv
Lesen Sie Umgebungsvariablen mit os.Getenv (gibt bei nicht gesetzter Variable "" zurück) oder os.LookupEnv (gibt den Wert und ein boolesches Vorhandenseinsergebnis zurück):
port := os.Getenv("PORT")
if port == "" { port = "8080" }
dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }`.env`-Dateien laden
Verwenden Sie github.com/joho/godotenv, um .env-Dateien in der Entwicklung zu laden. Injizieren Sie Umgebungsvariablen in der Produktion über die Plattform (Docker, Kubernetes, Cloud).
godotenv.Load() // loads .env if present; ignores error in prodStrukturierte Konfiguration mit envconfig
github.com/kelseyhightower/envconfig ordnet Umgebungsvariablen Struct-Feldern zu und führt Typkonvertierung und Validierung durch:
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)Secrets-Management
Speichern Sie Secrets (Passwörter, API-Schlüssel, TLS-Zertifikate) niemals in Umgebungsvariablen in der Produktion — sie erscheinen in Prozesslisten und Logs. Verwenden Sie einen Secrets Manager: AWS Secrets Manager, HashiCorp Vault oder Kubernetes Secrets, die als Dateien eingebunden werden.
Secrets aus Dateien lesen
Binden Sie Secrets als Dateien ein und lesen Sie sie beim Start:
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)))Kubernetes-Secrets
Binden Sie Secret-Werte in Kubernetes als Umgebungsvariablen oder als Dateien in einem Volume ein. Datei-Einbindungen werden bevorzugt, da sie ohne Neustart des Pods rotiert werden können.
Feature-Flags
Speichern Sie die Namen von Feature-Flags für einfache Ein-/Ausschalter in Umgebungsvariablen. Für komplexe Flag-Regeln (prozentuale Ausrollungen, Zielgruppen) verwenden Sie einen dedizierten Feature-Flag-Dienst.
Konfigurationsvalidierung beim Start
Validieren Sie beim Start die gesamte erforderliche Konfiguration und brechen Sie sofort ab, wenn etwas fehlt oder ungültig ist. Es ist besser, sofort abzustürzen, als bei der ersten Anfrage fehlschlagen.
if cfg.DBUrl == "" { log.Fatal("DB_URL required") }Unveränderliche Konfiguration
Behandeln Sie die Konfiguration nach dem Start als unveränderlich. Wenn Sie Live-Aktualisierungen der Konfiguration benötigen, verwenden Sie einen Feature-Flag-Dienst oder einen Konfigurationsspeicher mit Watch-Mechanismus statt Hot-Reloading von Umgebungsvariablen.
Konfiguration in Tests
Verwenden Sie t.Setenv, um Umgebungsvariablen für die Dauer eines Tests zu setzen. Das ist bei parallelen Tests in Go 1.17+ sicher.
t.Setenv("PORT", "9090")
// test code here...Schnelltest
Warum sollten Secrets in der Produktion nicht in Umgebungsvariablen gespeichert werden?
Zusammenfassung: Umgebungsvariablen und Secrets
Wichtige Punkte:
- Speichern Sie die Konfiguration in Umgebungsvariablen; verwenden Sie godotenv für lokale .env-Dateien in der Entwicklung
- envconfig zum Befüllen typisierter Structs mit Standardwerten
- Binden Sie Secrets als Dateien ein; verwenden Sie Vault oder Secrets Manager in der Produktion
- Validieren Sie die gesamte Konfiguration beim Start; brechen Sie sofort ab, wenn etwas fehlt
Lerne Go mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 51
- Lektionen
- 203
Häufig gestellte Fragen
Ist die Lektion „Umgebungskonfiguration und Secrets“ kostenlos?
Ja — der vollständige Text von „Umgebungskonfiguration und Secrets“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Umgebungskonfiguration und Secrets“?
Konfiguration nach dem Twelve-Factor-Prinzip, Umgebungsvariablen und Docker-Secrets Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Umgebungskonfiguration und Secrets“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Mehrstufige Docker-Builds für Go
- Umgebungskonfiguration und Secrets
- Docker Compose für die lokale Entwicklung
- Health Checks und Tuning für Produktion