Em algumas situações, pode ser necessário impedir rapidamente que o Config Sync sincronize as configurações da sua fonte de verdade. Por exemplo, se alguém confirma na origem uma configuração que é válida em termos de sintática, mas está incorreta, e você quer limitar os efeitos dela nos clusters em execução enquanto a configuração é removida ou corrigida.
Esta página é destinada a administradores de TI e operadores que gerenciam o ciclo de vida da infraestrutura de tecnologia subjacente. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud, consulte Tarefas e papéis de usuário comuns do GKE Enterprise.
Pré-requisitos
Para usar os comandos neste documento, você precisa das seguintes
permissões de RBAC do Kubernetes nos namespaces config-management-system
em todos os
clusters em que você quer interromper a sincronização:
- apiGroups: ["extensions"]
resources: ["deployments", "deployments/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "watch"]
Parar e retomar a sincronização de uma fonte confiável
Esta seção apresenta uma única fonte de verdade e mostra como parar de sincronizar rapidamente e como retomar a sincronização quando o problema for corrigido. Para saber como interromper a sincronização de mais de uma fonte de informações, consulte Como interromper e retomar a sincronização de mais de uma fonte de informações.
Interromper sincronização
Para interromper a sincronização de um único cluster, execute os comandos a seguir, que são fornecidos como um comando único para sua conveniência, mas que também podem ser executados separadamente:
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
Veja a seguir os que os comandos fazem, em sequência. Se um comando falhar, os demais não serão executados.
- Reduza a contagem
replicas
no ConfigManagement Operator Deployment para 0. - Reduza para 0 a contagem de
replicas
de todos as implantação em execução no namespaceconfig-management-system
. O conjunto exato de implantações afetadas varia de acordo com a versão do produto.
Todas as implantações ainda estão no cluster, mas nenhuma réplica do operador ou de qualquer um dos processos responsáveis pela sincronização estão disponíveis. Portanto, as configurações não são sincronizadas a partir da origem da verdade.
Para verificar se todos os processos foram interrompidos, use o seguinte comando e verifique se todas as implantações têm zero réplica:
kubectl get -n config-management-system deployment
Se você precisar interromper a sincronização em vários clusters, execute os comandos anteriores para cada um deles.
Retomar a sincronização
Para retomar a sincronização de um único cluster, execute o comando a seguir:
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Esse comando escalona a implantação do operador para uma réplica. Em seguida,
o operador reconhece que os pods no
Deployment do namespace config-management-system
são dimensionados incorretamente e
os escalona para a contagem apropriada de réplicas.
Se você precisa retomar a sincronização em vários clusters, execute o comando anterior para cada cluster.
Parar e retomar a sincronização de mais de uma fonte de informações
Ela exibe mais de uma fonte de informações e mostra como interromper temporariamente e retomar a sincronização de mais de uma fonte. Para saber como parar a sincronização de uma única fonte da verdade, consulte como parar e retomar a sincronização a partir de uma fonte de verdade.
Somente um administrador central pode interromper a sincronização na fonte raiz da verdade.
A capacidade de interromper a sincronização em mais de uma fonte de verdade depende de qual método de configuração foi usado ao configurar a sincronização de mais de uma fonte de verdade:
Se o método Controlar fontes em uma fonte raiz da verdade tiver sido usado, o administrador central será o único que poderá interromper e retomar a sincronização.
Se o método Controlar uma fonte de verdade com a API Kubernetes tiver sido usado, os operadores de aplicativos poderão interromper e retomar a sincronização das fontes de verdade com escopo de namespace em que trabalham.
Interromper sincronização
As seções a seguir mostram como interromper a sincronização da fonte raiz da verdade e das fontes de verdade com escopo de namespace. Para impedir que o Reconciler Manager reverta a alteração, é necessário interromper o Reconciler Manager primeiro. Basta executar os seguintes comandos:
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
Veja a seguir os que os comandos fazem, em sequência. Se um comando falhar, os demais não serão executados.
- Reduza a contagem
replicas
no ConfigManagement Operator Deployment para 0. - Reduza a contagem de
replicas
na implantação do Reconciler Manager para 0 (zero).
Parar de sincronizar da fonte raiz da verdade
Para interromper a sincronização de um cluster da fonte raiz da verdade, um administrador central pode executar o seguinte comando:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
Esse comando reduz a contagem de replicas
na
implantação
root-reconciler
para 0.
Se você precisar interromper a sincronização em vários clusters, execute os comando anterior para cada um deles.
Parar de sincronizar da fonte de verdade com escopo de namespace
Selecione a guia Método da fonte de verdade raiz ou Método da API Kubernetes para ver as instruções relevantes.
Método de fonte raiz da verdade
Se o método Controlar fontes de verdade de namespaces na fonte raiz da verdade tiver sido usado, os administradores centrais poderão executar os comandos abaixo para interromper a sincronização de um cluster com uma fonte de verdade do namespace:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
O comando reduz a contagem de réplicas na implantação
ns-reconciler-NAMESPACE
para 0.
Se você precisar interromper a sincronização em vários clusters, execute os comando anterior para cada um deles.
Método da API Kubernetes
Se o método Controlar origens com namespaces em escopa com a API Kubernetes for usado, os operadores do aplicativo poderão interromper a sincronização de um cluster executando os seguintes comandos:
Recupere e salve a configuração
RepoSync
para usá-la mais tarde, quando quiser retomar a sincronização:kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yaml
Substitua
NAMESPACE
pelo namespace do objeto RepoSync.Exclua a configuração
RepoSync
:kubectl -n NAMESPACE delete reposyncs repo-sync
Este comando aciona o Reconciler Manager para remover o conciliador de namespace (
ns-reconciler-NAMESPACE
) de NAMESPACE e parar a sincronização.Se você precisar interromper a sincronização em vários clusters, execute os comandos anteriores para cada um deles.
Impedir que o webhook de admissão impeça deslocamentos (opcional)
O webhook de admissão do Config Sync está desativado por padrão. É possível
ativar e
desativar a funcionalidade de prevenção
de deslocamento fornecida pelo webhook de admissão usando o Google. Cloud CLI
ou kubectl
.
Parar de sincronizar de todas as fontes da verdade
Para interromper a sincronização de todas as fontes de verdade, incluindo a fonte raiz da verdade e as com escopo de namespace, 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
namespace config-management-system
para 0 e aguardam até que todos os pods do reconciliador sejam excluídos.
Todas as implantações do reconciliador ainda estão no cluster, mas nenhuma réplica do reconciliador ou de qualquer um dos processos responsáveis pela sincronização estão disponíveis. Portanto, as configurações não são sincronizadas a partir da fonte da verdade.
Retomar a sincronização
Esta seção mostra como retomar a sincronização para a fonte raiz da verdade e para origens com escopo de namespace.
Retomar a sincronização da fonte raiz da verdade
Para retomar a sincronização de uma fonte raiz da verdade, um administrador central pode executar o seguinte comando:
kubectl -n config-management-system scale deployment root-reconciler --replicas=1
Esse comando escalona a implantação root-reconciler
do operador para uma réplica.
Retomar a sincronização de uma origem com escopo de namespace
Selecione a guia Método da fonte de verdade raiz ou Método da API Kubernetes para ver as instruções relevantes.
Método de fonte raiz da verdade
Se você usou o método Controlar fontes com escopo de namespace em uma fonte raiz da verdade, um administrador central poderá executar o seguinte comando:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1
Este comando escalona a implantação ns-conciliation-NAMESPACE para uma réplica.
Método da API Kubernetes
Se você usou o método Controlar origens de namespace em escopo com a API Kubernetes,
os operadores de aplicativo poderão retomar a sincronização reaplicando
repo-sync.yaml
, que contém a configuração RepoSync
:
kubectl apply -f repo-sync.yaml
Esse comando aciona o Reconciler Manager para criar um processo de reconciliação
de namespace e criar uma implantação ns-reconciler-NAMESPACE
.
Ativar e desativar o webhook de admissão
O webhook de admissão do Config Sync está desativado por padrão. É possível
ativar e
desativar a funcionalidade de prevenção
de deslocamento fornecida pelo webhook de admissão usando o Google. Cloud CLI
ou kubectl
.
Retomar a sincronização de todas as fontes da verdade
Para retomar a sincronização de todas as fontes da verdade, execute o seguinte comando:
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Esse comando escalona a implantação do operador para uma réplica. Em seguida, o operador reconhece que a implantação do Reconciler Manager está escalonada incorretamente e a escalona para a contagem de réplicas apropriada. No final, o Reconciler Manager redimensiona as reconciliações de raiz e de namespace para a contagem de réplicas correspondente.