Aggiungere configurazioni a una fonte attendibile

Questa pagina spiega come aggiungere e organizzare le configurazioni archiviate in una fonte attendibile.

Informazioni sulle configurazioni

Config Sync è progettato per gli operatori di cluster che gestiscono molti cluster. Puoi assicurarti che i tuoi cluster soddisfino gli standard aziendali e di conformità consentendo a Config Sync di gestire spazi dei nomi, ruoli, associazioni di ruoli, quote di risorse e altri oggetti Kubernetes importanti nel tuo parco risorse.

Quando Config Sync gestisce queste risorse, mantiene sincronizzati i cluster registrati utilizzando le configurazioni. Una configurazione è un file YAML o JSON archiviato in una fonte attendibile. Config Sync supporta repository Git, immagini OCI e grafici Helm come fonte attendibile. Le configurazioni contengono lo stesso tipo di dettagli di configurazione che puoi applicare manualmente a un cluster utilizzando il comando kubectl apply. Puoi creare una configurazione per qualsiasi oggetto Kubernetes che può esistere in un cluster. Tuttavia, alcuni oggetti Kubernetes, come i secret, contengono informazioni sensibili che potrebbero essere inadeguate per l'archiviazione in una fonte attendibile. Utilizza il buon senso quando valuti se gestire questi tipi di oggetti utilizzando Config Sync.

Puoi anche utilizzare Config Sync con Config Connector per sincronizzare le configurazioni per le risorseGoogle Cloud . Per scoprire di più sull'utilizzo di Config Connector, consulta Gestione delle risorse Google Cloud utilizzando Config Connector. Puoi anche semplificare l'installazione di Config Sync e Config Connector configurando Config Controller.

Limitazioni

  • Alcune risorse Kubernetes contengono campi immutabili, come i selettori pod in un oggetto Deployment. Non puoi modificare alcun campo immutabile in una configurazione modificando il valore nell'origine attendibile. Il tentativo di apportare una modifica di questo tipo causa un errore KNV2009. Se devi modificare un campo immutabile, elimina l'oggetto dalla tua origine attendibile, attendi che Config Sync elimini l'oggetto dal cluster e poi ricrea l'oggetto nell'origine attendibile con gli aggiornamenti.

  • Se utilizzi i sottomoduli Git, devi concedere l'accesso a Config Sync a tutti i repository, inclusi i sottomoduli.

  • Non puoi utilizzare Config Sync per gestire direttamente i ClusterRole Kubernetes integrati. GKE include alcuni ruoli rivolti agli utenti, come cluster-admin, admin, edit e view. Non puoi gestire direttamente questi ClusterRole con Config Sync, altrimenti Config Sync entra in conflitto con GKE. Per aggiungere autorizzazioni ai ClusterRole integrati, utilizza l'aggregazione dei ruoli per modificarli indirettamente. Per modificare i ruoli, crea un ClusterRole con un nome univoco nella tua fonte attendibile con le annotazioni appropriate.

Seleziona come organizzare le configurazioni

Config Sync utilizza una fonte attendibile per l'archiviazione e il controllo delle versioni delle configurazioni. Puoi scegliere tra due diversi formati per la tua fonte attendibile: non strutturato e gerarchico.

Il formato dell'origine non strutturata ti consente di organizzare le configurazioni nel modo più comodo. Questo formato può essere particolarmente utile se organizzi o generi configurazioni utilizzando uno strumento come Kustomize, kpt o Helm. Per un esempio di come organizzare le configurazioni, consulta Formato di esempio per un repository non strutturato.

Il formato di origine gerarchico o strutturato separa le configurazioni in categorie distinte per aiutarti a organizzarle. Le categorie sono configurazione di sistema, metadati del cluster, configurazione a livello di cluster e configurazione dello spazio dei nomi. Per saperne di più sul formato dell'origine gerarchica, consulta Struttura del repository gerarchico.

