Stratégie de rapprochement


Avec la configuration déclarative, vous définissez l'état souhaité du système. Le système fonctionne alors en permanence pour demeurer le plus proche possible de cet état. Pour en savoir plus, consultez la section Gestion déclarative des objets Kubernetes à l'aide des fichiers de configuration.

À l'aide de Config Connector, vous pouvez créer et mettre à jour des ressources dans n'importe quel ordre, quelles que soient les relations de dépendance. GKE déplace les données configuration vers cohérence à terme à l'état souhaité.

Par exemple, si vous créez un PubSubSubscription avant le PubSubTopic correspondant, Config Connector attend que le sujet soit créé avant de créer l'abonnement associé.

La durée de votre installation de Config Connector varie selon le nombre et les types de ressources qu'elle gère. Les modifications apportées à un cluster GKE sont généralement exécutées en quelques secondes. Cependant, le temps de créer Les ressources Google Cloud peuvent varier en fonction de leur type. Pour exemple, la création d'un seul PubSubTopic prend quelques secondes. Les ressources Google Cloud ne parviennent à être cohérentes qu'après leur création. Par exemple, lorsque à la création d'une SQLInstance et d'une SQLDatabase, le système n'est pas cohérent en minutes pendant la création de la base de données.

GKE et Config Connector rapprochent chaque ressource avec chaque mise à jour ou après une période de gigue avec une moyenne basée sur l'intervalle par défaut préconfiguré. L'intervalle par défaut se trouve dans "Moyenne par défaut de Config Connector Intervalle de rapprochement en secondes" sur la page de référence de chaque ressource. Pour obtenir des liens vers chaque ressource, consultez la section Présentation des ressources. En cas d'erreur lors du rapprochement, Config Connector effectue une nouvelle tentative avec un intervalle exponentiel entre les tentatives, où l'intervalle maximal est de deux minutes. Vous pouvez afficher toutes les erreurs dans les événements d'une ressource donnée.

Configurer l'intervalle de rapprochement

À partir de Config Connector 1.102, vous pouvez configurer l'intervalle de réconciliation moyen pour les ressources gérées par Config Connector à l'aide de l'annotation cnrm.cloud.google.com/reconcile-interval-in-seconds. La valeur de l'annotation remplace la valeur par défaut de "Intervalle de réconciliation moyen par défaut de Config Connector en secondes" sur la page de documentation de référence. La valeur de l'annotation doit être un nombre entier non négatif représentant la durée en secondes. Si la valeur est définie sur 0, Config Connector cesse d'effectuer des rapprochements pour la ressource lorsque celle-ci passe à l'état UpToDate.

Par exemple, si vous souhaitez que Config Connector rapproche une ressource moins fréquemment pour éviter d'endommager les données Google Cloud sous-jacentes Problèmes de quota d'API, vous pouvez définir l'intervalle moyen de rapprochement sur 1 heure.

cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"

Si vous souhaitez que Config Connector rapproche une ressource plus fréquemment pour corriger les dérives plus rapidement, vous pouvez définir l'annotation sur une petite valeur.

Vous pouvez annoter toutes les ressources d'un type particulier qui partagent le même type de version de groupe (GVK) avec le script suivant :

#!/bin/bash

KIND=RESOURCE_KIND
NAMESPACE=RESOURCE_NAMESPACE
ANNOTATION_KEY="cnrm.cloud.google.com/reconcile-interval-in-seconds"
ANNOTATION_VALUE=RECONCILE_INTERVAL

kubectl annotate --overwrite --all ${KIND} ${ANNOTATION_KEY}=${ANNOTATION_VALUE} -n ${NAMESPACE}
echo "Annotation added to all ${KIND} RESOURCE"

Remplacez les éléments suivants :

  • RESOURCE_KIND : type de ressource que vous souhaitez annoter.
  • RESOURCE_NAMESPACE: espace de noms contenant les ressources que vous souhaitez annoter.
  • RECONCILE_INTERVAL: intervalle de rapprochement en secondes.

Vous pouvez définir l'intervalle de réconciliation sur 0 pour désactiver la correction de dérive d'une ressource, mais cela ne désactive pas l'activation de la ressource. Si vous modifiez la ressource Spec, celle-ci sera à nouveau rapprochée.

La définition de l'intervalle de rapprochement sur 0 est irréversible. Cela signifie que le fait de remplacer la valeur par une valeur non nulle ne force pas Config Connector à rapprocher la ressource.

Si vous souhaitez rétablir l'intervalle de réconciliation de 0 jour, vous avez les options suivantes :

  • Modifiez la spécification de la ressource avec la valeur de l'intervalle de rapprochement pour activer de nouvelles opérations de rapprochement.
  • Abandonnez la ressource en définissant l'annotation cnrm.cloud.google.com/deletion-policy: "abandon", puis recréez-la avec une valeur d'intervalle de réconciliation autre que 0.

Les champs modifiables, mais illisibles, ne sont activés qu'en cas de modification

Certaines API exposent des champs qui ne sont pas lisibles, mais qui sont modifiables (par exemple, le mot de passe d'un utilisateur SQL). En raison de l'impossibilité de voir si ces champs ont été les champs modifiés, modifiables mais illisibles ne sont mis à jour que lorsque le champ ressource a été modifiée.

Les ressources ne sont pas recréées lors de la modification de champs immuables

Certains champs d'une ressource sont immuables et ne peuvent pas être rapprochés sans supprimer, puis recréer la ressource cible.

Dans ces situations, Config Connector émet un événement Kubernetes "UpdatedFailed" pour la ressource au lieu d'effectuer cette recréation. Vous devez ensuite supprimer et recréer la ressource.

Exemple d'événement :

Warning  UpdateFailed  37m (x643 over 15d)    computeinstance-controller  Update call failed: the desired mutation for the following field(s) is invalid: [bootDisk.0.InitializeParams.0.Image networkInterface.0.NetworkIp]