Halaman ini menunjukkan cara menyelesaikan masalah terkait enkripsi secret lapisan aplikasi di Google Kubernetes Engine (GKE).
Update gagal
Saat Anda memperbarui konfigurasi enkripsi enkripsi secret lapisan aplikasi, GKE harus menulis ulang semua objek Secret di cluster Kubernetes. GKE melakukan hal ini untuk memastikan bahwa semua Secret dienkripsi oleh Kunci Cloud KMS baru, atau ditulis tanpa dienkripsi jika itulah yang Anda konfigurasikan.
Operasi pembaruan ini bisa gagal karena salah satu kondisi berikut:
- Bidang kontrol Kubernetes untuk sementara tidak tersedia saat update berlangsung.
AdmissionWebhook
yang ditentukan pengguna mencegah GKE agar tidak dapat mengupdate objek Secret.- Kunci Cloud KMS yang diperbarui atau sebelumnya dinonaktifkan sebelum operasi pembaruan selesai.
Jangan berinteraksi dengan kunci Cloud KMS yang diperbarui atau sebelumnya sampai operasi update berhasil.
Kolom proses debug
Cluster GKE baru yang menjalankan versi 1.29 dan yang lebih baru berisi kolom tambahan yang membantu Anda melacak update untuk Cluster.DatabaseEncryption
dan membantu Anda pulih dari kegagalan.
Langkah-langkah berikut hanya berlaku untuk cluster yang
kolom DatabaseEncryption.CurrentState
-nya tidak kosong. Jika kolom CurrentState
kosong, fitur ini belum diaktifkan pada versi cluster ini.
Batasan berikut berlaku untuk kolom ini:
- Bersifat hanya output, yang berarti Anda tidak dapat menetapkannya selama permintaan pembuatan atau update cluster.
Kolom CurrentState
Anda dapat memeriksa status operasi pembaruan DatabaseEncryption
saat ini
dengan memeriksa kolom CurrentState
dalam Cluster.DatabaseEncryption
.
Nilai CurrentState |
Deskripsi |
---|---|
|
Operasi update terbaru berhasil. Anda tidak perlu melakukan tindakan lebih lanjut. Anda dapat membuang kunci yang digunakan sebelumnya. |
|
Update sedang berlangsung. |
|
Terjadi error pada update terbaru. Jangan menonaktifkan atau menghancurkan kunci Cloud KMS yang digunakan sebelumnya, karena kunci tersebut mungkin masih digunakan oleh GKE.
Lihat kolom |
Kolom LastOperationErrors
Jika operasi update gagal, error yang mendasarinya dari bidang kontrol GKE akan ditampilkan dalam output gcloud container clusters update
.
Pesan error dari dua operasi update yang gagal terbaru juga tersedia di Cluster.DatabaseEncryption.LastOperationErrors
.
Kolom DecryptionKeys
Kunci Cloud KMS yang digunakan untuk operasi enkripsi baru ditampilkan di DatabaseEncryption.KeyName
. Biasanya ini adalah satu-satunya kunci yang digunakan oleh cluster.
Namun, DatabaseEncryption.DecryptionKeys
berisi kunci tambahan yang juga digunakan oleh cluster jika update sedang berlangsung atau setelah kegagalan.
Memulihkan dari update yang gagal
Untuk memulihkan dari update yang gagal, lakukan hal berikut:
- Periksa pesan error dan atasi semua masalah yang ditunjukkan.
- Coba lagi permintaan update dengan menjalankan perintah yang gagal, seperti
gcloud container clusters update ... --database-encryption-key
. Sebaiknya Anda mencoba lagi dengan permintaan update yang sama seperti yang Anda ajukan di awal, atau perbarui cluster kembali ke status sebelumnya. GKE mungkin tidak dapat bertransisi ke status kunci atau enkripsi yang berbeda jika tidak dapat membaca satu atau beberapa Secret.
Bagian berikut mencantumkan alasan umum terjadinya error.
Error kunci Cloud KMS
Jika pesan error berisi referensi ke satu atau beberapa kunci Cloud KMS, periksa konfigurasi kunci Cloud KMS Anda untuk memastikan versi kunci yang relevan dapat digunakan.
Misalnya, jika error tersebut menunjukkan bahwa kunci Cloud KMS telah dinonaktifkan atau dihancurkan, aktifkan kembali kunci atau versi kunci tersebut.
Tidak dapat memperbarui Rahasia
Error berikut dapat terjadi jika Kubernetes API menolak permintaan update karena adanya webhook akses:
error admission webhook WEBHOOK_NAME denied the request
Untuk mengatasi error ini, hapus webhook atau ubah webhook agar GKE dapat memperbarui Secret di semua namespace selama update kunci.