Il formato non strutturato è consigliato per la maggior parte degli utenti. Inoltre, quando configuri gli oggetti RepoSync, devi utilizzare il formato dell'origine non strutturata.

Funzionalità supportate per i formati non strutturati e gerarchici

La seguente tabella evidenzia le differenze tra i formati non strutturati e gerarchici:

Funzionalità Formato non strutturato (consigliato) Formato gerarchico
Utilizzato come formato per un oggetto RootSync o come fonte attendibile centrale Supportato Supportato
Utilizzato come formato per un oggetto RepoSync Supportato Non supportata
ClusterSelector Supportato Supportato
NamespaceSelector Supportato Supportato
Il comando nomos hydrate Supportato con il flag --source-format=unstructured Supportato
Il comando nomos init Non supportata Supportato
Il comando nomos vet Supportato con il flag --source-format=unstructured Supportato
Tutti gli altri comandi nomos Supportato Supportato
Spazi dei nomi astratti Non supportata Supportato
Repo oggetti Non supportata Supportato
Oggetti HierarchyConfig Non supportata Supportato

Quando aggiungere le configurazioni all'origine

Se crei un formato non strutturato, puoi iniziare ad aggiungere configurazioni non appena viene creato. Se stai creando un formato gerarchico, utilizza il comando nomos init per inizializzare l'origine attendibile o creare manualmente la struttura di directory.

Le directory vuote non possono essere sottoposte a commit in un repository Git, quindi prima di configurare Config Sync, devi creare le configurazioni e aggiungerle al repository.

Dopo aver creato l'origine di riferimento e aver aggiunto le configurazioni, utilizza il comando nomos vet per verificare la struttura dell'origine di riferimento e controllare la sintassi e la validità delle configurazioni.

Configurare Config Sync per leggere dalla fonte attendibile

Dopo aver creato una fonte di riferimento e inserito le configurazioni, puoi configurare Config Sync per leggere dalla fonte. Dopo aver completato questo passaggio, Config Sync sincronizza le configurazioni dalla tua fonte attendibile ai tuoi cluster.

Configuri la posizione della fonte attendibile quando installi Config Sync, e puoi modificare la configurazione di Config Sync in un secondo momento. Oltre alla posizione della fonte attendibile, puoi specificare una filiale o una sottodirectory da monitorare, se la fonte contiene contenuti diversi dalle configurazioni.

Se utilizzi un formato gerarchico e installi Config Sync manualmente con kubectl, non inserire la configurazione dell'operatore nella directory system/ o in una delle altre directory riservate, ad esempio cluster/ o namespaces/. Se inserisci la configurazione in una delle directory riservate, nomos vet non funziona e registra un errore come KNV1033: IllegalSystemResourcePlacementError, KNV1038: IllegalKindInNamespacesError o KNV1039: IllegalKindInClusterError.

Puoi concedere alle persone l'accesso alla fonte attendibile di deployment di un determinato team di prodotto. Tuttavia, quando concedi a una persona l'accesso a un'origine di riferimento per il deployment, a questa persona vengono concessi anche gli stessi controlli dell'accesso basato sui ruoli dell'agente di riconciliazione in esecuzione per quell'origine di riferimento.

Per configurare l'autenticazione e l'autorizzazione tra Config Sync e la fonte attendibile, consulta il passaggio di installazione relativo alla configurazione del secret git-creds.

Ignora le mutazioni degli oggetti

Se non vuoi che Config Sync mantenga lo stato dell'oggetto nel cluster dopo la sua esistenza, puoi aggiungere l'annotazione client.lifecycle.config.k8s.io/mutation: ignore all'oggetto in cui vuoi che Config Sync ignori le mutazioni.

Per utilizzare l'annotazione, devi abilitare le API RootSync e RepoSync.

L'esempio seguente mostra come aggiungere l'annotazione a un oggetto:

metadata:
  annotations:
    client.lifecycle.config.k8s.io/mutation: ignore 

Non puoi modificare manualmente questa annotazione sugli oggetti gestiti nel cluster.

Passaggi successivi