Strategi rekonsiliasi
Dengan konfigurasi deklaratif, Anda menentukan status sistem yang diinginkan. Kemudian, sistem akan terus berupaya untuk tetap sedekat mungkin dengan status ini. Lihat Pengelolaan deklaratif objek Kubernetes menggunakan file konfigurasi untuk mengetahui informasi selengkapnya.
Dengan Config Connector, Anda dapat membuat dan memperbarui resource dalam urutan apa pun, terlepas dari hubungan dependensi. GKE memindahkan konfigurasi yang dideklarasikan ke arah konsistensi akhir dengan status yang diinginkan.
Misalnya, jika Anda membuat PubSubSubscription
sebelum PubSubTopic
yang sesuai, Config Connector akan menunggu hingga topik dibuat sebelum membuat langganan terkait.
Durasi penginstalan Config Connector Anda tetap tidak konsisten bergantung pada
jumlah dan jenis resource yang dikelolanya. Perubahan pada cluster GKE biasanya dieksekusi dalam hitungan detik. Namun, waktu untuk membuat resourceGoogle Cloud dapat bervariasi berdasarkan jenis resource. Misalnya, satu PubSubTopic
memerlukan waktu beberapa detik untuk dibuat.Resource Google Cloudtidak mencapai konsistensi hingga dibuat. Misalnya, saat membuat SQLInstance
dan SQLDatabase
, sistem tidak konsisten selama beberapa menit saat database dibuat.
GKE dan Config Connector merekonsiliasi setiap resource dengan setiap update atau setelah periode jitter dengan rata-rata berdasarkan interval default yang telah dikonfigurasi sebelumnya. Anda dapat menemukan interval default di "Config Connector Default Average Reconcile Interval In Seconds" dari halaman referensi setiap resource. Untuk mengetahui link ke setiap resource, lihat Ringkasan resource. Jika terjadi error saat menyelaraskan, Config Connector akan mencoba lagi dengan backoff eksponensial dengan backoff maksimum dua menit. Anda dapat melihat error apa pun di Peristiwa dari resource tertentu.
Mengonfigurasi interval rekonsiliasi
Mulai dari Config Connector 1.102, Anda dapat mengonfigurasi interval rekonsiliasi rata-rata untuk resource yang dikelola oleh Config Connector dengan anotasi cnrm.cloud.google.com/reconcile-interval-in-seconds
. Nilai anotasi menggantikan nilai default "Config Connector Default Average Reconcile Interval In Seconds" dari halaman referensi resource.
Nilai anotasi harus berupa bilangan bulat positif yang merepresentasikan waktu dalam detik. Jika nilai disetel ke 0, Config Connector akan berhenti memulai rekonsiliasi untuk resource setelah mencapai status UpToDate.
Misalnya, jika Anda ingin Config Connector merekonsiliasi resource lebih jarang untuk menghindari masalah kuota API Google Cloud yang mendasarinya, Anda dapat menetapkan nilai interval rekonsiliasi rata-rata ke 1 jam.
cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"
Jika ingin Config Connector merekonsiliasi resource lebih sering untuk memperbaiki penyimpangan lebih cepat, Anda dapat menetapkan anotasi dengan nilai kecil.
Anda dapat menganotasi semua resource dari jenis tertentu yang memiliki Group Version Kind (GVK) yang sama dengan skrip berikut:
#!/bin/bash
KIND=RESOURCE_KIND
NAMESPACE=RESOURCE_NAMESPACE
ANNOTATION_KEY="cnrm.cloud.google.com/reconcile-interval-in-seconds"
ANNOTATION_VALUE=RECONCILE_INTERVAL
kubectl annotate --overwrite --all ${KIND} ${ANNOTATION_KEY}=${ANNOTATION_VALUE} -n ${NAMESPACE}
echo "Annotation added to all ${KIND} RESOURCE"
Ganti kode berikut:
RESOURCE_KIND
: jenis resource yang ingin Anda beri anotasi.RESOURCE_NAMESPACE
: namespace yang berisi resource yang ingin Anda beri anotasi.RECONCILE_INTERVAL
: interval rekonsiliasi dalam detik.
Anda dapat menyetel interval rekonsiliasi ke 0 untuk menonaktifkan koreksi penyimpangan untuk resource, tetapi tidak menonaktifkan pengaktifan resource. Jika Anda membuat perubahan pada resource Spec
, resource tersebut akan disesuaikan kembali.
Menetapkan interval rekonsiliasi ke 0 tidak dapat dibatalkan. Artinya, mengubah nilai kembali ke angka bukan nol tidak membuat Config Connector merekonsiliasi resource lagi.
Jika Anda ingin mengembalikan interval rekonsiliasi 0, Anda memiliki opsi berikut:
- Ubah spesifikasi resource dengan nilai interval rekonsiliasi untuk mengaktifkan rekonsiliasi baru.
- Batalkan resource dengan menyetel anotasi
cnrm.cloud.google.com/deletion-policy: "abandon"
dan buat ulang resource dengan nilai interval rekonsiliasi selain 0.
Kolom yang dapat diubah tetapi tidak dapat dibaca hanya diaktifkan saat ada perubahan
Beberapa API mengekspos kolom yang tidak dapat dibaca, tetapi dapat diubah (misalnya, sandi untuk pengguna SQL). Karena tidak dapat melihat apakah kolom ini telah dimodifikasi, kolom yang dapat diubah tetapi tidak dapat dibaca hanya diupdate saat resource kustom dimodifikasi.
Resource tidak dibuat ulang saat mengubah kolom yang tidak dapat diubah
Beberapa kolom dalam resource tidak dapat diubah, dan tidak dapat disesuaikan tanpa menghapus, lalu membuat ulang resource target.
Dalam situasi ini, Config Connector memancarkan peristiwa Kubernetes "UpdatedFailed" untuk resource, bukan melakukan pembuatan ulang ini. Kemudian, Anda harus menghapus dan membuat ulang resource.
Contoh peristiwa:
Warning UpdateFailed 37m (x643 over 15d) computeinstance-controller Update call failed: the desired mutation for the following field(s) is invalid: [bootDisk.0.InitializeParams.0.Image networkInterface.0.NetworkIp]