Panduan ini memberikan langkah-langkah untuk mendiagnosis dan menyelesaikan masalah umum terkait tombol fitur App Lifecycle Manager.
Evaluasi SDK dan runtime
OpenFeature API dirancang agar panggilan evaluasi flag tidak menampilkan pengecualian yang tidak tertangani, melainkan menampilkan nilai default jika terjadi error evaluasi.
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 dan endpoint
saasconfig.googleapis.com. - Periksa error autentikasi. Pastikan akun layanan runtime aplikasi Anda memiliki peran
roles/saasconfig.viewer. - Pastikan
FLAGD_SOURCE_PROVIDER_IDsudah benar.
Gejala: Hasil evaluasi yang tidak terduga
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 spesifik tersebut.
- Jika atribut tidak ada selama alokasi berbasis persentase,
evaluasi akan menampilkan
INVALID_CONTEXT.
Memecahkan masalah sinkronisasi template Berfokus pada Aplikasi dan peluncuran konsol
Jika Anda melakukan aktivasi ke tombol fitur menggunakan template komposit Application Design Center dan konsol Google Cloud , gunakan langkah-langkah berikut untuk menyelesaikan masalah sinkronisasi dan peluncuran template.
Gejala: Jenis unit tidak dibuat setelah menghubungkan template komposit App Design Center
Jika tab Unit kinds di penawaran SaaS Anda tetap kosong setelah Anda menghubungkan template gabungan:
Penyelesaian:
- Pastikan setiap template aplikasi standar yang disematkan dan template aplikasi komposit induk telah ditambahkan ke katalog di Application Design Center sebelum mengimpor template komposit ke penawaran SaaS Anda.
- Pastikan agen layanan App Lifecycle Manager
(
service-PROJECT_NUMBER@gcp-sa-saasservicemgmt.) memiliki peranroles/saasservicemgmt.serviceAgentdi project Anda. - Periksa halaman detail penawaran SaaS di konsol Google Cloud atau jalankan
gcloud beta app-lifecycle-manager saas describe SAAS_OFFERING_ID --location=globaluntuk memeriksa status sinkronisasi template.
Ganti kode berikut:
- PROJECT_NUMBER: nomor project Google Cloud Anda.
- SAAS_OFFERING_ID: ID penawaran SaaS Anda.
Gejala: Peluncuran tanda di konsol tidak mengupdate unit yang dibuat dari template standar
Jika peluncuran flag selesai di konsol Google Cloud , tetapi unit yang dibuat dari template standar tidak menerima konfigurasi flag yang diperbarui:
Penyelesaian:
- Pastikan unit tersebut termasuk dalam jenis unit yang ditargetkan, berada di region
yang disertakan dalam peluncuran, dan cocok dengan
unitFilteryang dikonfigurasi pada jenis peluncuran. - Pastikan
FLAGD_SOURCE_PROVIDER_IDdi aplikasi Anda cocok dengan jalur resource konfigurasi tombol fitur lengkap unit (projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID).
Ganti kode berikut:
- PROJECT_ID: Project ID Google Cloud Anda.
- LOCATION: region unit Anda.
- UNIT_ID: ID unit Anda.
Memantau peluncuran
Memantau peluncuran tombol fitur melibatkan verifikasi status orkestrasi (apakah peluncuran selesai?) dan responsivitas aplikasi (apakah biner mengambil tombol?).
Status orkestrasi peluncuran
Sistem memantau rasio keberhasilan operasi secara real-time.
Penjedaan otomatis
Untuk mencegah konfigurasi yang salah menjangkau seluruh fleet Anda, sistem akan otomatis menjeda peluncuran jika tingkat kegagalan di suatu lokasi melebihi anggaran error yang dikonfigurasi pada jenis peluncuran (errorBudget.allowedCount atau errorBudget.allowedPercentage, seperti batas 10% per lokasi).
Memeriksa statistik ringkasan
Gunakan perintah describe untuk melihat jumlah kegagalan gabungan dan menentukan apakah
peluncuran berstatus PAUSED atau FAILED.
gcloud beta app-lifecycle-manager rollouts describe ROLLOUT_ID --location=global
Memfilter update unit yang gagal
Setelah mengonfirmasi adanya kegagalan, Anda harus menemukan unit tertentu yang tidak mendapatkan update. Gunakan filter ini untuk mengisolasi hanya update flag yang gagal di region 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 diberikan oleh mesin aktuasi di kolom conditions (message dan reason) dan errorCategory (atau memeriksa stateMessage pada resource peluncuran).
gcloud beta app-lifecycle-manager unit-operations describe OPERATION_ID --location=LOCATION
Ganti kode berikut:
- ROLLOUT_ID: ID peluncuran.
- LOCATION: region operasi unit.
- OPERATION_ID: ID operasi unit.
Konfigurasi unit tidak ada
Bagian ini menjelaskan cara penyematan unit dapat mencegah unit menerima konfigurasi tombol fitur dan cara memulihkan unit.
Memahami penyematan unit
Penyematan akan 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 dilepas sematannya secara manual.
Konfigurasi tidak ada dari unit yang disematkan
Skenario kritis terjadi saat unit disematkan selama peluncuran tombol fitur. Penyematan memblokir semua update, yang berarti unit akan melewati operasi FlagUpdate yang diperlukan untuk menerima konfigurasinya.
Gejala: Setelah unit dilepas pinnya dan diupgrade ke biner yang memerlukan tombol fitur, aplikasi gagal melakukan inisialisasi atau memasuki loop percobaan ulang tanpa batas, yang menyebabkan pemeriksaan kesiapan gagal dan container terus dimulai ulang.
Penyebab utama: Saat unit disematkan, peluncuran memperbarui kolom defaultFlagRevisions resource jenis unit induk, tetapi unit yang disematkan melewati operasi FlagUpdate dan tidak menerima konfigurasi aktif.
Perintah diagnostik
Gunakan perintah berikut untuk memeriksa operasi update flag yang gagal dan status unit.
1. Mencantumkan operasi flag yang gagal
Untuk menemukan unit yang melewatkan 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 secara 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.
gcloud beta app-lifecycle-manager unit-operations list \
--location="LOCATION" \
--filter="unit:UNIT_ID AND state:UNIT_OPERATION_STATE_FAILED AND flag_update:*"
3. Memeriksa alasan kegagalan
Gunakan perintah describe untuk memeriksa kolom conditions (message dan reason) serta errorCategory.
gcloud beta app-lifecycle-manager unit-operations describe "OPERATION_ID" --location="LOCATION"
4. Periksa kondisi unit
Anda juga dapat memeriksa status unit saat ini secara langsung. Jika peluncuran flag gagal atau operasi terakhir menghasilkan error, daftar conditions unit akan berisi entri dengan type: TYPE_OPERATION_ERROR.
gcloud beta app-lifecycle-manager units describe "UNIT_ID" --location="LOCATION"
Ganti kode berikut:
- LOCATION: region unit atau operasi unit.
- UNIT_ID: ID unit.
- OPERATION_ID: ID operasi unit.
Mitigasi manual
Untuk memulihkan unit yang disematkan yang melewatkan update flag, terapkan revisi flag default dari jenis unit induknya.
Menerapkan revisi flag default jenis unit
Jika konfigurasi unit hilang karena disematkan selama satu atau beberapa peluncuran, Anda dapat memulihkannya dengan mereset unit secara manual ke dasar pengukuran saat ini yang ditentukan dalam jenis unitnya.
Lepas pin unit (jika disematkan):
gcloud beta app-lifecycle-manager units update "UNIT_ID" \ --location="LOCATION" \ --maintenance-pinned-until-time=""Ambil revisi default dari jenis unit induk:
gcloud beta app-lifecycle-manager unit-kinds describe "UNIT_KIND_ID" \ --location="LOCATION" \ --format="value(defaultFlagRevisions.join(','))"Buat
FlagReleasebaru yang berisi revisi tersebut:gcloud beta app-lifecycle-manager flags releases create "recovery-release-1" \ --location="LOCATION" \ --unit-kind="UNIT_KIND_ID" \ --revisions="REVISIONS"Mulai operasi unit
FlagUpdatesecara manual untuk menerapkan rilis pemulihan:gcloud beta app-lifecycle-manager unit-operations create "recovery-op" \ --unit="UNIT_ID" \ --flag-update="projects/PROJECT_ID/locations/LOCATION/flagReleases/recovery-release-1" \ --location="LOCATION"
Ganti kode berikut:
- UNIT_ID: ID unit yang akan dipulihkan.
- LOCATION: region unit.
- UNIT_KIND_ID: ID jenis unit induk.
- REVISIONS: daftar nama resource revisi flag default yang dipisahkan koma yang ditampilkan di langkah 2.
- PROJECT_ID: Project ID Google Cloud Anda.