Senario
Sebuah platform e-dagang menjalankan perkhidmatan mikro di Kubernetes. Siaran kerap menyebabkan kelewatan gulung semula, penyimpangan konfigurasi, dan kegagalan canary. Pasukan mahu pengawal CI/CD untuk mengurangkan risiko.
Gejala
- Kependaman P90 meningkat >20% selepas siaran
- Kadar ralat melebihi 0.1% dan semakin meningkat
- Gulung semula mengambil masa >30 minit
- Suis trafik canary menyebabkan ralat 502
Diagnosis
- Periksa log saluran paip untuk peringkat gagal (bina, uji, gunakan)
- Lihat peristiwa Kubernetes:
kubectl get events --all-namespaces --sort-by=.lastTimestamp - Guna metrik Prometheus:
http_requests_total{status=~"5.."} - Analisis canary:
kubectl argo rollouts get rollout my-app -n production
Arahan
# Tetapkan syarat gulung semula automatik
export ROLLBACK_THRESHOLD=0.1 # kadar ralat > 0.1% cetus gulung semula
kubectl set env deployment/my-app MAX_ERROR_RATE=$ROLLBACK_THRESHOLD
# Laksanakan kuota sumber melalui pengawal kemasukan
kubectl apply -f - <<EOF
apiVersion: v1
kind: ResourceQuota
metadata:
name: release-quota
spec:
hard:
limits.cpu: "4"
limits.memory: 8Gi
EOF
Kawalan Risiko
- Laksanakan penghantaran progresif: canary 10% → 50% → 100%, perhatikan 5 min setiap satu
- Jeda automatik pelaksanaan:
kubectl rollout pause deployment/my-app - Sahkan tandatangan imej:
cosign verify --key cosign.pub my-image:tag - Kuatkuasakan perlindungan cawangan: semakan PR wajib dan semakan status
Gulung Semula
Gulung semula pantas:
kubectl rollout undo deployment/my-app --to-revision=2
# Atau guna Argo Rollouts
kubectl argo rollouts abort rollout my-app
Jalankan ujian asap selepas gulung semula: kubectl run smoke-test --image=busybox -- wget -qO- http://my-app/health
Pengesahan
- Periksa status pelaksanaan:
kubectl rollout status deployment/my-app - Jalankan ujian integrasi:
kubectl exec -it test-pod -- curl -f http://my-app/api/v1/status - Sahkan metrik utama dipulihkan:
kubectl top pods -l app=my-app - Sahkan suis trafik canary: lihat papan pemuka Argo Rollouts
Bila Menghantar Tiket OpsGlobal
- Skrip gulung semula anda gagal dan campur tangan manual tidak berjaya
- Gulung semula berbilang kluster memerlukan koordinasi
- Kelemahan keselamatan memerlukan hotfix tetapi pengawal menghalang siaran
- Alat analisis canary (cth., Argo Rollouts) menunjukkan kelainan tetapi punca tidak diketahui
- Perlu bantuan mereka bentuk pengawal lanjutan (cth., pengesanan anomali berasaskan ML)
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu CI/CD dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini membincangkan cara menetapkan pengawal dalam saluran paip CI/CD untuk mengelakkan siaran buruk daripada menjejaskan pengeluaran. Termasuk senario, diagnosis, arahan, kawalan risiko, gulung semula, pengesahan, dan bila perlu menghantar tiket kepada 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.