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 Server Side Apply für die Ressource aktiviert ist, werden die Werte extern verwalteter Felder in der wird kontinuierlich an die zugrunde liegende Google Cloud angepasst .
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"
Wenn der Wert des Felds bar
in der Google Cloud API baz
ist, gibt der Wert
Ressource in der
api-server
mit diesem Wert gefüllt wird:
# 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
Verhalten für Listenfelder in der Ressourcenspezifikation
Aufgrund technischer Einschränkungen in Config Connector sollten Sie Felder in Ihrer Ressource auflisten Konfiguration kann standardmäßig nicht extern verwaltet werden. Das bedeutet, Config Connector übernimmt immer die Inhaberschaft für Listenfelder in der Ressourcenspezifikation. auch wenn das Feld in der ursprünglichen Ressourcenkonfiguration nicht angegeben ist.
Wenn eine Ressourcenspezifikation angewendet wird, liest Config Connector den Wert von Listenfeldern aus der Google Cloud API und behandelt diesen anfänglichen Wert -Wert als "Source of Truth" und den gewünschten Status festlegen. Wenn der Wert in diesem Listenfeld außerhalb von Config Connector geändert wird, versucht Config Connector, ihn rückgängig zu machen, was möglicherweise nicht gewünscht ist.
Um diese Einschränkung zu umgehen und Listenfelder extern verwalten zu lassen,
Verwenden Sie die Annotation cnrm.cloud.google.com/state-into-spec
. Dieses
Annotation wird nicht für alle Ressourcen unterstützt. Um zu sehen, ob Ihre
Ressource die Annotation unterstützt, klicken Sie das entsprechende Kästchen an
Ressourcenreferenzseite.
metadata:
annotations:
cnrm.cloud.google.com/state-into-spec: absent
Wenn Sie den Wert von state-into-spec
auf absent
setzen, ignoriert Config Connector
list-Felder, wenn sie in Ihrer Ressourcenkonfiguration nicht angegeben sind. Listenfelder in der Ressource müssen dann extern verwaltet werden.
Vorsichtsmaßnahmen
Felder, die sowohl von Config Connector verwaltet als auch automatisch durch externe Dienste aktualisiert werden, können endlose Aktualisierungen der zugrunde liegenden API auslösen. Dies kann passieren, wenn die zugrunde liegende API Autoscaling- oder automatische aktualisieende Felder enthält. Achten Sie darauf, dass diese Felder als extern verwaltet behandelt werden. Aktivieren Sie dazu die serverseitig Nutzung der Ressource und lassen Sie das Feld bei der Nutzung aus der Konfigurationsdatei weg.