Konflikte mit mehreren Config Connector-Ressourcen verwalten
Auf dieser Seite wird beschrieben, wie Config Connector Konflikte behandelt. Konflikte können auftreten, wenn dieselbe Ressource von mehreren Ressourcen verwaltet wird.
Config Connector verwaltet oder erwirbt Ressourcen, indem die Kombination aus Kubernetes Ressourcenname, Containerannotation und gegebenenfalls Region oder Standort zugeordnet wird. Im einfachsten Fall organisieren Sie Ihre Ressourcen mit Google Cloud-Projekten.
Google Cloud unterstützt zusätzliche Hierarchieebenen über Projekte hinaus: Ordner, Projekte und Organisationen. Sie können Ihren Ordnern, Projekten und Organisationen mit einer Annotation Ressourcen zuordnen. Wenn Sie mit Config Connector eine Ressource ohne Annotation erstellen, wird die Ressource in dem Projekt angelegt, das den Namespace der Ressource teilt.
Es ist möglich, zwei Config Connector-Ressourcen in unterschiedlichen Namespaces zu erstellen, die die gleiche Google Cloud-Ressource verwalten. Dies wird aber nicht empfohlen. Config Connector wird nur dann die entsprechende Google Cloud-Ressource verwalten, wenn die Google Cloud-Ressource für das Modul freigegeben und eine Konfliktprävention aktiviert ist.
Freigaben sind Namespace-bezogen. Um eine Namespace-bezogene Freigabe zu erhalten, fügt Config Connector der Ressource zwei Labels hinzu:
cnrm-lease-holder-id
: Config Controller generiert eine eindeutige ID für Jeder Namespace, der eine Ressource mit aktivierter Konfliktverhinderung verwaltet. Anhand dieser eindeutigen ID wirdcnrm-lease-holder-id
festgelegt. So rufen Sie die Zuordnung auf: des Namespace mit dem Wertcnrm-lease-holder-id
fest, können Sie sich den ConfigMapnamespace-id
im Namespacecnrm-system
.cnrm-lease-expiration
: Eine Ablaufzeit in Unixzeit.
Config Connector kann diese Werte aktualisieren, wenn eine der folgenden Bedingungen zutrifft:
- Der Wert von
cnrm-lease-holder-id
entspricht der global eindeutigen ID des Namespace. - Der Wert von
cnrm-lease-holder-id
ist leer oder nicht vorhanden. - Der Wert von
cnrm-lease-expiration
liegt in der Vergangenheit.
Wenn eine Config Connector-Instanz eine Freigabe für eine Ressource erhält, wird die Ablaufzeit auf 40 Minuten in der Zukunft festgelegt. Diese Instanz von Config Connector behält die Verwaltung bei, solange sich die Ressource im Namespace befindet. Config Connector verlängert die Ablaufzeit um 40 Minuten, wenn weniger als 20 Minuten verbleiben.
Wenn Config Connector keine Freigabe für eine bestimmte Ressource erhalten kann, wird in der Ausgabe von kubectl describe
für die Ressource der Status ManagementConflict
angezeigt.
Konfliktvermeidung ändern
Sie können die Konfliktvermeidung steuern, indem Sie der Ressource die Annotation cnrm.cloud.google.com/management-conflict-prevention-policy
mit einem der folgenden Werte hinzufügen:
resource
: Verwaltungskonflikte werden auf Ressourcenebene verhindert. Dazu werden die entsprechenden Freigabe-Label in der Ressource gespeichert, wie im vorherigen Abschnitt beschrieben.none
: Verwaltungskonflikte werden nicht verhindert.
Der Standardwert ist none
.
Im folgenden Beispiel verwendet ein Manifest für das Standard-ComputeNetwork die Verwaltungsrichtlinie von none
. Dies bedeutet, dass Konflikte nicht verhindert werden:
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
Beschränkungen
Die Konfliktvermeidung unterliegt folgenden Einschränkungen:
Die Konfliktvermeidung funktioniert nicht für Ressourcen, die Label nicht unterstützen. Selbst wenn Sie den Wert von
none
inresource
ändern, funktioniert dies nicht.Wenn Sie Ressourcen mit dem Feld „resourceID“ verwalten können Sie mehrere Ressourcen mit demselben Google Cloud-Ressourcennamen erstellen, die unter demselben Namespace erstellt wurden. Diese Ressourcen verursachen Konflikte, Config Connector kann nicht verwalten.