Gérer les champs en externe
Lorsque Config Connector crée une ressource sur Google Cloud, les champs non renseignés dans la spécification prennent les valeurs de l'API, sauf si elles sont illisibles (par exemple, si elles ne sont pas disponibles à l'aide d'une requête HTTP GET).
Dans ce cas, le champ est considéré comme "géré en externe", car Kubernetes n'est pas la source fiable pour cette valeur.
Comportement avec application côté serveur
Si server-side apply est activé pour la ressource, les valeurs des champs gérés en externe dans est mis à jour en continu pour correspondre à l'infrastructure Google Cloud ressource.
Si une valeur est présente pour un champ de la configuration appliquée, le champ n'est pas géré en externe.
Si le champ est supprimé, il est géré en externe.
Comportement sans application côté serveur
Si l'application côté serveur n'est pas activée, les champs laissés vides dans la spécification de la ressource sont renseignés avec la valeur lue à partir de l'API Google Cloud, et appliqués par Config Connector.
Par exemple, si l'utilisateur applique une configuration de ressource sans définir de valeur pour bar
dans la spécification :
spec:
foo: "foo"
Si la valeur du champ bar
est baz
dans l'API Google Cloud,
ressource dans
api-server
est renseigné avec cette valeur:
# object in the api-server
spec:
foo: "foo"
bar: "baz" # populated by first reconciliation
Si la ressource Google Cloud est modifiée directement pour que la valeur de bar
soit définie sur baz-2
, l'API Google Cloud est corrigée de manière à afficher la valeur initialement renseignée dans la spécification de ressource, à savoir baz
:
# object in the api-server
spec:
foo: "foo"
bar: "baz" # still the originally populated value, and overrides the Google Cloud value
Comportement des champs de liste dans la spécification de la ressource
En raison d'une limitation technique dans Config Connector, les champs de liste de votre configuration de ressources ne peuvent pas être gérés en externe par défaut. Cela signifie que Config Connector prend toujours possession des champs de liste dans la spécification de la ressource, même lorsque le champ n'est pas spécifié dans la configuration de la ressource d'origine.
Lors de l'application d'une spécification de ressource, Config Connector lit la des champs de liste de l'API Google Cloud et traite cette valeur initiale comme source de vérité et état souhaité. Si la valeur de ce champ de liste est modifiée en dehors de Config Connector, Config Connector tente de la rétablir, ce qui peut ne pas être souhaitable.
Pour contourner cette limitation et permettre la gestion externe des champs de liste,
Utilisez l'annotation cnrm.cloud.google.com/state-into-spec
. Ce
n'est pas compatible avec toutes les ressources. Pour savoir si votre ressource est compatible avec l'annotation, consultez la page de référence de la ressource correspondante.
metadata:
annotations:
cnrm.cloud.google.com/state-into-spec: absent
En définissant la valeur de state-into-spec
sur absent
, Config Connector ignore les champs de liste s'ils ne sont pas spécifiés dans la configuration de votre ressource. Cela laisse
lister les champs de la ressource à gérer en externe.
Mises en garde
Les champs qui sont à la fois gérés par Config Connector et mis à jour automatiquement par des services externes peuvent déclencher une mise à jour sans fin sur l'API sous-jacente. Cela peut se produire si l'API sous-jacente dispose de champs "autoscaling" ou "autoupdating". Assurez-vous que ces champs sont traités comme étant gérés en externe en activant l'application côté serveur pour la ressource et en omettant ce champ de votre fichier de configuration lors de l'application.