Konfiguracja środowiska i sekrety
Konfiguracja zgodna z zasadami Twelve-Factor, zmienne środowiskowe i sekrety Dockera
Konfiguracja środowiska i sekrety to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Konfiguracja aplikacji 12-factor
Metodologia aplikacji 12-factor zaleca przechowywanie konfiguracji w zmiennych środowiskowych, a nie w kodzie ani plikach konfiguracyjnych. Dzięki temu aplikacja jest przenośna między środowiskami deweloperskimi, stagingowymi i produkcyjnymi bez zmian w kodzie.
os.Getenv
Zmienne środowiskowe należy odczytywać za pomocą os.Getenv (zwraca "", jeśli zmienna nie jest ustawiona) albo os.LookupEnv (zwraca wartość i wartość logiczną informującą o obecności):
port := os.Getenv("PORT")
if port == "" { port = "8080" }
dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }Wczytywanie plików .env
Podczas programowania używaj github.com/joho/godotenv do wczytywania plików .env. W środowisku produkcyjnym wstrzykuj zmienne środowiskowe za pośrednictwem platformy (Docker, Kubernetes, chmura).
godotenv.Load() // loads .env if present; ignores error in prodUstrukturyzowana konfiguracja za pomocą envconfig
github.com/kelseyhightower/envconfig mapuje zmienne środowiskowe na pola struktur, przeprowadzając konwersję typów i walidację:
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)Zarządzanie sekretami
Nigdy nie przechowuj sekretów (haseł, kluczy API, certyfikatów TLS) w zmiennych środowiskowych w środowisku produkcyjnym — pojawiają się one na listach procesów i w logach. Używaj menedżera sekretów: AWS Secrets Manager, HashiCorp Vault lub Kubernetes Secrets zamontowanych jako pliki.
Odczytywanie sekretów z plików
Montuj sekrety jako pliki i odczytuj je podczas uruchamiania:
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)))Sekrety Kubernetes
W Kubernetes montuj wartości Secret jako zmienne środowiskowe albo jako pliki w wolumenie. Preferowane są montowania plikowe, ponieważ można je rotować bez ponownego uruchamiania poda.
Przełączniki funkcji
Przechowuj nazwy przełączników funkcji w zmiennych środowiskowych, aby obsługiwać proste przełączanie włączone/wyłączone. W przypadku złożonych reguł (wdrażanie dla określonego odsetka użytkowników, kierowanie do konkretnych grup) używaj dedykowanej usługi przełączników funkcji.
Walidacja konfiguracji podczas uruchamiania
Weryfikuj całą wymaganą konfigurację podczas uruchamiania i natychmiast przerywaj działanie, jeśli czegoś brakuje lub coś jest nieprawidłowe. Lepiej zakończyć działanie od razu niż dopuścić do błędu przy pierwszym żądaniu.
if cfg.DBUrl == "" { log.Fatal("DB_URL required") }Niezmienna konfiguracja
Traktuj konfigurację jako niezmienną po uruchomieniu. Jeśli potrzebujesz aktualizacji konfiguracji w czasie działania, użyj usługi przełączników funkcji albo magazynu konfiguracji z mechanizmem obserwowania zmian, a nie dynamicznego ponownego wczytywania zmiennych środowiskowych.
Konfiguracja w testach
Używaj t.Setenv do ustawiania zmiennych środowiskowych na czas trwania testu. Jest to bezpieczne w przypadku testów równoległych w Go 1.17+.
t.Setenv("PORT", "9090")
// test code here...Szybkie sprawdzenie
Dlaczego nie należy przechowywać sekretów w zmiennych środowiskowych w środowisku produkcyjnym?
Podsumowanie: konfiguracja środowiska i sekrety
Najważniejsze informacje:
- Przechowuj konfigurację w zmiennych środowiskowych; używaj godotenv do lokalnych plików .env
- Używaj envconfig do wypełniania typowanych struktur z wartościami domyślnymi
- Montuj sekrety jako pliki; w środowisku produkcyjnym używaj Vault/Secrets Manager
- Weryfikuj całą konfigurację podczas uruchamiania; natychmiast przerywaj działanie, jeśli czegoś brakuje
Ucz się Go dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Konfiguracja środowiska i sekrety” jest bezpłatna?
Tak — pełny tekst „Konfiguracja środowiska i sekrety” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Konfiguracja środowiska i sekrety”?
Konfiguracja zgodna z zasadami Twelve-Factor, zmienne środowiskowe i sekrety Dockera Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Konfiguracja środowiska i sekrety”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wieloetapowe kompilacje Dockera dla Go
- Konfiguracja środowiska i sekrety
- Docker Compose w lokalnym środowisku programistycznym
- Kontrole kondycji i dostrajanie produkcyjne