Strategia di riconciliazione
Con la configurazione dichiarativa, definisci lo stato desiderato del sistema. Il sistema funziona quindi costantemente per rimanere il più vicino possibile a questo stato. Per ulteriori informazioni, consulta Gestione dichiarativa degli oggetti Kubernetes utilizzando i file di configurazione.
Con Config Connector, puoi creare e aggiornare le risorse in qualsiasi ordine, indipendentemente dalle relazioni di dipendenza. GKE sposta la configurazione dichiarata verso la coerenza finale con lo stato desiderato.
Ad esempio, se crei un PubSubSubscription
prima del PubSubTopic
corrispondente, Config Connector attende la creazione dell'argomento prima di creare l'abbonamento associato.
La durata dell'incoerenza dell'installazione di Config Connector dipende dal numero e dai tipi di risorse che gestisce. Le modifiche a un cluster GKE
vengono in genere 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 è incoerente per un
periodo di 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 di Config Connector in secondi) nella pagina di riferimento di ogni risorsa. Per i link a ciascuna risorsa, consulta la Panoramica delle risorse. Quando si verifica un errore di riconciliazione, Config Connector riprova 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 "Config Connector Default Average
Reconcile Interval In Seconds" dalla pagina riferimento alla 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 interrompe l'avvio delle riconciliazioni per la risorsa una volta raggiunto lo stato UpToDate.
Ad esempio, se vuoi che Config Connector riconcili una risorsa meno frequentemente per evitare di raggiungere i limiti di quota dell'API sottostante Google Cloud , 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 riconcili una risorsa più spesso per correggere le derive prima, puoi impostare l'annotazione con un valore piccolo.
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 che vuoi annotare.RESOURCE_NAMESPACE
: lo spazio dei nomi che contiene le risorse che vuoi annotare.RECONCILE_INTERVAL
: l'intervallo di riconciliazione in secondi.
Puoi impostare l'intervallo di riconciliazione su 0 per disattivare la correzione della deriva per una risorsa, ma non disattiva l'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 se modifichi il valore riportandolo a un numero diverso da zero, Config Connector non riconcilia di nuovo la risorsa.
Se vuoi ripristinare l'intervallo di riconciliazione pari a 0, hai le seguenti opzioni:
- Modifica la specifica della risorsa con il valore dell'intervallo di riconciliazione per abilitare 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 modificabili ma illeggibili vengono attivati solo in caso di modifica
Alcune API espongono campi non leggibili, ma modificabili (ad esempio la password per un utente SQL). A causa dell'impossibilità di verificare 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 vengono modificati 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 genera un evento Kubernetes "UpdatedFailed" per la risorsa anziché eseguire questa ricreazione. Devi quindi eliminare e ricreare 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]