Strategia di riconciliazione
Con la configurazione dichiarativa, definisci lo stato desiderato del sistema. Il sistema lavora costantemente per rimanere il più vicino possibile a questo stato. Per ulteriori informazioni, consulta Gestione dichiarativa degli oggetti Kubernetes mediante file di configurazione.
Con Config Connector, puoi creare e aggiornare le risorse in qualsiasi ordine, indipendentemente dai rapporti di dipendenza. GKE sposta la configurazione dichiarata verso la coerenza eventuale con lo stato desiderato.
Ad esempio, se crei un PubSubSubscription
prima del corrispondente
PubSubTopic
, Config Connector attende che l'argomento venga creato prima di
creare l'iscrizione associata.
La durata dell'installazione di Config Connector rimane incoerente a seconda del numero e dei tipi di risorse gestite. In genere, le modifiche a un cluster GKE vengono eseguite in pochi secondi. Tuttavia, il tempo necessario per creare le risorseGoogle Cloud può variare in base al tipo di risorsa. Ad esempio, la creazione di una singola risorsa PubSubTopic
richiede pochi secondi. Google Cloud
Le risorse non raggiungono la coerenza finché non vengono create. Ad esempio, quando crei un SQLInstance
e un SQLDatabase
, il sistema non è coerente per alcuni minuti durante la creazione del database.
GKE e Config Connector riconciliano ogni risorsa a ogni aggiornamento o dopo un periodo di jitter con una media basata sull'intervallo preconfigurato predefinito. Puoi trovare l'intervallo predefinito in"Config Connector Default Average Reconcile Interval In Seconds" (Intervallo di riconciliazione medio predefinito del connettore di configurazione in secondi) nella pagina di riferimento di ogni risorsa. Per i link a ciascuna risorsa, consulta la Panoramica delle risorse. In caso di errore nella riconciliazione, Config Connector esegue nuovi tentativi con un backoff esponenziale in cui il backoff massimo è di due minuti. Puoi visualizzare eventuali errori nella sezione Eventi di una determinata risorsa.
Configurazione dell'intervallo di riconciliazione
A partire da Config Connector 1.102, puoi configurare l'intervallo di riconciliazione medio per le risorse gestite da Config Connector con l'annotazione cnrm.cloud.google.com/reconcile-interval-in-seconds
. Il valore dell'annotazione sovrascrive il valore predefinito di "Intervallo di riconciliazione medio predefinito di Config Connector in secondi" dalla pagina Riferimento della risorsa.
Il valore dell'annotazione deve essere un numero intero non negativo che rappresenta il tempo in secondi. Se il valore è impostato su 0, Config Connector smette di avviare le riconciliazioni per la risorsa quando raggiunge lo stato UpToDate.
Ad esempio, se vuoi che Config Connector riconcilli una risorsa meno di frequente per evitare problemi di Google Cloud quota dell'API sottostanti, puoi impostare il valore dell'intervallo di riconciliazione medio su 1 ora.
cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"
Se vuoi che Config Connector riconcilli una risorsa più di frequente per correggere prima le derive, puoi impostare l'annotazione con un valore ridotto.
Puoi annotare tutte le risorse di un determinato tipo che condividono lo stesso tipo di versione del gruppo (GVK) con il seguente script:
#!/bin/bash
KIND=RESOURCE_KIND
NAMESPACE=RESOURCE_NAMESPACE
ANNOTATION_KEY="cnrm.cloud.google.com/reconcile-interval-in-seconds"
ANNOTATION_VALUE=RECONCILE_INTERVAL
kubectl annotate --overwrite --all ${KIND} ${ANNOTATION_KEY}=${ANNOTATION_VALUE} -n ${NAMESPACE}
echo "Annotation added to all ${KIND} RESOURCE"
Sostituisci quanto segue:
RESOURCE_KIND
: il tipo di risorsa da annotare.RESOURCE_NAMESPACE
: lo spazio dei nomi che contiene le risorse da annotare.RECONCILE_INTERVAL
: l'intervallo di riconciliazione in secondi.
Puoi impostare l'intervallo di riconciliazione su 0 per disattivare la correzione dell'errore di deriva per una risorsa, ma non la disattivazione dell'attivazione della risorsa. Se apporti modifiche alla risorsa Spec
, la risorsa verrà riconciliata di nuovo.
L'impostazione dell'intervallo di riconciliazione su 0 è irreversibile. Ciò significa che la modifica del valore in un numero diverso da zero non fa sì che Config Connector riconcilli di nuovo la risorsa.
Se vuoi ripristinare l'intervallo di riconciliazione 0, hai le seguenti opzioni:
- Modifica la specifica della risorsa con il valore dell'intervallo di riconciliazione per attivare nuove riconciliazioni.
- Abbandona la risorsa impostando l'annotazione
cnrm.cloud.google.com/deletion-policy: "abandon"
e ricrea la risorsa con un valore dell'intervallo di riconciliazione diverso da 0.
I campi mutabili, ma illeggibili, vengono attivati solo in caso di modifica
Alcune API mostrano campi non leggibili, ma modificabili (ad esempio la password di un utente SQL). A causa dell'impossibilità di vedere se questi campi sono stati modificati, i campi modificabili ma illeggibili vengono aggiornati solo quando la risorsa personalizzata viene modificata.
Le risorse non vengono ricreate quando modifichi i campi immutabili
Alcuni campi di una risorsa sono immutabili e non possono essere riconciliati senza eliminare e ricreare la risorsa di destinazione.
In queste situazioni, Config Connector emette un evento Kubernetes "UpdatedFailed" per la risorsa anziché eseguire questa ricreazione. Devi quindi eliminare e riprodurre la risorsa.
Evento di esempio:
Warning UpdateFailed 37m (x643 over 15d) computeinstance-controller Update call failed: the desired mutation for the following field(s) is invalid: [bootDisk.0.InitializeParams.0.Image networkInterface.0.NetworkIp]