Mengelola konflik dengan beberapa resource Config Connector
Halaman ini menjelaskan cara Config Connector menangani konflik. Konflik dapat terjadi saat resource yang sama dikelola oleh beberapa resource.
Config Connector mengelola atau memperoleh resource dengan memetakan kombinasi nama resource Kubernetes, anotasi container, dan jika berlaku, region atau lokasi. Dalam kasus yang paling sederhana, Anda mengatur resource dengan project Google Cloud.
Google Cloud mendukung tingkat hierarki tambahan di luar project: folder, project, dan organisasi. Anda dapat memetakan resource ke folder, project, dan organisasi dengan anotasi. Saat Anda membuat resource tanpa anotasi menggunakan Config Connector, resource akan dibuat di project yang menggunakan namespace resource yang sama.
Anda dapat, tetapi tidak direkomendasikan, membuat dua resource Config Connector di namespace yang berbeda yang mengelola resource Google Cloud yang sama. Config Connector hanya mengelola resource Google Cloud yang sesuai jika dapat memperoleh sewa pada resource Google Cloud dan pencegahan konflik diaktifkan.
Lease memiliki cakupan namespace. Untuk mendapatkan sewa cakupan namespace, Config Connector menambahkan dua label ke resource:
cnrm-lease-holder-id
: Pengontrol Konfigurasi menghasilkan ID unik untuk setiap namespace yang mengelola resource dengan pencegahan konflik yang diaktifkan. ID unik ini digunakan untuk menetapkancnrm-lease-holder-id
. Untuk melihat pemetaan namespace ke nilaicnrm-lease-holder-id
, Anda dapat melihat ConfigMapnamespace-id
di namespacecnrm-system
.cnrm-lease-expiration
: Waktu habis masa berlaku dalam waktu epoch Unix.
Config Connector dapat memperbarui nilai ini jika salah satu hal berikut berlaku:
- Nilai
cnrm-lease-holder-id
cocok dengan ID unik secara global namespace. - Nilai
cnrm-lease-holder-id
kosong atau tidak ada. - Nilai
cnrm-lease-expiration
adalah di masa lalu.
Saat instance Config Connector mendapatkan sewa pada resource, waktu habis masa berlakunya akan ditetapkan ke 40 menit di masa mendatang. Instance Config Connector yang sama mempertahankan pengelolaan selama resource berada dalam namespace. Config Connector memperluas waktu habis masa berlakunya menjadi 40 menit jika tersisa kurang dari 20 menit.
Jika Config Connector tidak dapat memperoleh sewa pada resource tertentu, output
kubectl describe
pada resource akan mencantumkan Status ManagementConflict
.
Mengubah pencegahan konflik
Anda dapat mengontrol pencegahan konflik dengan menambahkan
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 sewa yang sesuai ke dalam resource seperti yang dijelaskan di bagian sebelumnya.none
: konflik pengelolaan tidak 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 mendukung label. Meskipun Anda mengubah nilai dari
none
menjadiresource
, nilai tersebut tetap tidak berfungsi.Jika Anda Mengelola resource dengan kolom resourceID, Anda dapat membuat beberapa resource dengan nama resource Google Cloud yang sama, yang dibuat dalam namespace yang sama. Resource ini menimbulkan konflik yang tidak dapat dikelola oleh Config Connector.