Mengelola kolom secara eksternal


Saat Config Connector membuat resource di Google Cloud, kolom yang tidak ditentukan dalam spesifikasi akan menggunakan nilai dari API, kecuali jika tidak dapat dibaca (misalnya, tidak tersedia dengan menggunakan permintaan HTTP GET).

Dalam hal ini, kolom dianggap "dikelola secara eksternal", karena Kubernetes bukan sumber tepercaya untuk nilai ini.

Perilaku dengan penerapan sisi server

Jika penerapan sisi server diaktifkan untuk resource, nilai kolom yang dikelola secara eksternal dalam objek akan terus diperbarui agar cocok dengan resource Google Cloud yang mendasarinya.

Jika ada nilai untuk kolom dalam spesifikasi dalam konfigurasi yang diterapkan, kolom tersebut tidak dikelola secara eksternal.

Jika kolom dihapus, kolom tersebut akan dikelola secara eksternal.

Perilaku tanpa penerapan sisi server

Jika penerapan sisi server tidak diaktifkan, kolom yang tidak ditentukan dalam spesifikasi resource akan diisi dengan nilai yang dibaca dari Google Cloud API, dan Config Connector akan menerapkan nilai yang awalnya diisi tersebut.

Sebagai contoh: jika pengguna menerapkan konfigurasi resource tanpa menetapkan nilai untuk bar dalam spesifikasi:

spec:
    foo: "foo"

Jika nilai kolom bar adalah baz di Google Cloud API, resource di api-server akan diisi dengan nilai tersebut:

# object in the api-server
spec:
    foo: "foo"
    bar: "baz"  # populated by first reconciliation

Jika resource Google Cloud diubah secara langsung sehingga bar kini menjadi baz-2, Google Cloud API akan dikoreksi ke nilai yang awalnya diisi dalam spesifikasi resource: baz:

# object in the api-server
spec:
    foo: "foo"
    bar: "baz"  # still the originally populated value, and overrides the Google Cloud value

Perilaku untuk kolom daftar dalam spesifikasi resource

Karena keterbatasan teknis di Config Connector, kolom daftar dalam konfigurasi resource Anda tidak dapat dikelola secara eksternal secara default. Artinya, Config Connector selalu memiliki kepemilikan kolom daftar dalam spesifikasi resource, meskipun kolom tersebut tidak ditentukan dalam konfigurasi resource asli Anda.

Saat spesifikasi resource diterapkan, Config Connector membaca nilai kolom daftar dari Google Cloud API dan memperlakukan nilai awal ini sebagai sumber tepercaya dan status yang diinginkan. Jika nilai di kolom daftar tersebut diubah di luar Config Connector, Config Connector akan mencoba mengubahnya kembali, yang mungkin tidak diinginkan.

Untuk mengabaikan batasan ini dan mengizinkan kolom daftar dikelola secara eksternal, gunakan anotasi cnrm.cloud.google.com/state-into-spec. Anotasi ini tidak didukung untuk semua resource. Untuk melihat apakah resource Anda mendukung anotasi, periksa halaman referensi resource yang sesuai.

metadata:
  annotations:
    cnrm.cloud.google.com/state-into-spec: absent

Dengan menetapkan nilai state-into-spec sebagai absent, Config Connector akan mengabaikan kolom daftar jika tidak ditentukan dalam konfigurasi resource Anda. Hal ini akan membuat kolom daftar dalam resource dikelola secara eksternal.

Peringatan

Kolom yang dikelola oleh Config Connector dan diperbarui secara otomatis oleh layanan eksternal dapat memicu pembaruan tanpa henti pada API yang mendasarinya. Hal ini dapat terjadi jika API yang mendasarinya memiliki kolom penskalaan otomatis atau pembaruan otomatis. Pastikan kolom ini diperlakukan sebagai dikelola secara eksternal dengan mengaktifkan penerapan sisi server untuk resource dan menghapus kolom dari file konfigurasi Anda saat menerapkan.