Panduan ini memberikan langkah-langkah untuk mendiagnosis dan mengatasi masalah umum terkait flag fitur App Lifecycle Manager.
Evaluasi SDK dan Runtime
OpenFeature API dirancang untuk keamanan maksimum dan tidak akan pernah menampilkan error yang menyebabkan aplikasi Anda error.
Gejala: Flag menampilkan nilai default yang aman
Jika layanan flag tidak dapat dijangkau, penyedia tidak tersedia, atau flag salah dikonfigurasi, SDK akan menampilkan nilai default yang diperlukan yang disediakan dalam kode Anda.
Penyelesaian:
- Verifikasi koneksi antara penyedia OpenFeature Anda dan endpoint
saasconfig.googleapis.com. - Periksa error autentikasi. Pastikan akun layanan memiliki
roles/saasconfig.viewer. - Pastikan
FLAGD_SOURCE_PROVIDER_IDsudah benar.
Gejala: Hasil evaluasi yang tidak diharapkan
Jika flag tidak menampilkan varian yang diharapkan:
Penyelesaian:
- Periksa kondisi CEL dan konteks evaluasi Anda.
- Jika atribut yang diperlukan tidak ada dalam konteks selama pemeriksaan kondisi, mesin evaluasi akan melewati aturan tertentu tersebut.
- Jika atribut tidak ada selama alokasi berbasis persentase, evaluasi akan menampilkan
INVALID_CONTEXT.
Memantau Peluncuran
Memantau peluncuran flag fitur melibatkan verifikasi status orkestrasi (apakah peluncuran selesai?) dan kondisi aplikasi (apakah biner mengambil flag?).
Status orkestrasi peluncuran
Sistem memantau tingkat keberhasilan operasi secara real-time.
Penjedaan otomatis
Untuk mencegah konfigurasi "rusak" menjangkau seluruh fleet Anda, sistem akan otomatis menjeda peluncuran jika tingkat kegagalan melebihi Anggaran Error (default 10% per lokasi).
Memeriksa statistik ringkasan
Gunakan perintah describe untuk melihat jumlah kegagalan gabungan dan menentukan apakah peluncuran PAUSED atau FAILED.
gcloud beta app-lifecycle-manager rollouts describe ROLLOUT_ID --location=global
Memfilter update unit yang gagal
Setelah mengonfirmasi bahwa kegagalan ada, Anda harus menemukan unit tertentu yang tidak mendapatkan update. Gunakan filter ini untuk mengisolasi hanya update flag yang gagal di wilayah tertentu:
gcloud beta app-lifecycle-manager unit-operations list \
--location=LOCATION \
--filter="state:UNIT_OPERATION_STATE_FAILED AND flag_update:*"
Mendiagnosis Akar Masalah
Untuk setiap operasi yang gagal, Anda dapat mengambil pesan error mendetail yang disediakan oleh mesin aktuasi. Baca kolom state_message.
gcloud beta app-lifecycle-manager unit-operations describe OPERATION_ID --location=LOCATION
Konfigurasi Unit Tidak Ada
Memahami Penyematan Unit
Penyematan membekukan unit pada rilis saat ini, sehingga mencegahnya diupdate oleh peluncuran otomatis atau manual. Unit yang disematkan secara eksplisit dikecualikan dari operasi peluncuran hingga periode penyematannya berakhir atau unit tersebut dilepas sematannya secara manual.
Konfigurasi Tidak Ada dari Unit yang Disematkan
Skenario penting terjadi saat unit disematkan selama peluncuran flag fitur. Penyematan memblokir semua update, yang berarti unit akan melewati operasi FlagUpdate yang diperlukan untuk menerima konfigurasinya.
Gejala: Setelah unit dilepas sematannya dan diupgrade ke biner yang memerlukan flag fitur, aplikasi gagal diinisialisasi atau memasuki loop percobaan ulang tanpa batas, yang menyebabkan probe kesiapan gagal dan container terus dimulai ulang.
Akar Masalah: default_flag_revisions UnitKind tidak diupdate saat unit disematkan, sehingga unit tidak memiliki konfigurasi aktif.
Perintah Diagnostik
1. Mencantumkan Operasi Flag yang Gagal
Untuk menemukan unit yang tidak mendapatkan update, filter operasi unit untuk status UNIT_OPERATION_STATE_FAILED dan jenis flag_update.
gcloud beta app-lifecycle-manager unit-operations list \
--location="LOCATION" \
--filter="state:UNIT_OPERATION_STATE_FAILED AND flag_update:*"
2. Memfilter Khusus untuk Peluncuran Flag yang Gagal
Untuk menentukan update flag yang gagal di seluruh fleet atau untuk unit tertentu, tambahkan kondisi untuk status UNIT_OPERATION_STATE_FAILED.
# Find all failed operations for a specific unit
gcloud beta app-lifecycle-manager unit-operations list \
--location="LOCATION" \
--filter="unit:UNIT_ID AND state:UNIT_OPERATION_STATE_FAILED"
3. Memeriksa Alasan Kegagalan
Gunakan perintah describe untuk membaca state_message.
gcloud beta app-lifecycle-manager unit-operations describe "OPERATION_ID" --location="LOCATION"
4. Memeriksa Kondisi Unit
Anda juga dapat memeriksa status unit saat ini secara langsung. Jika peluncuran flag saat ini gagal atau operasi terakhir menghasilkan error, hal ini akan tercermin dalam status. Kondisi dengan jenis operationError.
gcloud beta app-lifecycle-manager units describe "UNIT_ID" --location="LOCATION"
Mitigasi Manual
Menerapkan Revisi Flag Default UnitKind
Jika unit tidak memiliki konfigurasinya karena disematkan selama satu atau beberapa peluncuran, Anda dapat memulihkannya dengan mereset unit secara manual ke baseline saat ini yang ditentukan dalam UnitKind-nya.
- Lepas sematan unit (jika disematkan).
- Ambil revisi default dari UnitKind induk.
- Buat FlagRelease baru yang berisi revisi tersebut.
- Mulai operasi unit FlagUpdate secara manual untuk menerapkan rilis pemulihan.
# 1. Unpin
gcloud beta app-lifecycle-manager units update "UNIT_ID" \
--location="LOCATION" \
--maintenance-pinned-until-time=""
# 2. Retrieve default revisions
gcloud beta app-lifecycle-manager unit-kinds describe "UNIT_KIND_ID" \
--location="global" \
--format="value(defaultFlagRevisions)"
# 3. Create recovery release
gcloud beta app-lifecycle-manager flags releases create "recovery-release-1" \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--revisions="REVISIONS"
# 4. Initiate manual update
gcloud beta app-lifecycle-manager unit-operations create "recovery-op" \
--unit="UNIT_ID" \
--flag-release="recovery-release-1" \
--location="global"