Senario
Satu pasukan menggunakan GitOps (Argo CD) untuk menggunakan mikroperkhidmatan di Kubernetes. Saluran paip CI/CD mereka termasuk binaan kod, tolak imej Docker, kemas kini Carta Helm, dan penyegerakan automatik. Baru-baru ini, penggunaan sering gagal: pod baharu memasuki CrashLoopBackOff, ketidakpadanan konfigurasi menyebabkan degradasi perkhidmatan, dan rollback mengambil purata 15 minit. Pasukan mahukan sistem pengawal yang mantap untuk mengesan masalah sebelum memberi kesan kepada pengguna.
Gejala
- Penggunaan tersekat: Argo CD menunjukkan
OutOfSync, masa tamat penyegerakan (>10 minit) - Pod tidak normal:
kubectl get podsmenunjukkan banyakCrashLoopBackOffatauImagePullBackOff - Konfigurasi hanyut: Kandungan ConfigMap atau Secret berbeza merentas dev/staging/prod
- Saluran paip merah: Kerja CI gagal tetapi CD masih berjalan; atau CI lulus tetapi CD gagal
- Rollback manual kerap: Pemulihan secara
kubectl rollout undoatau revert Git
Langkah Diagnosis
- Semak log CI/CD:
- Jenkins/GitLab CI: cari kegagalan ujian atau ralat binaan dalam
pipeline.log- Argo CD:argocd app get <app> --show-paramsuntuk melihat perbezaan - Acara Kubernetes:
bash kubectl describe pod <pod-name> -n <namespace> kubectl get events --sort-by='.lastTimestamp' -n <namespace> - Perbezaan nilai Helm:
bash helm diff upgrade -n <namespace> <release> <chart> --values values-prod.yaml - Pemeriksaan rangkaian dan kebergantungan:
bash kubectl exec -it <pod> -- curl http://service-a:8080/health
Contoh Arahan
Pra-semak hanyutan konfigurasi dengan Helm diff
helm diff upgrade --install my-app ./chart -f values/staging.yaml --dry-run --allow-unreleased
Hentikan saluran paip jika output tidak kosong.
Rollback ke versi sebelumnya
helm rollback my-app 0
# atau
kubectl rollout undo deployment/my-app -n production
Segerakkan Argo CD secara paksa (kecemasan)
argocd app sync my-app --prune --force
Kawalan Risiko
- Tag imej tidak berubah: Larang
latest; gunakangit-sha1atau versi semantik. - Pintu kelulusan: Permintaan gabung memerlukan kelulusan dua jurutera kanan dan lulus pintu kualiti SonarQube.
- Pengesahan pra-gabung: Jalankan ujian e2e penuh dalam repositori fork; tandakan hijau sebelum gabung.
- Imbasan rahsia: Integrasikan
trufflehogataugit-secretsdalam CI untuk menyekat kebocoran maklumat sensitif. - Polisi sebagai kod: Gunakan OPA atau Kyverno untuk menguatkuasakan had sumber, larang kontena istimewa, dsb.
- Blue-green atau canary: Hala hanya 10% trafik ke versi baharu; rollback automatik jika kadar ralat melebihi ambang.
Strategi Rollback
- Git revert: Lakukan revert komit dan tolak ke main; Argo CD menyegerak automatik.
- Helm rollback:
helm rollback <release> <revision>. - Kubernetes:
kubectl rollout undo deployment/my-app. - Rollback pangkalan data: Untuk perubahan skema, gunakan skrip migrasi ke bawah (contoh:
flyway undo).
Nota keselamatan: Rekod keadaan semasa sebelum rollback untuk mengelakkan kehilangan data. Ikut kelulusan standard untuk situasi tidak kritikal.
Langkah Pengesahan
- Pemeriksaan kesihatan:
bash curl -f http://new-app.internal/health || echo "Gagal" - Pemantauan sintetik: Sediakan pemberitahuan Datadog atau Prometheus pada kependaman p99 atau kadar ralat.
- Persampelan log:
kubectl logs -l app=my-app --tail=50periksa tiada ERROR. - Perbandingan diff:
bash argocd app diff my-app --local
Bila Menghantar Tiket OpsGlobal
- Semua rollback manual gagal (contoh:
helm rollbackmengembalikan ralat) - Ketidaktekalan data menyebabkan kehilangan data separa
- Pelbagai persekitaran tidak normal serentak, mengesyaki isu infrastruktur
- Konfigurasi enjin polisi (OPA) tersalah yang menyekat semua penggunaan
- Rollback kompleks memerlukan penyelarasan merentas pasukan (contoh: pangkalan data kongsi)
Semasa menghantar, sertakan: huraian gejala, log kubectl/helm, tangkapan skrin status Argo CD, dan rajah impak mermaid.
Kesimpulan
Melaksanakan pengawal ini mengurangkan kadar kegagalan penggunaan sebanyak 80% dan purata masa rollback dari 15 minit kepada 3 minit. Perkara utama: automasi diagnosis, infrastruktur tidak berubah, mekanisme pra-semak, dan laluan eskalasi yang jelas.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu CI/CD dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini membincangkan pembinaan pengawal CI/CD yang berkesan dalam persekitaran Kubernetes/GitOps, meliputi senario sebenar, diagnosis gejala, arahan, kawalan risiko, strategi rollback, pengesahan, dan bila perlu menghubungi OpsGlobal.
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.