Arrêter et reprendre la synchronisation des configurations

Dans certains cas, vous devrez peut-être rapidement arrêter la synchronisation des configurations de votre source de vérité dans Config Sync. Par exemple, si une personne effectue dans la source un commit d'une configuration valide d'un point de vue syntaxique mais incorrecte, vous souhaiterez certainement limiter ses effets sur vos clusters en cours d'exécution le temps que la configuration soit supprimée ou corrigée.

Prérequis

Pour utiliser les commandes de ce document, vous devez disposer des autorisations Kubernetes RBAC suivantes dans les espaces de noms config-management-system sur tous les clusters pour lesquels vous souhaitez arrêter la synchronisation :

- apiGroups: ["extensions"]
  resources: ["deployments", "deployments/scale"]
  verbs: ["get", "update"]
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list", "watch"]

Arrêter et reprendre la synchronisation à partir d'une source de vérité

Cette section est destinée à une source de vérité unique. Elle explique comment arrêter la synchronisation rapidement et comment reprendre la synchronisation une fois le problème résolu. Pour savoir comment arrêter la synchronisation pour plusieurs sources de vérité, consultez la section Arrêter et reprendre la synchronisation à partir de plusieurs sources de vérité.

Arrêter la synchronisation

Pour arrêter la synchronisation d'un seul cluster, exécutez les commandes suivantes, qui sont fournies en tant que commande unique pour plus de commodité, mais qui peuvent également être exécutées séparément :

kubectl scale -n config-management-system deployment config-management-operator --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator \
&& kubectl scale -n config-management-system deployment --replicas=0 --all \
&& kubectl wait -n config-management-system --for=delete pods --all

Les commandes effectuent les actions suivantes, dans l'ordre. Si une commande échoue, les commandes restantes ne sont pas exécutées.

  1. Réduit le nombre de replicas du déploiement de l'opérateur Config Management à 0.
  2. Réduit le nombre de replicas de tous les déploiements exécutés dans l'espace de noms config-management-system à 0. L'ensemble exact de déploiements concernés varie selon la version du produit.

Tous les déploiements sont toujours dans le cluster, mais aucune instance dupliquée de l'opérateur ni aucun des processus responsables de la synchronisation n'est disponible. Les configurations ne sont donc pas synchronisées à partir de la source de vérité.

Pour vérifier que tous les processus ont été arrêtés, exécutez la commande suivante et vérifiez que tous les déploiements ne comportent aucune instance dupliquée :

kubectl get -n config-management-system deployment

Si vous devez arrêter la synchronisation sur plusieurs clusters, exécutez les commandes précédentes pour chaque cluster.

Reprendre la synchronisation

Pour reprendre la synchronisation pour un seul cluster, exécutez la commande suivante :

kubectl -n config-management-system scale deployment config-management-operator --replicas=1

Cette commande effectue le scaling du déploiement de l'opérateur pour qu'il dispose d'une instance dupliquée. L'opérateur remarque ensuite que les pods de l'espace de noms config-management-system sont déployés de manière incorrecte et les adaptent au bon nombre d'instances dupliquées.

Si vous devez reprendre la synchronisation sur plusieurs clusters, exécutez la commande précédente pour chaque cluster.

Arrêter et reprendre la synchronisation à partir de plusieurs sources de vérité

Cette section concerne plusieurs sources de vérité. Elle explique comment arrêter temporairement la synchronisation et la reprendre à partir de plusieurs sources de vérité. Pour savoir comment arrêter la synchronisation pour une source de vérité unique, consultez la section Arrêter et reprendre la synchronisation à partir d'une source de vérité.

Seul un administrateur central peut arrêter la synchronisation dans la source de vérité racine.

La possibilité d'arrêter la synchronisation dans plusieurs sources de vérité dépend de la méthode de configuration utilisée lors de la configuration de la synchronisation à partir de plusieurs sources de vérité :

  • Si la méthode Contrôler les sources dans une source de vérité racine a été utilisée, un administrateur central est le seul à pouvoir arrêter et reprendre la synchronisation.

  • Si la méthode Contrôler une source de vérité avec l'API Kubernetes a été utilisée, les opérateurs d'application peuvent arrêter et reprendre la synchronisation à partir des sources de vérité à l'échelle de l'espace de noms sur lesquelles ils travaillent.

Arrêter la synchronisation

Les sections suivantes expliquent comment arrêter la synchronisation de la source de vérité racine et des sources de vérité à l'échelle de l'espace de noms. Pour empêcher le gestionnaire de rapprochement d'annuler la modification, vous devez d'abord arrêter le gestionnaire de rapprochement en exécutant les commandes suivantes :

kubectl -n config-management-system scale deployment config-management-operator --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator --timeout=60s \
&& kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager

Les commandes effectuent les actions suivantes, dans l'ordre. Si une commande échoue, les commandes restantes ne sont pas exécutées.

  1. Réduit le nombre de replicas du déploiement de l'opérateur Config Management à 0.
  2. Réduit le nombre de replicas du déploiement du gestionnaire de rapprochement à 0.

Arrêter la synchronisation à partir de la source de vérité racine

Pour arrêter la synchronisation d'un cluster à partir de la source de vérité racine, un administrateur central peut exécuter la commande suivante :

kubectl -n config-management-system scale deployment root-reconciler --replicas=0

Cette commande réduit à 0 le nombre de replicas dans le déploiement de root-reconciler.

