Gérer les champs en externe

Lorsque Config Connector crée une ressource sur Google Cloud, les champs non spécifiés dans la spécification prennent des valeurs de l'API, à moins qu'elles ne soient pas lisibles (par exemple, ne sont pas disponibles en utilisant 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 l'application côté serveur

Si l'application côté serveur est activée pour la ressource, les valeurs des champs gérés en externe dans l'objet sont mises à jour en continu pour correspondre à la ressource Google Cloud sous-jacente.

Si une valeur est présente pour un champ de la spécification 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 non spécifiés de la spécification de ressource sont renseignés avec la valeur lue dans l'API Google Cloud, et Config Connector applique ces valeurs initialement renseignées.

Par exemple, si l'utilisateur applique une configuration de ressource sans définir de valeur pour le paramètre bar dans la spécification :

spec:
    foo: "foo"

Si la valeur du champ bar est baz dans l'API Google Cloud, la ressource dans api-server est renseignée 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 de sorte que bar soit désormais baz-2, l'API Google Cloud est corrigée en fonction de la valeur initialement renseignée dans la spécification de ressource : 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 les spécifications de ressources

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 la propriété des champs de liste dans la spécification de ressource, même si le champ n'est pas spécifié dans votre configuration de ressource d'origine.

Au moment où une spécification de ressource est appliquée, Config Connector lit la valeur des champs de liste à partir de l'API Google Cloud et traite cette valeur initiale comme source fiable 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 être indésirable.

Pour contourner cette limitation et autoriser la gestion externe des champs de liste, utilisez l'annotation suivante:

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

Si vous définissez la valeur de state-into-spec sur absent, Config Connector ignore les champs de liste s'ils ne sont pas spécifiés dans votre configuration des ressources. Cela laisse les champs de liste dans 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 les services externes peuvent déclencher une mise à jour infinie sur l'API sous-jacente. Cela peut se produire si l'API sous-jacente dispose de champs d'autoscaling ou de mise à jour automatique. Assurez-vous que ces champs sont traités comme gérés en externe en activant l'application côté serveur pour la ressource et en les excluant du fichier de configuration lors de l'application.