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. Consultez la section Gestion déclarative des objets Kubernetes à l'aide des fichiers de configuration pour en savoir plus.
À 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 ressources Google Cloud peut varier en fonction du type de ressource. Par exemple, la création d'un seul PubSubTopic
prend quelques secondes. Les ressources Google Cloud n'atteignent pas la cohérence tant qu'elles n'ont pas été créées. Par exemple, lors de la création de SQLInstance
et de SQLDatabase
, le système est incohérent pendant un certain temps pendant que la base de données est créée.
GKE et Config Connector rapprochent chaque ressource avec chaque mise à jour ou après une période de gigue avec une moyenne de 10 minutes par défaut. En cas d'erreur lors du rapprochement, Config Connector retente avec un intervalle exponentiel entre les tentatives de deux minutes. Vous pouvez afficher les erreurs éventuelles 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 rapprochement moyen des 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 doit être un entier non négatif représentant la durée en secondes. Si la valeur est définie sur 0, Config Connector cesse d'effectuer les rapprochements pour la ressource une fois qu'elle atteint l'état UpToDate.
Par exemple, si vous souhaitez que Config Connector réconcilie une ressource moins fréquemment pour éviter d'atteindre les problèmes de quota d'API Google Cloud sous-jacents, vous pouvez définir l'intervalle de rapprochement 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 tôt, vous pouvez définir une valeur faible pour l'annotation.
Vous pouvez annoter toutes les ressources d'un type particulier partageant le même genre de version de groupe (GVK) à l'aide du 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.
Les champs modifiables, mais illisibles, ne sont activés qu'en cas de modification
Certaines API exposent des champs illisibles, mais modifiables (par exemple, le mot de passe d'un utilisateur SQL). En raison de l'impossibilité de voir 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]