Ortam Yapılandırması ve Gizli Bilgiler
Twelve-factor yapılandırması, ortam değişkenleri ve Docker gizli bilgileri
Ortam Yapılandırması ve Gizli Bilgiler, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
12 faktörlü uygulama yapılandırması
12 faktörlü uygulama yöntemi, yapılandırmanın kodda veya yapılandırma dosyalarında değil, ortam değişkenlerinde saklanmasını önerir. Bu, uygulamayı kod değişikliği yapmadan geliştirme, hazırlık ve üretim ortamları arasında taşınabilir hâle getirir.
os.Getenv
Ortam değişkenlerini os.Getenv ile (ayarlanmamışsa "" döndürür) veya os.LookupEnv ile (değer ve varlık bool'u döndürür) okuyun:
port := os.Getenv("PORT")
if port == "" { port = "8080" }
dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }.env dosyalarını yükleme
Geliştirme sırasında .env dosyalarını yüklemek için github.com/joho/godotenv kullanın. Üretimde ortam değişkenlerini platform aracılığıyla (Docker, Kubernetes, bulut) enjekte edin.
godotenv.Load() // loads .env if present; ignores error in prodenvconfig ile yapılandırılmış ayarlar
github.com/kelseyhightower/envconfig, tür dönüştürme ve doğrulama yaparak ortam değişkenlerini yapı alanlarına eşler:
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)Gizli bilgi yönetimi
Gizli bilgileri (parolalar, API anahtarları, TLS sertifikaları) üretimde ortam değişkenlerinde asla saklamayın — bunlar işlem listelerinde ve günlüklerde görünür. Bir gizli bilgi yöneticisi kullanın: AWS Secrets Manager, HashiCorp Vault veya dosya olarak bağlanan Kubernetes Secrets.
Gizli bilgileri dosyalardan okuma
Gizli bilgileri dosya olarak bağlayın ve başlangıçta okuyun:
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 gizli bilgileri
Kubernetes'te Secret değerlerini ortam değişkenleri olarak veya bir birimdeki dosyalar olarak bağlayın. Dosya bağlamaları tercih edilir; çünkü pod yeniden başlatılmadan döndürülebilirler.
Özellik bayrakları
Basit açma/kapatma geçişleri için özellik bayrağı adlarını ortam değişkenlerinde saklayın. Karmaşık bayrak kuralları (yüzde bazlı kullanıma sunma, hedefleme) için özel bir özellik bayrağı hizmeti kullanın.
Başlangıçta yapılandırma doğrulaması
Başlangıçta gerekli tüm yapılandırmaları doğrulayın ve herhangi bir şey eksik veya geçersizse hemen başarısız olun. İlk istekte başarısız olmaktansa hemen çökmesi daha iyidir.
if cfg.DBUrl == "" { log.Fatal("DB_URL required") }Değişmez yapılandırma
Başlangıçtan sonra yapılandırmayı değişmez kabul edin. Canlı yapılandırma güncellemelerine ihtiyacınız varsa, ortam değişkenlerini yeniden yüklemek yerine izleme mekanizmasına sahip bir özellik bayrağı hizmeti veya yapılandırma deposu kullanın.
Testlerde yapılandırma
Bir test süresince ortam değişkenlerini ayarlamak için t.Setenv kullanın. Bu yöntem Go 1.17 ve sonraki sürümlerde paralel testler için güvenlidir.
t.Setenv("PORT", "9090")
// test code here...Hızlı Kontrol
Gizli bilgiler üretimde neden ortam değişkenlerinde saklanmamalıdır?
Özet: Ortam Yapılandırması ve Gizli Bilgiler
Temel noktalar:
- Yapılandırmayı ortam değişkenlerinde saklayın; yerel geliştirmede .env dosyaları için godotenv kullanın
- Varsayılan değerlerle türü belirlenmiş yapı alanlarını doldurmak için envconfig kullanın
- Gizli bilgileri dosya olarak bağlayın; üretimde Vault veya Secrets Manager kullanın
- Tüm yapılandırmaları başlangıçta doğrulayın; herhangi bir şey eksikse hemen başarısız olun
Sıkça Sorulan Sorular
“Ortam Yapılandırması ve Gizli Bilgiler” dersi ücretsiz mi?
Evet — “Ortam Yapılandırması ve Gizli Bilgiler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Ortam Yapılandırması ve Gizli Bilgiler” dersinde ne öğreneceğim?
Twelve-factor yapılandırması, ortam değişkenleri ve Docker gizli bilgileri Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Ortam Yapılandırması ve Gizli Bilgiler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Go için Çok Aşamalı Docker Derlemeleri
- Ortam Yapılandırması ve Gizli Bilgiler
- Yerel Geliştirme için Docker Compose
- Sağlık Denetimleri ve Üretim Ayarları