Arrêter et reprendre la synchronisation des configurations

Dans certains cas, vous devrez peut-être rapidement empêcher Config Sync de synchroniser les configurations à partir de votre source de référence. C'est le cas si quelqu'un commet une configuration valide d'un point de vue syntaxique, mais incorrecte dans la source, et que vous souhaitez limiter ses effets sur vos clusters en cours d'exécution pendant la suppression ou la correction de la configuration.

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 fiable

Cette section fournit une source d'informations unique et vous explique comment rapidement arrêter la synchronisation et comment reprendre la synchronisation une fois le problème résolu. Pour savoir comment arrêter la synchronisation pour plusieurs sources de référence, consultez la section Arrêter et reprendre la synchronisation à partir de plusieurs sources de référence.

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 s'exécutent pas.

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

Tous les déploiements se trouvent toujours dans le cluster, mais aucune instance répliquée de l'opérateur ou de l'un des processus responsables de la synchronisation n'est disponible. Par conséquent, les configurations ne sont pas synchronisées à partir de la source fiable.

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 répliqué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 fiables

Cette section concerne plusieurs sources de référence et vous montre comment arrêter et reprendre temporairement la synchronisation à partir de plusieurs sources. Pour savoir comment arrêter la synchronisation pour une source fiable unique, consultez la section Arrêter et reprendre la synchronisation à partir d'une source fiable.

Seul un administrateur central peut arrêter la synchronisation dans la source de référence racine.

La possibilité d'arrêter la synchronisation dans plusieurs sources de référence dépend de la méthode de configuration utilisée lorsque vous avez configuré la synchronisation à partir de plusieurs sources de référence:

  • Si la méthode Contrôler les sources dans une source de référence 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 référence avec l'API Kubernetes a été utilisée, les opérateurs d'application peuvent arrêter et reprendre la synchronisation à partir des sources de référence à l'échelle de l'espace de noms sur lesquelles ils travaillent.

Arrêter la synchronisation

Les sections suivantes expliquent comment arrêter la synchronisation pour la source de vérité racine et les 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 s'exécutent pas.

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

Arrêter la synchronisation à partir de la source de référence racine

Pour arrêter la synchronisation d'un cluster à partir de la source de référence 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 le nombre de replicas dans le déploiement root-reconciler à 0.

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 d'une source fiable à l'échelle de l'espace de noms

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

Méthode de la source de référence racine

Si la méthode Contrôler les sources de référence de l'espace de noms dans la source de référence 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 d'espace de noms fiable:

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 d'un 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 enable 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 depuis toutes les sources fiables

Pour arrêter la synchronisation à partir de toutes les sources de référence, y compris la source racine de vérité et les sources à l'échelle d'un 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 de rapprochement se trouvent toujours dans le cluster, mais aucune instance répliquée des rapprochements ni aucun des processus responsables de la synchronisation n'est disponible. Par conséquent, les configurations ne sont pas synchronisées à partir de la source fiable.

Reprendre la synchronisation

Cette section explique comment reprendre la synchronisation pour la source de référence racine et pour les sources à l'échelle d'un espace de noms.

Reprendre la synchronisation à partir de la source de référence racine

Pour reprendre la synchronisation à partir d'une source de référence 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 source de vérité ou Méthode API Kubernetes pour afficher les instructions correspondantes.

Méthode de la source de référence racine

Si vous avez utilisé la méthode Contrôler les sources à l'échelle d'un espace de noms dans une source racine de vérité, 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 enable 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 fiables

Pour reprendre la synchronisation à partir de toutes les sources fiables, 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