Apa yang dianggap sebagai praktik yang baik dengan K8S untuk mengelola banyak lingkungan (QA, Pementasan, Produksi, Pengembangan, dll)?
Sebagai contoh, katakanlah sebuah tim sedang mengerjakan produk yang memerlukan penerapan beberapa API, bersama dengan aplikasi front-end. Biasanya, ini membutuhkan setidaknya 2 lingkungan:
- Staging: Untuk iterasi / pengujian dan validasi sebelum merilis ke klien
- Produksi: Ini adalah lingkungan yang dapat diakses klien. Harus berisi fitur yang stabil dan teruji dengan baik.
Jadi, dengan asumsi tim menggunakan Kubernetes, praktik apa yang baik untuk menghosting lingkungan ini? Sejauh ini kami telah mempertimbangkan dua opsi:
- Gunakan cluster K8s untuk setiap lingkungan
- Gunakan hanya satu cluster K8 dan simpan di namespace yang berbeda.
(1) Tampaknya pilihan paling aman karena meminimalkan risiko potensi kesalahan manusia dan kegagalan mesin, yang dapat membahayakan lingkungan produksi. Namun, ini disertai dengan biaya mesin master yang lebih banyak dan juga biaya manajemen infrastruktur yang lebih banyak.
(2) Sepertinya ini menyederhanakan infrastruktur dan manajemen penyebaran karena hanya ada satu cluster tunggal tetapi menimbulkan beberapa pertanyaan seperti:
- Bagaimana cara memastikan bahwa kesalahan manusia dapat berdampak pada lingkungan produksi?
- Bagaimana cara memastikan bahwa beban tinggi di lingkungan pementasan tidak akan menyebabkan hilangnya kinerja di lingkungan produksi?
Mungkin ada beberapa masalah lain, jadi saya menghubungi komunitas K8 di StackOverflow untuk mendapatkan pemahaman yang lebih baik tentang bagaimana orang menghadapi tantangan semacam ini.