Go Academy · Les

Omgevingsconfiguratie en secrets

Twelve-factor-configuratie, omgevingsvariabelen en Docker-secrets

Les 2 van 413 stappen

Omgevingsconfiguratie en secrets is een gratis Go Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Go Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Go Academy bevat in totaal 4 lessen.

Configuratie van een 12-factor-app

De 12-factor-appmethodologie raadt aan configuratie op te slaan in omgevingsvariabelen, niet in code of configuratiebestanden. Daardoor is de app draagbaar tussen ontwikkel-, staging- en productieomgevingen zonder wijzigingen in de code.

os.Getenv

Lees omgevingsvariabelen met os.Getenv (retourneert "" als deze niet is ingesteld) of os.LookupEnv (retourneert de waarde en een boolean die aangeeft of de variabele aanwezig is):

port := os.Getenv("PORT")
if port == "" { port = "8080" }

dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }

.env-bestanden laden

Gebruik github.com/joho/godotenv om tijdens de ontwikkeling .env-bestanden te laden. Injecteer in productie omgevingsvariabelen via het platform (Docker, Kubernetes, cloud).

godotenv.Load() // loads .env if present; ignores error in prod

Gestructureerde configuratie met envconfig

github.com/kelseyhightower/envconfig koppelt omgevingsvariabelen aan structvelden, inclusief typeconversie en validatie:

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)

Geheimen beheren

Sla geheimen (wachtwoorden, API-sleutels, TLS-certificaten) nooit op in omgevingsvariabelen in productie — ze verschijnen in proceslijsten en logboeken. Gebruik een geheimenbeheerder: AWS Secrets Manager, HashiCorp Vault of Kubernetes Secrets die als bestanden zijn gekoppeld.

Geheimen uit bestanden lezen

Koppel geheimen als bestanden en lees ze bij het opstarten:

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-geheimen

Koppel in Kubernetes Secret-waarden als omgevingsvariabelen of als bestanden in een volume. Koppelingen als bestanden hebben de voorkeur, omdat je ze kunt vervangen zonder de pod opnieuw te starten.

Functievlaggen

Sla namen van functievlaggen op in omgevingsvariabelen voor eenvoudige aan-uit-schakelaars. Gebruik voor complexe regels voor functievlaggen (uitrolpercentages, doelgroepselectie) een speciale dienst voor functievlaggen.

Configuratie valideren bij het opstarten

Valideer alle vereiste configuratie bij het opstarten en stop meteen als er iets ontbreekt of ongeldig is. Het is beter om onmiddellijk te stoppen dan pas bij het eerste verzoek te falen.

if cfg.DBUrl == "" { log.Fatal("DB_URL required") }

Onveranderlijke configuratie

Behandel configuratie na het opstarten als onveranderlijk. Gebruik voor live configuratie-updates een dienst voor functievlaggen of een configuratieopslag met een bewakingsmechanisme, niet het opnieuw laden van omgevingsvariabelen.

Configuratie in tests

Gebruik t.Setenv om omgevingsvariabelen in te stellen voor de duur van een test. Dit is veilig voor parallelle tests in Go 1.17 en hoger.

t.Setenv("PORT", "9090")
// test code here...

Korte controle

Waarom mogen geheimen in productie niet in omgevingsvariabelen worden opgeslagen?

Samenvatting: omgevingsconfiguratie en geheimen

Belangrijkste punten:

  • Sla configuratie op in omgevingsvariabelen; gebruik godotenv voor lokale .env-bestanden
  • Gebruik envconfig om structs met typen en standaardwaarden te vullen
  • Koppel geheimen als bestanden; gebruik Vault of Secrets Manager in productie
  • Valideer alle configuratie bij het opstarten; stop meteen als er iets ontbreekt
Gratis beginnen

Leer Go met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “Omgevingsconfiguratie en secrets” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Go Academy, waaronder “Omgevingsconfiguratie en secrets”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Go Academy bevat in totaal 4 lessen.

Wat leer ik in “Omgevingsconfiguratie en secrets”?

Twelve-factor-configuratie, omgevingsvariabelen en Docker-secrets Je oefent met Go Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Go Academy te beginnen?

Ervaring vooraf is niet nodig. Go Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Omgevingsconfiguratie en secrets”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Go Academy?

Ja. Elke les over Go Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Docker-builds met meerdere stages voor Go
  2. Omgevingsconfiguratie en secrets
  3. Docker Compose voor lokale ontwikkeling
  4. Healthchecks en tuning voor productie
← Terug naar Go Academy