Perlindungan Kejuruteraan Pelepasan: Melindungi Pengeluaran dengan Penghantaran Progresif
Senario
Pasukan anda mengendalikan platform mikroservis kritikal di atas Kubernetes. Proses pelepasan dilakukan secara manual: pembangun menggabungkan kod, menolak ke cawangan, dan menggunakan kubectl set image. Baru-baru ini, satu penggunaan yang salah konfigurasi menyebabkan perkhidmatan pembayaran tergendala selama 30 minit. Pihak perniagaan tidak berpuas hati, dan pasukan on-call keletihan.
Simptom
- Tiada pemisahan antara kredensial binaan dan pengeluaran.
- Mana-mana jurutera boleh mencetuskan penggunaan pengeluaran.
- Tiada pengesahan automatik selepas penggunaan.
- Penggulingan dibuat secara manual dan mudah tersilap.
- Pelepasan yang gagal menyebabkan insiden berulang dan keletihan amaran.
Diagnosis
Masalah utama ialah kekurangan perlindungan kejuruteraan pelepasan. Anda perlu menentukan saluran paip yang menguatkuasakan keselamatan pada setiap peringkat: daripada komitmen kod kepada pemindahan trafik pengeluaran.
Arahan dan Konfigurasi
Mulakan dengan menambah peringkat CI yang membina dan menguji setiap komitmen. Kemudian, gunakan alat GitOps seperti Argo CD atau Flux untuk mengawal keadaan yang diingini. Untuk penghantaran progresif, gunakan Argo Rollouts untuk analisis kenari.
Contoh spesifikasi Argo Rollout:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
strategy:
canary:
steps:
- setWeight: 10
- pause: {duration: 5m}
- setWeight: 50
- pause: {duration: 5m}
Gunakan versi baharu:
kubectl argo rollouts set image my-app my-app=myapp:v2
kubectl argo rollouts get rollout my-app
Jika pengesahan gagal, batalkan:
kubectl argo rollouts abort my-app
Untuk migrasi pangkalan data, gunakan tugas migrasi khusus yang dijalankan sebelum pelepasan. Jangan sekali-kali mengikat migrasi kepada pod perkhidmatan yang sedang berjalan.
Kawalan Risiko
- Gunakan kredensial jangka pendek daripada pengurus rahsia (cth., Vault, AWS Secrets Manager) untuk CI/CD.
- Aktifkan RBAC berbutir halus: akses tulis pengeluaran hanya untuk robot CI, bukan jurutera.
- Saring penggunaan pengeluaran dengan kelulusan manual dalam sistem CD.
- Tandatangani imej kontena dan kuatkuasakan pengesahan pada kemasukan kluster.
- Asingkan rahsia untuk namespace ujian dan pengeluaran.
Penggulingan
Penggulingan sepatutnya diautomatikkan di mana mungkin. Dalam GitOps, anda hanya perlu membalikkan komitmen Git; sistem sinkron akan melakukan selebihnya.
Untuk menggulingkan pelepasan:
kubectl argo rollouts undo my-app
Gunakan versi stabil sebelumnya:
kubectl argo rollouts history my-app --revisions
Simpan N manifes stabil terakhir untuk pemulihan pantas.
Pengesahan
- Tentukan prob kesediaan dan ketersediaan yang benar-benar memeriksa kesihatan aplikasi.
- Gunakan pemantauan sintetik untuk mensimulasikan trafik pengguna.
- Pantau isyarat emas: kadar ralat, kependaman, trafik, ketepuan.
- Integrasikan dengan Prometheus dan Grafana, dan tetapkan amaran untuk analisis kenari.
Bila Perlu Hantar Tiket OpsGlobal
Jika pasukan anda tidak mempunyai kapasiti untuk membina perlindungan ini, atau anda memerlukan bantuan dengan insiden yang sedang berlangsung, hantar tiket kepada OpsGlobal. Kami boleh melaksanakan saluran paip CI/CD yang selamat, mengonfigurasi penggulingan automatik, dan menyediakan sokongan kebolehpercayaan tapak 24/7.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu CI/CD dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Pelajari cara melaksanakan perlindungan CI/CD untuk mengelakkan gelinciran berisiko dan membolehkan penggulingan automatik, mengurangkan insiden pengeluaran.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.