Si vous devez arrêter la synchronisation sur plusieurs clusters, exécutez la commande précédente pour chaque cluster.

Arrêter la synchronisation à partir de la source de vérité à l'échelle de l'espace de noms

Sélectionnez l'onglet Méthode de la source de vérité racine ou Méthode de l'API Kubernetes pour afficher les instructions correspondantes.

Méthode de la source de vérité racine

Si la méthode Contrôler les sources de vérité des espaces de noms dans la source de vérité racine a été utilisée, les administrateurs centraux peuvent exécuter les commandes suivantes pour arrêter la synchronisation d'un cluster à partir d'une source de vérité d'espace de noms :

kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0

Cette commande réduit à 0 le nombre d'instances dupliquées du déploiement ns-reconciler-NAMESPACE.

Si vous devez arrêter la synchronisation sur plusieurs clusters, exécutez la commande précédente pour chaque cluster.

Méthode de l'API Kubernetes

Si la méthode Contrôler les sources à l'échelle de l'espace de noms avec l'API Kubernetes a été utilisée, les opérateurs d'application peuvent arrêter la synchronisation d'un cluster en exécutant les commandes suivantes :

  1. Récupérez la configuration RepoSync et enregistrez-la pour l'utiliser plus tard lorsque vous souhaiterez reprendre la synchronisation :

    kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yaml
    

    Remplacez NAMESPACE par l'espace de noms de votre objet RepoSync.

  2. Supprimez la configuration RepoSync :

    kubectl -n NAMESPACE delete reposyncs repo-sync
    

    Cette commande déclenche le gestionnaire de rapprochement pour supprimer le rapprochement de l'espace de noms (ns-reconciler-NAMESPACE) de NAMESPACE et arrête la synchronisation.

    Si vous devez arrêter la synchronisation sur plusieurs clusters, exécutez les commandes précédentes pour chaque cluster.

Empêcher le webhook d'admission de bloquer les dérives (facultatif)

Le webhook d'admission Config Sync est désactivé par défaut. Vous pouvez activer et désactiver la fonctionnalité de prévention des dérives fournie par le webhook d'admission à l'aide de Google Cloud CLI ou de kubectl.

Arrêter la synchronisation à partir de toutes les sources de vérité

Pour arrêter la synchronisation à partir de toutes les sources de vérité, y compris la source de vérité racine et les sources à l'échelle de l'espace de noms, exécutez les commandes suivantes :

kubectl scale deployment -n config-management-system -l app=reconciler --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l app=reconciler

Les commandes réduisent à zéro le nombre de replicas de tous les pods de rapprochement exécutés dans l'espace de noms config-management-system, et attendent jusqu'à ce que tous les pods de rapprochement soient supprimés.

Tous les déploiements sont toujours dans le cluster, mais aucune instance dupliquée de l'opérateur ni aucun des processus responsables de la synchronisation n'est disponible. Les configurations ne sont donc pas synchronisées à partir de la source de vérité.

Reprendre la synchronisation

Cette section explique comment reprendre la synchronisation pour la source de vérité racine et pour les sources à l'échelle de l'espace de noms.

Reprendre la synchronisation à partir de la source de vérité racine

Pour reprendre la synchronisation à partir d'une source de vérité racine, un administrateur central peut exécuter la commande suivante :

kubectl -n config-management-system scale deployment root-reconciler --replicas=1

Cette commande effectue le scaling du déploiement root-reconciler pour qu'il dispose d'une instance dupliquée.

Reprendre la synchronisation à partir d'une source à l'échelle d'un espace de noms

Sélectionnez l'onglet Méthode de la source de vérité racine ou Méthode de l'API Kubernetes pour afficher les instructions correspondantes.

Méthode de la source de vérité racine

Si vous avez utilisé la méthode Contrôler les sources à l'échelle d'un espace de noms dans une source de vérité racine, un administrateur central peut exécuter la commande suivante :

kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1

Cette commande effectue le scaling du déploiement "ns-reconciler-NAMESPACE" pour qu'il dispose d'une instance dupliquée.

Méthode de l'API Kubernetes

Si vous avez utilisé la méthode Contrôler les sources à l'échelle d'un espace de noms avec l'API Kubernetes, les opérateurs d'application peuvent reprendre la synchronisation en appliquant à nouveau repo-sync.yaml, qui contient la configuration RepoSync :

kubectl apply -f repo-sync.yaml

Cette commande déclenche le gestionnaire de rapprochement pour créer un processus de rapprochement des espaces de noms et un déploiement ns-reconciler-NAMESPACE.

Activer et désactiver le webhook d'admission

Le webhook d'admission Config Sync est désactivé par défaut. Vous pouvez activer et désactiver la fonctionnalité de prévention des dérives fournie par le webhook d'admission à l'aide de Google Cloud CLI ou de kubectl.

Reprendre la synchronisation à partir de toutes les sources de vérité

Pour reprendre la synchronisation à partir de toutes les sources de vérité, exécutez la commande suivante :

kubectl -n config-management-system scale deployment config-management-operator --replicas=1

Cette commande effectue le scaling du déploiement de l'opérateur pour qu'il dispose d'une instance dupliquée. L'opérateur remarque ensuite que le déploiement du gestionnaire de rapprochement n'est pas correctement mis à l'échelle et qu'il le met à l'échelle pour le nombre d'instances dupliquées approprié. Le gestionnaire de rapprochement procède finalement au scaling des rapprochements racine et d'espace de noms avec le nombre d'instances dupliquées correspondant.

Étapes suivantes