Go Academy · Lekcja

Konfiguracja środowiska i sekrety

Konfiguracja zgodna z zasadami Twelve-Factor, zmienne środowiskowe i sekrety Dockera

Lekcja 2 z 413 kroki

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 prod

Ustrukturyzowana 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
Bezpłatny start

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

  1. Wieloetapowe kompilacje Dockera dla Go
  2. Konfiguracja środowiska i sekrety
  3. Docker Compose w lokalnym środowisku programistycznym
  4. Kontrole kondycji i dostrajanie produkcyjne
← Powrót do Go Academy