Konflikte mit mehreren Config Connector-Instanzen verwalten

Auf dieser Seite wird gezeigt, wie Config Connector die Fälle handhabt, in denen eine Ressource von mehreren Instanzen verwaltet werden kann.

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:

  1. Eine global eindeutige ID für den Namespace (cnrm-lease-holder-id), und
  2. Eine Ablaufzeit (cnrm-lease-expiration) 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, indem die entsprechenden Freigabe-Labels wie oben beschrieben in der Ressource gespeichert werden.
  • none: Verwaltungskonflikte werden nicht verhindert.

Der Standardwert hängt davon ab, ob eine Config Connector-Ressource Labels unterstützt.

Wenn die Ressource Labels unterstützt, ist der Standardwert resource. Wenn die Ressource keine Labels unterstützt, ist der Standardwert none.

Im folgenden Beispiel verwendet ein Manifest für das Standard-ComputeNetwork die Verwaltungsrichtlinie none.

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