Go Academy · Lektion

Umgebungskonfiguration und Secrets

Konfiguration nach dem Twelve-Factor-Prinzip, Umgebungsvariablen und Docker-Secrets

Lektion 2 von 413 Schritte

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 prod

Strukturierte 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
Kostenlos starten

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

  1. Mehrstufige Docker-Builds für Go
  2. Umgebungskonfiguration und Secrets
  3. Docker Compose für die lokale Entwicklung
  4. Health Checks und Tuning für Produktion
← Zurück zu Go Academy