Interrompi e riprendi la sincronizzazione delle configurazioni

In alcuni casi, potrebbe essere necessario interrompere rapidamente la sincronizzazione delle configurazioni in Config Sync dalla tua origine attendibile. Uno di questi scenari è se qualcuno esegue il commit di una configurazione sintatticamente valida ma errata all'origine, ma vuoi limitarne gli effetti sui cluster in esecuzione mentre la configurazione viene rimossa o corretta.

Prerequisiti

Per utilizzare i comandi in questo documento, devi disporre delle seguenti autorizzazioni Kubernetes RBAC negli spazi dei nomi config-management-system su tutti i cluster in cui vuoi interrompere la sincronizzazione:

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

Interrompere e riprendere la sincronizzazione da una fonte attendibile

Questa sezione riguarda un'unica fonte attendibile e mostra come interrompere la sincronizzazione rapidamente e come riprendere la sincronizzazione una volta risolto il problema. Per informazioni su come interrompere la sincronizzazione per più di una fonte attendibile, consulta Interruzione e ripresa della sincronizzazione da più di una fonte attendibile.

Interrompi sincronizzazione

Per interrompere la sincronizzazione per un singolo cluster, esegui i comandi seguenti, che sono forniti come singolo comando per comodità, ma possono anche essere eseguiti separatamente:

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

I comandi svolgono le seguenti operazioni, in sequenza: Se un comando non riesce, gli altri comandi non vengono eseguiti.

  1. Riduci il conteggio di replicas nel deployment di ConfigManagement Operator a 0.
  2. Riduci a 0 il numero di replicas di tutti i deployment in esecuzione nello spazio dei nomi config-management-system. L'insieme esatto di deployment interessati varia a seconda della versione del prodotto.

Tutti i deployment sono ancora nel cluster, ma non sono disponibili repliche dell'operatore o dei processi responsabili della sincronizzazione, pertanto le configurazioni non vengono sincronizzate dalla fonte attendibile.

Per verificare che tutti i processi siano stati arrestati, utilizza il seguente comando e verifica che tutti i deployment non abbiano repliche:

kubectl get -n config-management-system deployment

Se devi interrompere la sincronizzazione su più cluster, esegui i comandi precedenti per ogni cluster.

Riprendi sincronizzazione

Per riprendere la sincronizzazione per un singolo cluster, esegui questo comando:

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

Questo comando scala il deployment dell'operatore a 1 replica. L'operatore poi nota che i pod nello spazio dei nomi config-management-system vengono scalati in modo errato e li scala fino al numero di repliche appropriato.

Se devi riprendere la sincronizzazione su più cluster, esegui il comando precedente per ogni cluster.

Interrompere e riprendere la sincronizzazione da più di una fonte attendibile

La sezione contiene più di una fonte attendibile e mostra come interrompere temporaneamente e riprendere la sincronizzazione da più di una fonte attendibile. Per informazioni su come interrompere la sincronizzazione per una singola fonte attendibile, consulta Interruzione e ripresa della sincronizzazione da una fonte attendibile.

Solo un amministratore centrale può interrompere la sincronizzazione nella fonte attendibile principale.

La possibilità di interrompere la sincronizzazione in più di una fonte attendibile dipende dal metodo di configurazione utilizzato quando hai impostato la sincronizzazione da più origini attendibili:

  • Se è stato utilizzato il metodo Controlla le origini in una fonte attendibile principale, un amministratore centrale è l'unico che può interrompere e riprendere la sincronizzazione.

  • Se è stato utilizzato il metodo Controlla una fonte attendibile con l'API Kubernetes, gli operatori di applicazioni possono interrompere e riprendere la sincronizzazione dalle fonti attendibili con ambito dello spazio dei nomi su cui lavorano.

Interrompi sincronizzazione

Le seguenti sezioni mostrano come interrompere la sincronizzazione per la fonte di riferimento principale e le fonti di attendibilità con ambito dello spazio dei nomi. Per impedire al Gestore riconciliare di annullare la modifica, devi prima arrestarlo eseguendo questi comandi:

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

I comandi svolgono le seguenti operazioni, in sequenza: Se un comando non riesce, gli altri comandi non vengono eseguiti.

  1. Riduci il conteggio di replicas nel deployment di ConfigManagement Operator a 0.
  2. Riduci il numero di replicas nel deployment di Reconciler Manager a 0.

Interrompi la sincronizzazione dalla fonte attendibile principale

Per interrompere la sincronizzazione di un cluster dalla fonte attendibile principale, un amministratore centrale può eseguire questo comando:

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

Questo comando riduce a 0 il conteggio di replicas nel deployment di root-reconciler.

Se devi interrompere la sincronizzazione su più cluster, esegui il comando precedente per ogni cluster.

Interrompi la sincronizzazione da un'origine attendibile basata sullo spazio dei nomi

