Interrompere e riprendere la sincronizzazione delle configurazioni

In alcune situazioni, potresti dover interrompere rapidamente la sincronizzazione delle configurazioni di Config Sync dalla fonte attendibile. Uno di questi scenari si verifica quando qualcuno esegue il commit di una configurazione sintatticamente valida ma errata nella fonte e vuoi limitarne gli effetti sui cluster in esecuzione mentre la configurazione viene rimossa o corretta.

Questa pagina è dedicata solo alle installazioni manuali di Config Sync utilizzando kubectl. Per tutti gli altri metodi di installazione, utilizza il campo spec.configSync.stopSyncing di gcloud CLI impostando true nel file di configurazione di Config Sync. Quindi, per riprendere la sincronizzazione, imposta il campo su false.

Questa pagina è rivolta agli amministratori IT e agli operatori che gestiscono il ciclo di vita dell'infrastruttura tecnologica sottostante. Per saperne di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli e attività comuni degli utenti GKE.

Google Cloud

Prerequisiti

Per utilizzare i comandi descritti in questo documento, devi disporre delle seguenti autorizzazioni RBAC di Kubernetes 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"]

Interrompi e riprendi la sincronizzazione da una fonte attendibile

Questa sezione è dedicata a una singola fonte attendibile e mostra come interrompere rapidamente la sincronizzazione e come riprenderla quando il problema viene risolto. Per scoprire come interrompere la sincronizzazione per più di una fonte attendibile, consulta Interrompere e riprendere la sincronizzazione da più di una fonte attendibile.

Interrompi sincronizzazione

Per interrompere la sincronizzazione per un singolo cluster, esegui il comando seguente:

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

I comandi riducono a 0 il conteggio replicas di tutti i deployment in esecuzione nello spazio dei nomi config-management-system. L'insieme esatto di deployment interessati varia in base alla versione del prodotto.

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

Per verificare che tutti i processi siano stati interrotti, utilizza il comando seguente e verifica che tutti i deployment abbiano zero 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 il comando seguente:

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

Questo comando scala il deployment di Reconciler Manager a 1 replica. Reconciler Manager rileva quindi che i pod nei deployment dello spazio dei nomi config-management-system sono scalati in modo errato e li scala al conteggio di repliche appropriato.

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

Interrompi e riprendi la sincronizzazione da più di una fonte attendibile

Questa sezione è dedicata a più di una fonte attendibile e mostra come interrompere e riprendere temporaneamente la sincronizzazione da più di una fonte attendibile. Per scoprire come interrompere la sincronizzazione per una singola fonte attendibile, consulta Interrompere e riprendere la 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 configurato la sincronizzazione da più di una fonte attendibile:

  • Se è stato utilizzato il metodo Controlla le fonti in una fonte attendibile principale , solo un amministratore centrale può interrompere e riprendere la sincronizzazione.

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

Interrompi sincronizzazione

Le sezioni seguenti mostrano come interrompere la sincronizzazione per la fonte attendibile principale e le fonti attendibili con ambito spazio dei nomi. Per impedire a Reconciler Manager di ripristinare la modifica, devi prima interrompere Reconciler Manager eseguendo i seguenti comandi:

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

Questi comandi riducono a 0 il conteggio replicas nel deployment di Reconciler Manager.

Interrompi la sincronizzazione dalla fonte attendibile principale

Per impedire a un cluster di sincronizzare dalla fonte attendibile principale, un amministratore centrale può eseguire il comando seguente:

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

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

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

Interrompi la sincronizzazione dalla fonte attendibile con ambito spazio dei nomi

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

Metodo della fonte attendibile principale

Se è stato utilizzato il metodo Controlla le fonti attendibili dello spazio dei nomi nella fonte attendibile principale , gli amministratori centrali possono eseguire i seguenti comandi per impedire a un cluster di sincronizzare da una fonte attendibile dello spazio dei nomi:

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

Il comando riduce a 0 il conteggio delle repliche nel ns-reconciler-NAMESPACE deployment.

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

Metodo dell'API Kubernetes

Se è stato utilizzato il metodo Controlla le fonti con ambito spazio dei nomi con l'API Kubernetes, gli operatori delle applicazioni possono impedire a un cluster di sincronizzare eseguendo i seguenti comandi:

  1. Recupera la configurazione RepoSync e salvala per utilizzarla in un secondo momento 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 Reconciler Manager per rimuovere il riconciliatore 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.

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

Il webhook di ammissione di Config Sync è disattivato per impostazione predefinita e puoi attivare e disattivare la funzionalità di prevenzione delle deviazioni fornita dal webhook di ammissione utilizzando Google Cloud CLI o kubectl.

Interrompi la sincronizzazione da tutte le fonti attendibili

Per interrompere la sincronizzazione da tutte le fonti attendibili, inclusa la fonte attendibile principale e le fonti con ambito spazio dei nomi, esegui i seguenti 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 conteggio replicas di tutti i pod di riconciliazione in esecuzione nello spazio dei nomi config-management-system e attendono l'eliminazione di tutti i pod di riconciliazione.

Tutti i deployment di riconciliazione sono ancora nel cluster, ma non sono disponibili repliche dei riconciliatori o di uno qualsiasi dei processi responsabili della sincronizzazione, quindi 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 fonti con ambito 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 comando seguente:

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 una fonte con ambito spazio dei nomi

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

Metodo della fonte attendibile principale

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

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

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

Metodo dell'API Kubernetes

Se hai utilizzato il metodo Controlla le fonti con ambito spazio dei nomi con l'API Kubernetes, gli operatori delle applicazioni possono riprendere la sincronizzazione riapplicando repo-sync.yaml che contiene la configurazione RepoSync:

kubectl apply -f repo-sync.yaml

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

Attiva e disattiva il webhook di ammissione

Il webhook di ammissione di Config Sync è disattivato per impostazione predefinita e puoi attivare e disattivare la funzionalità di prevenzione delle deviazioni fornita dal webhook di ammissione utilizzando Google Cloud CLI o kubectl.

Riprendi la sincronizzazione da tutte le fonti attendibili

Per riprendere la sincronizzazione, esegui il comando seguente:

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

Questo comando scala il deployment di Reconciler Manager a 1 replica. Reconciler Manager scala quindi il riconciliatore principale e i riconciliatori dello spazio dei nomi al conteggio di repliche corrispondente.

Passaggi successivi