Memecahkan masalah enkripsi secret lapisan aplikasi


Halaman ini menunjukkan cara menyelesaikan masalah terkait enkripsi secret lapisan aplikasi di Google Kubernetes Engine (GKE).

Pembaruan 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 update ini dapat gagal karena salah satu kondisi berikut:

  • Panel kontrol Kubernetes tidak tersedia untuk sementara saat update sedang berlangsung.
  • AdmissionWebhook yang ditentukan pengguna mencegah GKE dapat memperbarui objek Secret.
  • Kunci Cloud KMS yang diperbarui atau sebelumnya dinonaktifkan sebelum operasi update selesai.

Sampai operasi pembaruan berhasil, jangan berinteraksi dengan kunci Cloud KMS yang diperbarui atau sebelumnya.

Kolom proses debug

Cluster GKE baru yang menjalankan versi 1.29 dan yang lebih baru berisi kolom tambahan yang membantu Anda melacak update ke Cluster.DatabaseEncryption dan membantu Anda memulihkan dari kegagalan.

Langkah-langkah berikut hanya berlaku untuk cluster dengan kolom DatabaseEncryption.CurrentState yang tidak kosong. Jika kolom CurrentState kosong, fitur belum diaktifkan di versi cluster ini.

Batasan berikut berlaku untuk kolom ini:

  • Hanya output, yang berarti Anda tidak dapat menetapkannya selama permintaan pembuatan atau update cluster.

Kolom CurrentState

Anda dapat memeriksa status saat ini dari operasi update DatabaseEncryption dengan memeriksa kolom CurrentState di Cluster.DatabaseEncryption.

Nilai CurrentState Deskripsi

CURRENT_STATE_ENCRYPTED

CURRENT_STATE_DECRYPTED

Operasi update terbaru berhasil. Anda tidak perlu melakukan tindakan lebih lanjut. Anda dapat membuang kunci yang sebelumnya digunakan.

CURRENT_STATE_ENCRYPTION_PENDING

CURRENT_STATE_DECRYPTION_PENDING

Update sedang berlangsung.

CURRENT_STATE_ENCRYPTION_ERROR

CURRENT_STATE_DECRYPTION_ERROR

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 LastOperationErrors untuk informasi selengkapnya.

Kolom LastOperationErrors

Jika operasi update gagal, error yang mendasarinya dari panel kontrol GKE akan ditampilkan dalam output gcloud container clusters update.

Pesan error dari dua operasi update terbaru yang gagal 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 terjadi kegagalan.

Memulihkan dari update yang gagal

Untuk memulihkan dari update yang gagal, lakukan langkah berikut:

  1. Periksa pesan error dan atasi masalah yang ditunjukkan.
  2. Coba lagi permintaan update dengan menjalankan perintah yang gagal, seperti gcloud container clusters update ... --database-encryption-key. Sebaiknya coba lagi dengan permintaan update yang sama dengan yang awalnya Anda berikan, atau update cluster kembali ke status sebelumnya. GKE mungkin tidak dapat bertransisi ke kunci atau status 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.

Jika error menunjukkan bahwa kunci Cloud KMS telah dinonaktifkan atau dihancurkan, aktifkan kembali kunci atau versi kunci.

Error: Tidak dapat menggunakan kunci CloudKMS yang dikonfigurasi untuk enkripsi Tingkat Aplikasi

Pesan error berikut terjadi jika akun layanan default GKE tidak dapat mengakses kunci Cloud KMS:

Cluster problem detected (Kubernetes Engine Service Agent account unable to use CloudKMS key configured for Application Level encryption).

Untuk menyelesaikan masalah ini, aktifkan kembali kunci yang dinonaktifkan.

Tidak dapat memperbarui Secret

Error berikut mungkin terjadi jika Kubernetes API menolak permintaan update karena webhook penerimaan:

error admission webhook WEBHOOK_NAME denied the request

Untuk mengatasi error ini, hapus webhook atau ubah agar GKE dapat memperbarui Secret di semua namespace selama pembaruan kunci.