Felder extern verwalten

Wenn Config Connector eine Ressource in Google Cloud erstellt, übernehmen Felder, die in der Spezifikation nicht angegeben sind, Werte aus der API, es sei denn, sie sind nicht lesbar. Sie sind beispielsweise nicht mit einer GET-HTTP-Anfrage verfügbar.

In diesem Fall wird das Feld als extern verwaltet betrachtet, da Kubernetes nicht die "Source of Truth" für diesen Wert ist.

Verhalten bei serverseitiger Anwendung

Wenn serverseitig gelten für die Ressource aktiviert ist, werden die Werte der extern verwalteten Felder im Objekt kontinuierlich aktualisiert, damit sie der zugrunde liegenden Google Cloud-Ressource entsprechen.

Wenn ein Wert für ein Feld in der Spezifikation in der angewendeten Konfiguration vorhanden ist, wird das Feld nicht extern verwaltet.

Wenn das Feld entfernt wird, wird es extern verwaltet.

Verhalten ohne serverseitige Anwendung

Wenn das serverseitige Anwenden nicht aktiviert ist, werden nicht angegebene Felder in der Ressourcenspezifikation mit dem Wert gefüllt, der aus der Google Cloud API gelesen wird, und Config Connector erzwingt diese anfangs ausgefüllten Werte.

Beispiel: Der Nutzer wendet eine Ressourcenkonfiguration an, ohne in der Spezifikation einen Wert für bar festzulegen:

spec:
    foo: "foo"

Wenn der Wert des Feldes bar in der Google Cloud API baz lautet, wird die Ressource auf dem api-server mit diesem Wert gefüllt:

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

Wenn die Google Cloud-Ressource direkt so geändert wurde, dass bar jetzt baz-2 ist, wird die Google Cloud API auf den Wert korrigiert, der ursprünglich in der Ressourcenspezifikation angegeben wurde: baz:

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

Verhalten für Listenfelder in den Ressourcenspezifikationen

Aufgrund technischer Einschränkungen in Config Connector können Listenfelder in Ihrer Ressourcenkonfiguration standardmäßig nicht extern verwaltet werden. Das bedeutet, dass Config Connector immer die Inhaberschaft von Listenfeldern in der Ressourcenspezifikation übernimmt, auch wenn das Feld in Ihrer ursprünglichen Ressourcenkonfiguration nicht angegeben ist.

Wenn eine Ressourcenspezifikation angewendet wird, liest Config Connector den Wert der Listenfelder aus der Google Cloud API und behandelt diesen Anfangswert als "Source of Truth" und als gewünschten Status. Wenn der Wert in diesem Listenfeld außerhalb von Config Connector geändert wird, versucht Config Connector, diesen Wert wiederherzustellen. Dies ist möglicherweise nicht erwünscht.

Verwenden Sie die folgende Annotation, um diese Einschränkung zu umgehen und Listen von Feldern extern zu verwalten:

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

Durch Festlegen des Werts von state-into-spec auf absent ignoriert Config Connector Listenfelder, wenn sie nicht in Ihrer Ressourcenkonfiguration angegeben sind. Dadurch werden die Felder in der Ressource aufgelistet, die extern verwaltet werden sollen.

Wichtige Hinweise

Felder, die sowohl von Config Connector verwaltet als auch automatisch von externen Diensten aktualisiert werden, können eine endlose Aktualisierung in der zugrunde liegenden API auslösen. Dies kann passieren, wenn die zugrunde liegende API Autoscaling- oder automatische Aktualisierungsfelder enthält. Stellen Sie sicher, dass diese Felder als extern verwaltet behandelt werden, indem Sie serverseitiges Anwenden für die Ressource aktivieren und das Feld aus Ihrer Konfigurationsdatei ausschließen.