Questa pagina illustra l'architettura di Config Sync. Conoscere i componenti creati da Config Sync può offrirti una comprensione più approfondita di Config Sync e può aiutarti a eseguire il debug e a risolvere i problemi che hai riscontrato.
Il seguente diagramma mostra l'architettura di Config Sync e le relative risorse su un cluster della versione Google Kubernetes Engine (GKE) Enterprise:
In questo diagramma, l'utente crea una fonte attendibile e installa Config Sync utilizzando Gestione funzionalità.
Per installare Config Sync sono previsti più passaggi e ognuno di questi esegue il deployment di componenti aggiuntivi sul tuo cluster:
L'abilitazione di Config Sync sul tuo cluster aggiunge i seguenti componenti:
- L'operatore ConfigManagement in un deployment denominato
config-management-operator
. - La definizione di risorsa personalizzata (CRD)
ConfigManagement
e l'oggetto denominatoconfig-management
. - Gestore riconciliazione in un deployment denominato
reconciler-manager
. - Il controller ResourceGroup in un deployment denominato
resource-group-controller-manager
. - OpenTelemetry Collector in un deployment denominato
otel-collector
. - (Facoltativo) Il webhook di ammissione Config Sync in un deployment denominato
admission-webhook
.
La maggior parte di queste risorse e questi oggetti viene creata automaticamente durante l'installazione di Config Sync e non è necessario modificarli.
- L'operatore ConfigManagement in un deployment denominato
La creazione di oggetti
RootSync
eRepoSync
comporta l'aggiunta dei seguenti componenti:- Per ogni
RootSync
, un deployment riconciliato denominatoroot-reconciler-ROOTSYNC_NAME
. - Per ogni
RepoSync
, un deployment riconciliato denominatons-reconciler-REPOSYNC_NAMESPACE-REPOSYNC_NAME-REPOSYNC_NAME_LENGTH
.
- Per ogni
Deployment, pod e container di Config Sync
La seguente tabella fornisce ulteriori informazioni sul deployment di Config Sync, sui pod e sui container:
Nome deployment | Spazio dei nomi deployment | Descrizione deployment | Numero repliche | Espressione regolare del nome del pod | Conteggio container | Nomi container |
---|---|---|---|---|---|---|
config-management-operator |
config-management-system |
L'operatore ConfigManagement viene eseguito su ogni cluster in cui è installato Config Sync. Controlla l'oggetto ConfigManagement e gestisce i componenti di Config Sync, come Reconciler Manager e OpenTelemetry Collector. |
1 | config-management-operator-.* |
1 | manager |
reconciler-manager |
config-management-system |
Il Gestore riconciliazione viene eseguito su ogni cluster con Config Sync abilitato nell'oggetto ConfigManagement . Controlla
RootSync
e RepoSync oggetti e gestisce un deployment del riconciliatore
per ciascuno di essi. |
1 | reconciler-manager-.* |
2 | reconciler-manager otel-agent |
root-reconciler |
config-management-system |
Viene creato un deployment con riconciliazione principale per ogni oggetto RootSync . |
1 | root-reconciler-.* |
3 - 51 |
reconciler otel-agent git-sync helm-sync oci-sync gcenode-askpass-sidecar hydration-controller |
ns-reconciler |
config-management-system |
Viene creato un deployment per la riconciliazione dello spazio dei nomi per ogni oggetto RepoSync . |
1 | ns-reconciler-.* |
3 - 51 |
reconciler otel-agent git-sync helm-sync oci-sync gcenode-askpass-sidecar hydration-controller |
otel-collector |
config-management-monitoring |
OpenTelemetry Collector viene eseguito su ogni cluster con Config Sync abilitato nell'oggetto ConfigManagement . Raccoglie le metriche
dai componenti Config Sync in esecuzione negli spazi dei nomi
config-management-system e resource-group-system
ed esporta queste metriche in Prometheus e Cloud Monitoring. |
1 | otel-collector-.* |
1 | otel-collector |
resource-group-controller-manager |
resource-group-system |
Il controller ResourceGroup viene eseguito su ogni cluster con Config Sync abilitato nell'oggetto ConfigManagement . Controlla
ResourceGroup oggetti e li aggiorna con lo stato
di riconciliazione attuale di ciascun oggetto nel proprio inventario. Viene creato un
oggetto ResourceGroup per ogni
oggetto RootSync e RepoSync per inventariare l'elenco
di oggetti applicati dal riconciliatore a partire dalla fonte dei dati. |
1 | resource-group-controller-manager-.* |
2 | reconciler-manager otel-agent |
admission-webhook |
config-management-system |
Il webhook Config Sync Admission viene eseguito su ogni cluster con la prevenzione delle derivazioni abilitata nell'oggetto ConfigManagement . Monitora le richieste API Kubernetes e impedisce la modifica o l'eliminazione delle risorse gestite da Config Sync. Il webhook di ammissione Config Sync è disattivato per impostazione predefinita. |
2 | admission-webhook-.* |
1 | admission-webhook |
1 Per maggiori dettagli su quando vengono creati questi container, consulta Contenitori di riconciliazione.
Componenti chiave
Le sezioni seguenti esplorano importanti componenti di Config Sync in modo più dettagliato.
Operatore e oggetto ConfigManagement
L'operatore ConfigManagement controlla l'oggetto ConfigManagement
e crea e gestisce altri componenti necessari al funzionamento di Config Sync:
Poiché l'operatore ConfigManagement installa alcuni componenti che richiedono le autorizzazioni cluster-admin
, l'operatore ConfigManagement richiede anche le autorizzazioni cluster-admin
.
Responsabile riconciliatore e riconciliatori
Il Gestore riconciliazione è responsabile della creazione e della gestione dei singoli riconciliatori affinché la configurazione del cluster rimanga sincronizzata.
Il Gestore riconciliazione crea un riconciliatore principale per ogni oggetto RootSync
e uno strumento di riconciliazione dello spazio dei nomi per ogni oggetto RepoSync
. Config Sync utilizza questa progettazione anziché condividere un unico riconciliatore monolitico perché migliora l'affidabilità riducendo i single point of failure e consente di scalare i singoli riconciliatori in modo indipendente.
I riconciliatori radice e dello spazio dei nomi recuperano automaticamente le configurazioni dalla fonte attendibile e le applicano per applicare lo stato che vuoi all'interno del cluster.
I seguenti diagrammi mostrano il modo in cui Gestore riconciliatore gestisce il controllo del ciclo di vita di ogni riconciliatore principale e riconciliatore dello spazio dei nomi:
Contenitori di riconciliazione
I container specifici di cui è stato eseguito il deployment nei pod del riconciliazione dipendono dalle scelte di configurazione effettuate. La tabella seguente fornisce ulteriori informazioni sulle azioni di ciascun container del riconciliazione e sulla condizione che causa la creazione di Config Sync:
Nome contenitore | Description | Condizione |
---|---|---|
reconciler |
Gestisce la sincronizzazione e la correzione delle deviazioni. | Sempre abilitata. |
otel-agent |
Riceve le metriche dagli altri container del riconciliazione e le invia a OpenTelemetry Collector. | Sempre abilitata. |
git-sync |
Estrae le configurazioni dal repository Git a una directory locale che può essere letta dal container del riconciliazione. | Abilitato quando il valore di spec.sourceType è git . |
helm-sync |
Esegue il pull e il rendering dei grafici Helm dal tuo repository di grafici a una directory locale che il container del riconciliazioner può leggere. | Abilitato quando il valore di spec.sourceType è helm . |
oci-sync |
Estrae le immagini OCI contenenti le tue configurazioni dal Container Registry a una directory locale che il container del riconciliatore può leggere. | Abilitato quando il valore di spec.sourceType è oci . |
gcenode-askpass-sidecar |
Memorizza nella cache le credenziali Git del servizio di metadati GKE per essere utilizzate dal container git-sync . |
Abilitato quando spec.sourceType è git e
spec.git.auth è gcenode o
gcpserviceaccount . |
hydration-controller |
Gestisce la creazione di configurazioni Kustomize in una directory locale che può essere letta dal container dello strumento di riconciliazione. | Abilitato quando l'origine include un file kustomize.yaml . |
Come mostrato nella tabella precedente, in genere puoi aspettarti un conteggio dei container compreso tra 3 e 5 in ogni pod di riconciliazione. I container reconciler
e otel-agent
sono sempre presenti. Se specifichi un tipo per la tua origine dati,
stabilisci quale container di sincronizzazione aggiungere. Inoltre, i container hydration-controller
e gcenode-askpass-sidecar
vengono creati se hai apportato le modifiche di configurazione menzionate nella tabella.
Oggetti ResourceGroup Controller e ResourceGroup
I riconciliatori principali e dello spazio dei nomi creano un oggetto inventario ResourceGroup
per
ogni oggetto RootSync
e RepoSync
configurato. Ogni oggetto ResourceGroup
contiene un elenco di oggetti sincronizzati con il cluster dalla fonte dei dati dal riconciliazione
per l'oggetto RootSync
o RepoSync
. Il controller ResourceGroup controlla quindi tutti gli oggetti nell'oggetto ResourceGroup
e aggiorna lo stato dell'oggetto ResourceGroup
con lo stato di riconciliazione attuale degli oggetti sincronizzati. In questo modo puoi controllare lo stato dell'oggetto ResourceGroup
per una panoramica dello stato di sincronizzazione, invece di dover eseguire query sullo stato di ogni singolo oggetto.
Gli oggetti ResourceGroup
hanno lo stesso nome e lo stesso spazio dei nomi dell'oggetto RootSync
o RepoSync
corrispondente. Ad esempio, per l'oggetto RootSync
con il nome root-sync
nello spazio dei nomi config-management-system
, anche l'oggetto ResourceGroup
corrispondente è denominato root-sync
nello spazio dei nomi config-management-system
.
Non creare o modificare gli oggetti ResourceGroup
, poiché ciò può interferire con il funzionamento di Config Sync.
Webhook di ammissione
Il webhook Config Sync Admission viene creato quando abiliti la prevenzione delle derivazioni. La prevenzione delle deviazioni intercetta in modo proattivo le richieste di modifica, garantendo che siano in linea con la fonte attendibile prima di consentire le modifiche.
Se non abiliti la prevenzione delle deviazioni, Config Sync utilizza comunque un meccanismo di riparazione automatica per ripristinare la deriva della configurazione. Con la riparazione automatica, Config Sync monitora costantemente gli oggetti gestiti e annulla automaticamente qualsiasi modifica che devia dallo stato previsto.
Oggetti RootSync e RepoSync
Gli oggetti RootSync
configurano Config Sync per creare un riconciliatore radice che controlla la fonte di riferimento specificata e applica gli oggetti di questa origine al cluster. Per impostazione predefinita, il riconciliatore principale per ogni oggetto RootSync
dispone dell'autorizzazione cluster-admin
. Con questa autorizzazione predefinita, i riconciliatori root possono sincronizzare risorse con ambito cluster e spazio dei nomi. Se necessario, puoi modificare queste autorizzazioni configurando i campi spec.override.roleRefs
. RootSync
oggetti sono progettati per l'utilizzo da parte degli amministratori del cluster.
Gli oggetti RepoSync
configurano Config Sync per creare uno strumento di riconciliazione dello spazio dei nomi che controlla l'origine specificata e applica gli oggetti di quell'origine a uno spazio dei nomi specifico nel cluster. I riconciliatori dello spazio dei nomi possono sincronizzare qualsiasi risorsa con ambito a livello di spazio dei nomi all'interno di quello spazio dei nomi con autorizzazioni personalizzate specificate dall'utente. RepoSync
oggetti sono progettati per l'uso da parte dei tenant dello spazio dei nomi.
In che modo il servizio parco risorse gestisce gli oggetti RootSync
Quando installi Config Sync con la console Google Cloud, Google Cloud CLI, Config Connector o Terraform, Config Sync viene gestito dal servizio Fleet in base ai tuoi input nell'API Google Cloud.
Quando l'installazione di Config Sync è gestita dal servizio Fleet, puoi scegliere di far gestire anche l'oggetto RootSync
iniziale, denominato root-sync
. In questo modo puoi eseguire il bootstrap di GitOps sul tuo cluster senza dover applicare manualmente nulla direttamente al cluster. Se decidi di non far gestire l'oggetto RootSync
iniziale al servizio parco risorse, puoi comunque applicare qualsiasi oggetto RootSync
e RepoSync
che vuoi direttamente al cluster.
L'oggetto RootSync
denominato root-sync
viene creato in base ai tuoi input nell'API Google Cloud, in particolare la sezione spec.configSync
dell'API config-management apply. Poiché questa API espone solo un sottoinsieme dei campi RootSync
, quei campi sono considerati gestiti in root-sync
, mentre gli altri sono considerati non gestiti. I campi gestiti possono essere modificati solo utilizzando
l'API Google Cloud. I campi non gestiti possono essere modificati utilizzando kubectl
o qualsiasi altro client Kubernetes. Per un esempio che mostra come esportare il file YAML root-sync
, modificarlo localmente e applicarlo nuovamente, consulta Creare e modificare un file di configurazione RootSync
.
Per le installazioni manuali, gestisci Config Sync con lo strumento a riga di comando kubectl
o qualsiasi altro client Kubernetes.
Oggetti RootSync e RepoSync aggiuntivi
Per creare altri oggetti RootSync
o RepoSync
, puoi utilizzare lo strumento a riga di comando kubectl
o un altro client Kubernetes. Puoi anche utilizzare l'oggetto root-sync
iniziale per gestire altri oggetti RootSync
o RepoSync
con GitOps, aggiungendo i relativi manifest YAML alla fonte attendibile da cui è configurato root-sync
per la sincronizzazione. Impossibile utilizzare questo metodo per gestire la configurazione dell'elemento root-sync
iniziale, poiché alcuni dei suoi campi sono gestiti dal servizio del parco risorse. Per gestire l'oggetto root-sync
con GitOps, utilizza Config Connector o
Terraform. Per scoprire di più sulla creazione di oggetti RootSync
e RepoSync
aggiuntivi, consulta Configurare la sincronizzazione da più di un'origine attendibile.
Passaggi successivi
- Ti consigliamo di monitorare i componenti di Config Sync o di controllarne i log. Per un'introduzione, consulta Utilizzare il monitoraggio e i log.
- Scopri di più sulle richieste di risorse per i componenti di Config Sync.