Detén y reanuda la sincronización de los archivos de configuración

En algunas situaciones, es posible que debas detener rápidamente el Sincronizador de configuración de tu fuente de información. Una de ellas es si se confirma una configuración sintácticamente válida pero incorrecta en la fuente, y deseas limitar sus efectos en los clústeres en ejecución mientras se quita o corrige la configuración.

Esta página está destinada a administradores de TI y operadores que administran el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Tareas y roles comunes de los usuarios de GKE Enterprise.

En el caso de los clústeres con la versión 1.20.0 del Sincronizador de configuración y versiones posteriores, o cualquier clúster con las actualizaciones automáticas habilitadas, el operador ConfigManagement no se ejecuta en tu clúster. No es necesario que sigas los pasos de esta página para detener la sincronización de forma manual. En su lugar, puedes usar el campo spec.configSync.stopSyncing de gcloud CLI si configuras true en el archivo de configuración del Sincronizador de configuración. Luego, para reanudar la sincronización, configura el campo como false.

Si instalaste el Sincronizador de configuración de forma manual con kubectl, no puedes usar el campo stopSyncing. En este caso, puedes seguir los pasos que se indican en esta página para detener la sincronización de forma manual. Los pasos manuales difieren según la versión del Sincronizador de configuración que esté instalada en tus clústeres.

Requisitos previos

Para usar los comandos de este documento, necesitas los siguientes permisos RBAC de Kubernetes en los espacios de nombres config-management-system en todos los clústeres donde deseas detener la sincronización:

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

Detén y reanuda la sincronización desde una fuente de información

En esta sección, se muestra cómo detener la sincronización con rapidez y cómo reanudar la sincronización cuando se soluciona el problema. Para obtener información sobre cómo detener la sincronización de más de una fuente de información, consulta Detén y reanuda la sincronización de más de una fuente de información.

Detén la sincronización

Para detener la sincronización de un solo clúster, ejecuta el siguiente comando:

1.20.0 o una versión posterior

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

Los comandos reducen el recuento de replicas de todos los Deployments que se ejecutan en el espacio de nombres config-management-system a 0. El conjunto exacto de Deployments afectados varía según la versión del producto.

1.19.2 o una versión anterior

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

Los comandos hacen lo siguiente, en secuencia. Si un comando falla, los comandos restantes no se ejecutan.

  1. Reduce el recuento de replicas a 0 en la implementación del operador de Config Management.
  2. Reduce el recuento de replicas de todos los Deployments que se ejecutan en el espacio de nombres config-management-system a 0. El conjunto exacto de Deployments afectados varía según la versión del producto.

Todas las implementaciones aún se encuentran en el clúster, pero no hay réplicas de los procesos responsables de la sincronización, por lo que las configuraciones no se sincronizan desde la fuente de verdad.

Para verificar que se hayan detenido todos los procesos, usa el siguiente comando y verifica que todas las implementaciones tengan cero réplicas:

kubectl get -n config-management-system deployment

Si necesitas detener la sincronización en varios clústeres, ejecuta los comandos anteriores para cada uno.

Reanuda la sincronización

Para reanudar la sincronización de un solo clúster, ejecuta el siguiente comando:

1.20.0 o una versión posterior

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

Este comando escala la implementación del Administrador de conciliadores a 1 réplica. Luego, el administrador de conciliadores observa que los Pods en las implementaciones del espacio de nombres config-management-system se escalan de forma incorrecta y los escala según su recuento de réplicas adecuado.

1.19.2 o una versión anterior

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

Este comando escala la implementación del operador a 1 réplica. Luego, el operador observa que los Pods en las implementaciones del espacio de nombres config-management-system se escalan de forma incorrecta y los escala según su recuento de réplicas adecuado.

Si necesitas reanudar la sincronización en varios clústeres, ejecuta el comando anterior para cada uno.

Detén y reanuda la sincronización desde más de una fuente de información

La sección es para más de una fuente de información y te muestra cómo detener y reanudar temporalmente la sincronización desde más de una fuente de información. Si deseas obtener más información para detener la sincronización de una sola fuente de información, consulta Detén y reanuda la sincronización desde una fuente de información.

Solo un administrador central puede detener la sincronización en la fuente de información raíz.

La capacidad de detener la sincronización en más de una fuente de información depende del método de configuración que se usó cuando configuraste la sincronización desde más de una fuente de información:

  • Si se usó el método de control de fuentes en una fuente de información raíz, un administrador central es el único que puede detener y reanudar la sincronización.

  • Si se usó el método de control de una fuente de información con la API de Kubernetes, los operadores de la aplicación pueden detener y reanudar la sincronización desde las fuentes con alcance de espacio de nombres en las que operan.

Detén la sincronización

En las siguientes secciones, se muestra cómo detener la sincronización para la fuente de información raíz y las fuentes de verdad con alcance de espacio de nombres. Para evitar que el administrador de conciliadores revierta el cambio, primero debes detenerlo con los siguientes comandos:

1.20.0 o una versión posterior

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

Los comandos reducen el recuento de replicas a 0 en la implementación del administrador de conciliadores.

1.19.2 o una versión anterior

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 deployment -n config-management-system reconciler-manager --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager

Los comandos hacen lo siguiente, en secuencia. Si un comando falla, los comandos restantes no se ejecutan.

  1. Reduce el recuento de replicas a 0 en la implementación del operador de Config Management.
  2. Reduce el recuento de replicas a 0 en la implementación del administrador de conciliadores.

