Mengelola konflik dengan beberapa resource Config Connector


Halaman ini menjelaskan cara Config Connector menangani konflik. Konflik dapat terjadi jika resource yang sama dikelola oleh beberapa resource.

Konektor Konfigurasi mengelola atau mengakuisisi resource dengan memetakan kombinasi nama resource Kubernetes, container dan jika ada, wilayah atau lokasi. Dalam kasus paling sederhana, Anda mengatur resource Anda dengan Google Cloud project Anda.

Google Cloud mendukung tingkat hierarki tambahan di luar project: folder, project, dan organisasi. Anda dapat memetakan resource ke folder, project, dan organisasi dengan anotasi. Bila Anda membuat resource tanpa anotasi menggunakan Config Connector, resource dibuat dalam project yang membagikan namespace resource.

Dimungkinkan, tetapi tidak direkomendasikan, untuk membuat dua resource Config Connector di berbagai namespace yang mengelola resource Google Cloud yang sama. Config Connector hanya mengelola resource Google Cloud yang sesuai jika perusahaan dapat memperoleh sewa atas resource Google Cloud dan konflik pencegahan diaktifkan diaktifkan.

Lease memiliki cakupan namespace. Untuk mendapatkan lease cakupan namespace, Config Connector menambahkan dua label ke resource:

  1. cnrm-lease-holder-id: Pengontrol Konfigurasi menghasilkan ID unik untuk setiap namespace yang mengelola resource dengan pencegahan konflik diaktifkan. Ini ID unik digunakan untuk menetapkan cnrm-lease-holder-id. Untuk melihat pemetaan dari namespace ke nilai cnrm-lease-holder-id, Anda dapat melihat namespace-id ConfigMap di namespace cnrm-system.
  2. cnrm-lease-expiration: Waktu habis masa berlaku dalam Waktu epoch Unix.

Config Connector dapat memperbarui nilai ini jika salah satu dari berikut ini benar:

  • Nilai cnrm-lease-holder-id sama dengan namespace secara global ID unik.
  • Nilai cnrm-lease-holder-id kosong atau tidak ada.
  • Nilai cnrm-lease-expiration sudah berlalu.

Ketika instance Config Connector mendapatkan lease pada resource, masa berlaku waktu ditetapkan ke 40 menit yang akan datang. Instance Config Connector yang sama mempertahankan pengelolaan selama sumber daya ada dalam namespace. Konektor Konfigurasi akan memperpanjang waktu kedaluwarsa 40 menit bila tersisa kurang dari 20 menit.

Jika Config Connector tidak dapat memperoleh lease pada resource tertentu, output pengguna kubectl describe pada resource mencantumkan Status ManagementConflict.

Mengubah pencegahan konflik

Anda dapat mengontrol pencegahan konflik dengan menambahkan atribut anotasi cnrm.cloud.google.com/management-conflict-prevention-policy ke resource dengan salah satu nilai berikut:

  • resource: konflik pengelolaan dicegah di tingkat resource dengan menyimpan label lease yang sesuai ke dalam resource seperti yang dijelaskan dalam bagian sebelumnya.
  • none: konflik pengelolaan tidak dapat dicegah.

Nilai defaultnya adalah none.

Dalam contoh berikut, manifes untuk ComputeNetwork default menggunakan kebijakan pengelolaan none, yang berarti konflik tidak dicegah:

apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeNetwork
metadata:
 annotations:
   cnrm.cloud.google.com/management-conflict-prevention-policy: "none"
   cnrm.cloud.google.com/project-id: "PROJECT-ID"
   cnrm.cloud.google.com/deletion-policy: "abandon"
 name: default
spec:
 description: Default network for the project

Batasan

Pencegahan konflik memiliki batasan berikut:

  • Pencegahan konflik tidak berfungsi untuk resource yang tidak didukung label. Meskipun Anda mengubah nilai dari none menjadi resource, nilai tersebut tetap tidak berfungsi.

  • Jika Anda Mengelola resource dengan kolom resourceID Anda dapat membuat beberapa resource dengan nama resource Google Cloud yang sama, dibuat dengan namespace yang sama. Sumber daya ini menciptakan konflik yang Config Connector tidak dapat mengelola.