Konfigurasi Lingkungan dan Rahasia
Konfigurasi twelve-factor, variabel lingkungan, dan rahasia Docker
Konfigurasi Lingkungan dan Rahasia adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Konfigurasi aplikasi 12 faktor
Metodologi aplikasi 12 faktor merekomendasikan penyimpanan konfigurasi dalam variabel lingkungan, bukan dalam kode atau berkas konfigurasi. Dengan demikian, aplikasi dapat dipindahkan antara lingkungan pengembangan, staging, dan produksi tanpa perubahan kode.
os.Getenv
Baca variabel lingkungan dengan os.Getenv (mengembalikan "" jika tidak diatur) atau os.LookupEnv (mengembalikan nilai dan boolean yang menunjukkan keberadaan variabel):
port := os.Getenv("PORT")
if port == "" { port = "8080" }
dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }Memuat berkas .env
Gunakan github.com/joho/godotenv untuk memuat berkas .env selama pengembangan. Dalam produksi, masukkan variabel lingkungan melalui platform (Docker, Kubernetes, cloud).
godotenv.Load() // loads .env if present; ignores error in prodKonfigurasi terstruktur dengan envconfig
github.com/kelseyhightower/envconfig memetakan variabel lingkungan ke bidang struct dengan konversi tipe dan validasi:
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)Manajemen rahasia
Jangan pernah menyimpan rahasia (kata sandi, kunci API, sertifikat TLS) dalam variabel lingkungan di produksi—rahasia tersebut dapat muncul dalam daftar proses dan log. Gunakan pengelola rahasia: AWS Secrets Manager, HashiCorp Vault, atau Kubernetes Secrets yang dipasang sebagai berkas.
Membaca rahasia dari berkas
Pasang rahasia sebagai berkas dan baca saat aplikasi dimulai:
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)))Rahasia Kubernetes
Di Kubernetes, pasang nilai Secret sebagai variabel lingkungan atau sebagai berkas dalam volume. Pemasangan berkas lebih disarankan karena dapat diputar ulang tanpa memulai ulang pod.
Bendera fitur
Simpan nama bendera fitur dalam variabel lingkungan untuk pengaktifan atau penonaktifan sederhana. Untuk aturan bendera yang kompleks (peluncuran berdasarkan persentase, penargetan), gunakan layanan bendera fitur khusus.
Validasi konfigurasi saat aplikasi dimulai
Validasi semua konfigurasi yang diperlukan saat aplikasi dimulai dan segera hentikan aplikasi jika ada yang hilang atau tidak valid. Lebih baik aplikasi langsung gagal daripada gagal saat menerima permintaan pertama.
if cfg.DBUrl == "" { log.Fatal("DB_URL required") }Konfigurasi tidak berubah
Perlakukan konfigurasi sebagai sesuatu yang tidak berubah setelah aplikasi dimulai. Jika memerlukan pembaruan konfigurasi secara langsung, gunakan layanan bendera fitur atau penyimpanan konfigurasi dengan mekanisme pemantauan, bukan memuat ulang variabel lingkungan secara langsung.
Konfigurasi dalam pengujian
Gunakan t.Setenv untuk menetapkan variabel lingkungan selama pengujian berlangsung. Cara ini aman untuk pengujian paralel di Go 1.17+.
t.Setenv("PORT", "9090")
// test code here...Pemeriksaan Singkat
Mengapa rahasia tidak boleh disimpan dalam variabel lingkungan di produksi?
Ringkasan: Konfigurasi Lingkungan dan Rahasia
Poin penting:
- Simpan konfigurasi dalam variabel lingkungan; gunakan godotenv untuk berkas .env selama pengembangan lokal
- Gunakan envconfig untuk mengisi struct bertipe dengan nilai bawaan
- Pasang rahasia sebagai berkas; gunakan Vault/Secrets Manager dalam produksi
- Validasi semua konfigurasi saat aplikasi dimulai; segera hentikan aplikasi jika ada yang hilang
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Konfigurasi Lingkungan dan Rahasia” gratis?
Ya — teks lengkap “Konfigurasi Lingkungan dan Rahasia” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Konfigurasi Lingkungan dan Rahasia”?
Konfigurasi twelve-factor, variabel lingkungan, dan rahasia Docker Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Konfigurasi Lingkungan dan Rahasia” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Build Docker Multitahap untuk Go
- Konfigurasi Lingkungan dan Rahasia
- Docker Compose untuk Pengembangan Lokal
- Pemeriksaan Kesehatan dan Penyetelan Produksi