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 (z. B. sind sie nicht mithilfe einer GET-HTTP-Anfrage verfügbar).

In diesem Fall gilt das Feld als „extern verwaltet”, da Kubernetes für diesen Wert nicht die „Source of Truth” ist.

Verhalten mit Server-Side Apply

Wenn die Server-Side Apply für die Ressource aktiviert ist, werden die Werte extern verwalteter Felder im Objekt kontinuierlich aktualisiert, damit sie der zugrunde liegenden Google Cloud-Ressource entsprechen.

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

Ist das Feld entfernt, wird das Feld extern verwaltet.

Verhalten ohne Server-Side Apply

Wenn Server-Side Apply nicht aktiviert ist, werden nicht angegebene Felder in der Ressourcenspezifikation mit dem Wert gefüllt, der aus der Google Cloud API gelesen wird. Config Connector erzwingt dann diese ursprünglich ausgefüllten Werte.

Wendet der Nutzer beispielsweise eine Ressourcenkonfiguration an, ohne einen Wert für bar in der Spezifikation festzulegen:

spec:
    foo: "foo"

Lautet der Wert des bar-Felds in der Google Cloud API baz, wird die Ressource im api-server bis zu diesem Wert befüllt:

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

Wenn die Google Cloud-Ressource direkt geändert wird, sodass bar jetzt baz-2 ist, wird die Google Cloud API bis zu dem Wert korrigiert, der ursprünglich in der Ressourcenspezifikation ausgefüllt wurde – baz:

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

Vorsichtsmaßnahmen

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. Diese Felder müssen extern verwaltet werden. Aktivieren Sie dazu serverseitig den Wert für die Ressource und lassen Sie das Feld bei der Anwendung aus der Konfigurationsdatei weg.