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 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. Cependant, 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 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 avec l'annotation cnrm.cloud.google.com/reconcile-interval-in-seconds. La valeur de l'annotation remplace la valeur par défaut "Config Connector Default Average Reconcile Interval In Seconds" de la page référence de ressource. La valeur de l'annotation doit être un entier non négatif représentant une durée en secondes. Si la valeur est définie sur 0, Config Connector cesse de lancer des réconciliations pour la ressource une fois qu'elle atteint l'état UpToDate.

Par exemple, si vous souhaitez que Config Connector réconcilie une ressource moins souvent pour éviter d'atteindre les 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 ré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 Group Version Kind (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 réconciliation en secondes.

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

Il est impossible de revenir en arrière une fois que vous avez défini l'intervalle de réconciliation sur 0. Cela signifie que si vous remplacez la valeur par un nombre non nul, Config Connector ne réconciliera pas à nouveau la ressource.

Si vous souhaitez rétablir l'intervalle de réconciliation à 0, vous disposez des options suivantes :

  • Modifiez la spécification de la ressource avec la valeur de l'intervalle de réconciliation pour activer de nouvelles réconciliations.
  • 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 différente de 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 lorsque vous modifiez des 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]