Seleziona la scheda Metodo della fonte attendibile principale o Metodo API Kubernetes per visualizzare le istruzioni pertinenti.

Metodo della fonte principale dei dati

Se è stato utilizzato il metodo Controlla l'origine dello spazio dei nomi nella fonte attendibile principale, gli amministratori centrali possono eseguire i seguenti comandi per interrompere la sincronizzazione di un cluster da uno spazio dei nomi attendibile:

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

Il comando riduce a 0 il numero di repliche nel deployment di ns-reconciler-NAMESPACE.

Se devi interrompere la sincronizzazione su più cluster, esegui il comando precedente per ogni cluster.

Metodo API Kubernetes

Se è stato utilizzato il metodo Controlla le origini basate sullo spazio dei nomi con l'API Kubernetes, gli operatori dell'applicazione possono interrompere la sincronizzazione di un cluster eseguendo i comandi seguenti:

  1. Recupera la configurazione RepoSync e salvala per utilizzarla in seguito quando vuoi riprendere la sincronizzazione:

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

    Sostituisci NAMESPACE con lo spazio dei nomi dell'oggetto RepoSync.

  2. Elimina la configurazione RepoSync:

    kubectl -n NAMESPACE delete reposyncs repo-sync
    

    Questo comando attiva il Gestore riconciliare di rimuovere lo strumento di riconciliazione dello spazio dei nomi (ns-reconciler-NAMESPACE) da NAMESPACE e interrompe la sincronizzazione.

    Se devi interrompere la sincronizzazione su più cluster, esegui i comandi precedenti per ogni cluster.

(Facoltativo) Impedisci al webhook di ammissione di bloccare le deviazioni

Il webhook di ammissione Config Sync è disattivato per impostazione predefinita. Puoi enable e disabilitare la funzionalità di prevenzione della deviazione fornita dal webhook di ammissione utilizzando Google Cloud CLI o kubectl.

Interrompi la sincronizzazione da tutte le fonti di dati

Per interrompere la sincronizzazione da tutte le origini attendibili, incluse la sorgente di dati principale e le origini con ambito dei nomi, esegui questi comandi:

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

I comandi riducono a 0 il numero di replicas di tutti i pod di riconciliazione in esecuzione nello spazio dei nomi config-management-system e attendono che vengano eliminati tutti i pod di riconciliazione.

Tutti i deployment dei riconciliatori sono ancora nel cluster, ma non sono disponibili repliche dei riconciliatori o qualsiasi processo responsabile della sincronizzazione, pertanto le configurazioni non vengono sincronizzate dalla fonte attendibile.

Riprendi sincronizzazione

Questa sezione mostra come riprendere la sincronizzazione per la fonte attendibile principale e per le origini con ambito dello spazio dei nomi.

Riprendi la sincronizzazione dalla fonte attendibile principale

Per riprendere la sincronizzazione da una fonte attendibile principale, un amministratore centrale può eseguire il seguente comando:

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

Questo comando scala il deployment root-reconciler a 1 replica.

Riprendi la sincronizzazione da un'origine con ambito dello spazio dei nomi

Seleziona la scheda Metodo della fonte attendibile principale o Metodo API Kubernetes per visualizzare le istruzioni pertinenti.

Metodo della fonte principale dei dati

Se hai utilizzato il metodo Controlla le origini con ambito dello spazio dei nomi in una fonte attendibile principale, un amministratore centrale può eseguire il seguente comando:

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

Questo comando scala il deployment ns-reconciler-NAMESPACE a 1 replica.

Metodo API Kubernetes

Se hai utilizzato il metodo Controlla le origini basate sullo spazio dei nomi con l'API Kubernetes, gli operatori dell'applicazione possono riprendere la sincronizzazione applicando nuovamente repo-sync.yaml, che contiene la configurazione RepoSync:

kubectl apply -f repo-sync.yaml

Questo comando attiva tne Reconciler Manager per creare un processo di riconciliazione dello spazio dei nomi e creare un deployment ns-reconciler-NAMESPACE.

Attiva e disattiva il webhook di ammissione

Il webhook di ammissione Config Sync è disattivato per impostazione predefinita. Puoi enable e disabilitare la funzionalità di prevenzione della deviazione fornita dal webhook di ammissione utilizzando Google Cloud CLI o kubectl.

Riprendi la sincronizzazione da tutte le fonti attendibili

Per riprendere la sincronizzazione da tutte le fonti attendibili, esegui questo comando:

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

Questo comando scala il deployment dell'operatore a 1 replica. L'operatore poi nota che il deployment del gestore di riconciliazione è stato scalato in modo errato e lo scala al numero di repliche appropriato. Alla fine, Reconciler Manager scala lo strumento di riconciliazione principale e i riconciliatori dello spazio dei nomi in base al numero di repliche corrispondente.

Passaggi successivi