Pare e retome a sincronização das configurações

Em algumas situações, pode ter de impedir rapidamente que o Config Sync sincronize configurações da sua fonte de verdade. Um desses cenários ocorre se alguém enviar uma configuração sintaticamente válida, mas incorreta, para a origem e quiser limitar os respetivos efeitos nos clusters em execução enquanto a configuração é removida ou corrigida.

Esta página destina-se a administradores de TI e operadores que gerem o ciclo de vida da infraestrutura tecnológica subjacente. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud

Para clusters na versão 1.20.0 e posteriores do Config Sync ou qualquer cluster com atualizações automáticas ativadas, o operador ConfigManagement não é executado no seu cluster. Não precisa de parar manualmente a sincronização seguindo os passos nesta página. Em alternativa, pode usar o campo spec.configSync.stopSyncing da CLI gcloud definindo true no ficheiro de configuração do Config Sync. Em seguida, para retomar a sincronização, defina o campo como false.

Se instalou o Config Sync manualmente através de kubectl, não pode usar o campo stopSyncing. Neste caso, pode seguir os passos nesta página para parar manualmente a sincronização. Os passos manuais diferem consoante a versão do Config Sync instalada nos seus clusters.

Pré-requisitos

Para usar os comandos neste documento, precisa das seguintes autorizações de RBAC do Kubernetes nos espaços de nomes config-management-system em todos os clusters onde quer parar a sincronização:

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

Pare e retome a sincronização a partir de uma fonte de informação fidedigna

Esta secção destina-se a uma única fonte de verdade e mostra-lhe como parar a sincronização rapidamente e como retomar a sincronização quando o problema for resolvido. Para saber como parar a sincronização de mais de uma fonte de informação fidedigna, consulte o artigo sobre como parar e retomar a sincronização de mais de uma fonte de informação fidedigna.

Parar sincronização

Para parar a sincronização de um único cluster, execute o seguinte comando:

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

Os comandos reduzem a replicascontagem de todas as implementações em execução no espaço de nomesconfig-management-system para 0. O conjunto exato de implementações afetadas varia consoante a versão do produto.

Todas as implementações continuam no cluster, mas não estão disponíveis réplicas dos processos responsáveis pela sincronização. Por isso, as configurações não são sincronizadas a partir da fonte de dados fidedigna.

Para verificar se todos os processos foram interrompidos, use o seguinte comando e verifique se todas as implementações têm zero réplicas:

kubectl get -n config-management-system deployment

Se precisar de parar a sincronização em vários clusters, execute os comandos anteriores para cada cluster.

Retomar sincronização

Para retomar a sincronização de um único cluster, execute o seguinte comando:

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

Este comando dimensiona a implementação do Reconciler Manager para 1 réplica. Em seguida, o Reconciler Manager repara que as implementações dos pods no espaço de nomes config-management-system estão dimensionadas incorretamente e dimensiona-as para a contagem de réplicas adequada.

Se precisar de retomar a sincronização em vários clusters, execute o comando anterior para cada cluster.

Pare e retome a sincronização a partir de mais de uma fonte de informação fidedigna

A secção destina-se a mais do que uma fonte de informação fidedigna e mostra-lhe como parar e retomar temporariamente a sincronização de mais do que uma fonte de informação fidedigna. Para saber como parar a sincronização para uma única fonte de informação fidedigna, consulte o artigo Parar e retomar a sincronização a partir de uma fonte de informação fidedigna.

Apenas um administrador central pode parar a sincronização na origem de dados principal.

A capacidade de parar a sincronização em mais do que uma fonte de informação fidedigna depende do método de configuração usado quando configurou a sincronização a partir de mais do que uma fonte de informação fidedigna:

  • Se tiver usado o método Controlar origens numa origem de informações fidedignas raiz, apenas um administrador central pode parar e retomar a sincronização.

  • Se tiver usado o método Controlar uma fonte prioritária com a API Kubernetes, os operadores de aplicações podem parar e retomar a sincronização a partir das fontes prioritárias com âmbito do espaço de nomes em que trabalham.

Parar sincronização

As secções seguintes mostram como parar a sincronização para a fonte de informações reais raiz e as fontes de informações reais com âmbito do espaço de nomes. Para impedir que o gestor do reconciliador reverta a alteração, tem de parar primeiro o gestor do reconciliador executando os seguintes comandos:

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

Estes comandos reduzem a contagem de replicas na implementação do gestor de conciliação para 0.

Pare a sincronização a partir da fonte de informação fidedigna raiz

