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 votre configuration déclarée vers la cohérence à terme avec 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. Toutefois, le temps de création des ressourcesGoogle Cloud peut varier en fonction du type de ressource. Par exemple, cela ne prend que quelques secondes pour créer un seul PubSubTopic
.Les ressources Google Cloudne parviennent à être cohérentes qu'après leur création. Par exemple, lors de la création d'un SQLInstance
et d'un SQLDatabase
, le système est incohérent durant quelques 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é. Vous trouverez l'intervalle par défaut dans"Intervalle de réconciliation moyen par défaut de Config Connector 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 entier non négatif représentant le temps en secondes. Si la valeur est définie sur 0, Config Connector cesse d'initier des rapprochements pour la ressource une fois qu'elle a atteint l'état À jour.
Par exemple, si vous souhaitez que Config Connector concilie une ressource moins fréquemment pour éviter de rencontrer des Google Cloud problèmes de quota d'API sous-jacents, vous pouvez définir la valeur de l'intervalle de réconciliation moyen sur une heure.
cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"
Si vous souhaitez que Config Connector concilie une ressource plus fréquemment pour corriger les dérives plus rapidement, vous pouvez définir l'annotation avec 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
: l'espace de noms contenant les ressources que vous souhaitez annoter.RECONCILE_INTERVAL
: l'intervalle de réconciliation 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
, elle sera à nouveau rapprochée.
Définir l'intervalle de réconciliation sur 0 est irréversible. Par conséquent, si vous rétablissez la valeur à un nombre non nul, Config Connector ne réconciliera pas à nouveau 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 vérifier si ces champs ont été modifiés, les champs modifiables mais illisibles ne sont mis à jour que lorsque la ressource personnalisée est 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]