Senario
Satu pasukan menggunakan aplikasi beberapa kali sehari tetapi sering menghadapi gangguan pengeluaran. Selepas penggunaan, pemantauan menunjukkan lonjakan kadar ralat dan pemeriksaan kesihatan gagal. Pasukan terburu-buru untuk membuat gulung balik, tetapi kekurangan automasi menyebabkan masa henti yang panjang.
Gejala
- Kadar ralat meningkat >20% dalam masa 5 minit selepas penggunaan
- Pemeriksaan kesihatan Pod Kubernetes gagal
- Pengguna melaporkan ketidaktersediaan ciri
- Gulung balik mengambil masa >10 minit secara manual
Diagnosis
Punca utama: ketiadaan pagar pelindung CI/CD. Tiada ujian pra-penggunaan automatik, analisis canary yang tidak mencukupi, dan prosedur gulung balik yang tidak matang. Isu khusus: 1. Saluran paip tidak mempunyai ujian integrasi atau imbasan keselamatan 2. Penggunaan terus ke pengeluaran tanpa canary 3. Tiada pencetus gulung balik automatik 4. Ambang pemeriksaan kesihatan tidak dikonfigurasi dengan betul
Arahan
Laksanakan pagar pelindung dalam GitHub Actions:
# Ujian pra-penggunaan
- name: Run integration tests
run: make test-integration
# Penggunaan canary
- name: Deploy canary
run: |
kubectl set image deployment/app-canary app=myapp:${GITHUB_SHA} --record
kubectl rollout status deployment/app-canary --timeout=5m
# Pemeriksaan kesihatan
- name: Verify canary health
run: |
kubectl run curl --image=radial/busyboxplus:curl -i --rm --restart=Never -- curl -f http://canary-service/health
# Gulung balik automatik jika gagal
- name: Rollback if failed
if: failure()
run: |
kubectl rollout undo deployment/app-canary
echo "Canary deployment failed, rolled back." && exit 1
Kawalan Risiko
- Lepasan canary: Hala 10% trafik ke versi baharu, perhatikan selama 5 minit
- Bendera ciri: Gunakan LaunchDarkly atau ConfigMap untuk melumpuhkan ciri bermasalah secara dinamik
- Penghantaran progresif: Gunakan Flagger atau Argo Rollouts untuk meningkatkan trafik secara beransur-ansur secara automatik
- Had sumber: Tetapkan kuota CPU/memori untuk mengelakkan kehabisan sumber
Gulung Balik
Gulung Balik Automatik
Apabila pemeriksaan kesihatan canary gagal, gulung balik automatik:
kubectl rollout undo deployment/app-canary
kubectl scale deployment/app-stable --replicas=10
Gulung Balik Manual
Jika gulung balik automatik gagal, SRE boleh laksanakan:
kubectl rollout undo deployment/app --to-revision=<previous-revision>
kubectl rollout status deployment/app
Pengesahan
- Pantau kadar ralat (contoh: Prometheus + Alertmanager)
- Periksa status pod:
kubectl get pods -l app=app-stable - Jalankan transaksi sintetik:
curl -f https://api.example.com/v1/health - Sahkan SLO: kadar ralat <1% dalam masa 5 minit selepas penggunaan
Bila Hantar Tiket OpsGlobal
- Gulung balik kompleks merentas pelbagai kluster atau rantau
- Pagar pelindung itu sendiri gagal (contoh: positif palsu atau pengesanan terlepas)
- Pembetulan panas segera diperlukan tetapi saluran paip tersekat
- Metrik tersuai atau dasar memerlukan pelarasan pakar
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu CI/CD dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Pelajari cara menguatkuasakan pintu keselamatan dalam saluran paip CI/CD untuk mencegah penggunaan yang buruk, dengan arahan praktikal dan strategi gulung balik.
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.