Detén la sincronización desde la fuente de información raíz

Para detener la sincronización de un clúster desde la fuente de información raíz, un administrador central puede ejecutar el siguiente comando:

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

Mediante este comando, se reduce el recuento de replicas en el Deployment de root-reconciler a 0.

Si necesitas detener la sincronización en varios clústeres, ejecuta el comando anterior para cada uno.

Detén la sincronización desde la fuente de verdad con alcance de espacio de nombres

Selecciona la pestaña Método de fuente de información raíz o Método de la API de Kubernetes para ver las instrucciones relevantes.

Método de fuente de confianza raíz

Si se usó el método de Control de fuentes de información con alcance de espacio de nombres en la fuente de información raíz, los administradores centrales pueden ejecutar los siguientes comandos para detener la sincronización del clúster desde una fuente de información con alcance de espacio de nombres:

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

Mediante el comando, se reduce el recuento de réplicas en el Deployment de ns-reconciler-NAMESPACE a 0.

Si necesitas detener la sincronización en varios clústeres, ejecuta el comando anterior para cada uno.

Método de la API de Kubernetes

Si se usó el método de control de las fuentes con alcance de espacio de nombres con la API de Kubernetes, los operadores de la aplicación pueden detener la sincronización del clúster mediante la ejecución de los siguientes comandos:

  1. Recupera la configuración de RepoSync y guárdala para usarla más adelante cuando quieras reanudar la sincronización:

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

    Reemplaza NAMESPACE por el espacio de nombres de RepoSync.

  2. Borra la configuración de RepoSync:

    kubectl -n NAMESPACE delete reposyncs repo-sync
    

    Mediante este comando, se activa el Administrador de conciliadores para quitar el conciliador de espacios de nombres (ns-reconciler-NAMESPACE) de NAMESPACE y se detiene la sincronización.

    Si necesitas detener la sincronización en varios clústeres, ejecuta los comandos anteriores para cada uno.

Detén el webhook de admisión del bloqueo de desvíos (opcional)

El webhook de admisión del Sincronizador de configuración está inhabilitado de forma predeterminada, y puedes habilitar y inhabilitar la funcionalidad de prevención de desvío que proporciona el webhook de admisión mediante Google Cloud CLI o kubectl.

Detén la sincronización desde todas las fuentes de información

Para detener la sincronización de todas las fuentes de información, incluidas la fuente de información raíz y las fuentes con alcance de espacio de nombres, ejecuta los siguientes comandos:

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

Los comandos reducen el recuento de replicas de todos los Pods de conciliador que se ejecutan en el espacio de nombres config-management-system a 0 y esperan hasta que se borren todos los Pods de conciliador.

Todas las implementaciones de conciliadores aún se encuentran en el clúster, pero no hay réplicas de conciliador ni ninguno de los procesos responsables de la sincronización, por lo que los parámetros de configuración no se sincronizan desde la fuente de verdad.

Reanuda la sincronización

En esta sección, se muestra cómo reanudar la sincronización de la fuente de información raíz y las fuentes con alcance de espacio de nombres.

Reanuda la sincronización desde la fuente de información raíz

Para reanudar la sincronización desde una fuente de información raíz, un administrador central puede ejecutar el siguiente comando:

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

Este comando escala el Deployment root-reconciler a 1 réplica.

Reanuda la sincronización desde una fuente con alcance de espacio de nombres

Selecciona la pestaña Método de fuente de información raíz o Método de la API de Kubernetes para ver las instrucciones relevantes.

Método de fuente de confianza raíz

Si usaste el método Controla fuentes de información con alcance de espacio de nombres en una fuente de información raíz, un administrador central puede ejecutar el siguiente comando:

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

Este comando escala el Deployment ns-reconciler-NAMESPACE a 1 réplica.

Método de la API de Kubernetes

Si usaste el método de Control de la fuente con alcance de espacio de nombres con la API de Kubernetes, los operadores de la aplicación pueden reanudar la sincronización si vuelven a aplicar el archivo repo-sync.yaml que contiene la configuración de RepoSync:

kubectl apply -f repo-sync.yaml

Con este comando, se activa el administrador de conciliadores para crear un proceso de conciliación de espacios de nombres y crear un Deployment ns-reconciler-NAMESPACE.

Habilita e ihnabilita el webhook de admisión

El webhook de admisión del Sincronizador de configuración está inhabilitado de forma predeterminada, y puedes habilitar y inhabilitar la funcionalidad de prevención de desvío que proporciona el webhook de admisión mediante Google Cloud CLI o kubectl.

Reanuda la sincronización desde todas las fuentes de información

1.20.0 o una versión posterior

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

Este comando escala la implementación del Administrador de conciliadores a 1 réplica. Luego, el administrador de conciliadores escala el conciliador raíz y los conciliadores de espacio de nombres al recuento de réplicas correspondiente.

1.19.2 o una versión anterior

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

Este comando escala la implementación del operador a 1 réplica. Luego, el operador observa que la implementación del administrador de conciliadores se escala de forma incorrecta y la escala al recuento de réplicas adecuado. Al final, el administrador de conciliadores escala el conciliador raíz y los conciliadores de espacio de nombres al recuento de réplicas correspondiente.

¿Qué sigue?