Para impedir a sincronização de um cluster a partir da origem de verdade raiz, um administrador central pode executar o seguinte comando:

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

Este comando reduz a contagem de replicas na root-reconciler implementação para 0.

Se precisar de parar a sincronização em vários clusters, execute o comando anterior para cada cluster.

Pare a sincronização a partir da fonte de informação fidedigna com âmbito do espaço de nomes

Selecione o separador Método de origem principal de dados ou Método da API Kubernetes para ver as instruções relevantes.

Método de origem de informação fidedigna

Se tiver sido usado o método Controlar origens prioritárias do espaço de nomes na origem prioritária raiz, os administradores centrais podem executar os seguintes comandos para impedir que um cluster seja sincronizado a partir de uma origem prioritária do espaço de nomes:

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

O comando reduz o número de réplicas na implementação ns-reconciler-NAMESPACE para 0.

Se precisar de parar a sincronização em vários clusters, execute o comando anterior para cada cluster.

Método da API Kubernetes

Se tiver sido usado o método Controle origens com âmbito do espaço de nomes com a API Kubernetes, os operadores de aplicações podem parar a sincronização de um cluster executando os seguintes comandos:

  1. Recupere a configuração do RepoSync e guarde-a para a usar mais tarde quando quiser retomar a sincronização:

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

    Substitua NAMESPACE pelo espaço de nomes do objeto RepoSync.

  2. Elimine a configuração de RepoSync:

    kubectl -n NAMESPACE delete reposyncs repo-sync
    

    Este comando aciona o gestor do reconciliador para remover o reconciliador do espaço de nomes (ns-reconciler-NAMESPACE) de NAMESPACE e interrompe a sincronização.

    Se precisar de parar a sincronização em vários clusters, execute os comandos anteriores para cada cluster.

Impeça que o webhook de admissão bloqueie desvios (opcional)

O webhook de admissão do Config Sync está desativado por predefinição e pode ativar e desativar a funcionalidade de prevenção de desvios fornecida pelo webhook de admissão através da CLI gcloud ou da kubectl.

Pare a sincronização de todas as fontes de informação fidedigna

Para parar a sincronização de todas as fontes de informação fidedigna, incluindo a fonte de informação fidedigna raiz e as fontes com âmbito do espaço de nomes, execute os seguintes 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

Os comandos reduzem a contagem de replicas de todos os pods do reconciliador em execução no espaço de nomes config-management-system para 0 e aguardam até que todos os pods do reconciliador sejam eliminados.

Todas as implementações do reconciliador ainda estão no cluster, mas não estão disponíveis réplicas dos reconciliadores nem nenhum dos processos responsáveis pela sincronização, pelo que as configurações não são sincronizadas a partir da fonte de verdade.

Retomar sincronização

Esta secção mostra como retomar a sincronização para a origem de referência principal e para origens com âmbito do espaço de nomes.

Retome a sincronização a partir da fonte de informação fidedigna raiz

Para retomar a sincronização a partir de uma fonte de informação fidedigna raiz, um administrador central pode executar o seguinte comando:

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

Este comando dimensiona a implementação root-reconciler para 1 réplica.

Retome a sincronização a partir de uma origem com âmbito do espaço de nomes

Selecione o separador Método de origem principal de dados ou Método da API Kubernetes para ver as instruções relevantes.

Método de origem de informação fidedigna

Se usou o método Controlar origens com âmbito do espaço de nomes numa origem prioritária, um administrador central pode executar o seguinte comando:

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

Este comando dimensiona a implementação ns-reconciler-NAMESPACE para 1 réplica.

Método da API Kubernetes

Se usou o método Controlar origens com âmbito do espaço de nomes com a API Kubernetes, os operadores de aplicações podem retomar a sincronização reaplicando o ficheiro repo-sync.yaml, que contém a configuração RepoSync:

kubectl apply -f repo-sync.yaml

Este comando aciona o gestor de reconciliação para criar um processo de reconciliação do espaço de nomes e criar uma ns-reconciler-NAMESPACEimplementação.

Ative e desative o webhook de admissão

O webhook de admissão do Config Sync está desativado por predefinição e pode ativar e desativar a funcionalidade de prevenção de desvios fornecida pelo webhook de admissão através da CLI gcloud ou da kubectl.

Retome a sincronização de todas as fontes de informação fidedigna

Para retomar a sincronização, execute o seguinte comando:

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

Este comando dimensiona a implementação do Reconciler Manager para 1 réplica. Em seguida, o gestor de reconciliação dimensiona o reconciliador raiz e os reconciliadores de espaço de nomes para o respetivo número de réplicas.

.

O que se segue?