Configurazione dell'ambiente e segreti
Configurazione twelve-factor, variabili d'ambiente e segreti Docker
Configurazione dell'ambiente e segreti è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.
Configurazione delle app 12-factor
La metodologia 12-factor app raccomanda di memorizzare la configurazione nelle variabili d'ambiente, non nel codice o nei file di configurazione. In questo modo l'app può essere portata tra gli ambienti di sviluppo, staging e produzione senza modifiche al codice.
os.Getenv
Legga le variabili d'ambiente con os.Getenv (restituisce "" se la variabile non è impostata) oppure con os.LookupEnv (restituisce il valore e un booleano che indica la presenza):
port := os.Getenv("PORT")
if port == "" { port = "8080" }
dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }Caricamento dei file .env
Utilizzi github.com/joho/godotenv per caricare i file .env durante lo sviluppo. In produzione, inietti le variabili d'ambiente tramite la piattaforma (Docker, Kubernetes, cloud).
godotenv.Load() // loads .env if present; ignores error in prodConfigurazione strutturata con envconfig
github.com/kelseyhightower/envconfig associa le variabili d'ambiente ai campi di una struct, eseguendo la conversione dei tipi e la validazione:
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)Gestione dei segreti
Non memorizzi mai i segreti (password, chiavi API, certificati TLS) nelle variabili d'ambiente in produzione: sono visibili negli elenchi dei processi e nei log. Utilizzi un secrets manager: AWS Secrets Manager, HashiCorp Vault oppure Kubernetes Secrets montati come file.
Lettura dei segreti dai file
Monti i segreti come file e li legga all'avvio:
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)))Segreti in Kubernetes
In Kubernetes, monti i valori dei Secret come variabili d'ambiente o come file in un volume. I mount come file sono preferibili, perché possono essere ruotati senza riavviare il pod.
Feature flag
Memorizzi i nomi delle feature flag nelle variabili d'ambiente per semplici attivazioni o disattivazioni. Per regole più complesse (rilasci progressivi, targeting), utilizzi un servizio dedicato per le feature flag.
Validazione della configurazione all'avvio
Valide tutta la configurazione obbligatoria all'avvio e interrompa subito l'esecuzione se manca qualcosa o se un valore non è valido. È preferibile arrestarsi immediatamente piuttosto che fallire alla prima richiesta.
if cfg.DBUrl == "" { log.Fatal("DB_URL required") }Configurazione immutabile
Consideri la configurazione immutabile dopo l'avvio. Se sono necessari aggiornamenti della configurazione in tempo reale, utilizzi un servizio per le feature flag o un config store con un meccanismo di watch, non il ricaricamento a caldo delle variabili d'ambiente.
Configurazione nei test
Utilizzi t.Setenv per impostare le variabili d'ambiente per la durata di un test. Questa operazione è sicura per i test paralleli in Go 1.17+.
t.Setenv("PORT", "9090")
// test code here...Verifica rapida
Perché i segreti non devono essere memorizzati nelle variabili d'ambiente in produzione?
Riepilogo: configurazione d'ambiente e segreti
Punti chiave:
- Memorizzi la configurazione nelle variabili d'ambiente; utilizzi godotenv per i file .env nello sviluppo locale
- Utilizzi envconfig per popolare struct tipizzate con valori predefiniti
- Monti i segreti come file; in produzione utilizzi Vault o Secrets Manager
- Valide tutta la configurazione all'avvio; interrompa subito l'esecuzione se manca qualcosa
Impara Go con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 51
- Lezioni
- 203
Domande Frequenti
La lezione «Configurazione dell'ambiente e segreti» è gratuita?
Sì — il testo completo di «Configurazione dell'ambiente e segreti» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.
Cosa imparerò in «Configurazione dell'ambiente e segreti»?
Configurazione twelve-factor, variabili d'ambiente e segreti Docker Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Go Academy?
Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Configurazione dell'ambiente e segreti»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Go Academy?
Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Build Docker multi-stage per Go
- Configurazione dell'ambiente e segreti
- Docker Compose per lo sviluppo locale
- Health check e ottimizzazione per la produzione