Questa pagina mostra come eseguire la migrazione della configurazione Git da un oggetto ConfigManagement a un oggetto RootSync. La
migrazione abilita le API RootSync e RepoSync, che ti consentono di utilizzare
funzionalità aggiuntive:
- Sincronizzazione da più di una fonte attendibile
- Utilizzare la dashboard Config Sync
- Monitorare Config Sync utilizzando Cloud Monitoring, Prometheus o un sistema di monitoraggio personalizzato
- Eseguire il rendering delle configurazioni Kustomize e dei grafici Helm
- Sincronizzare gli artefatti OCI da Artifact Registry
- Sincronizzare i grafici Helm da Artifact Registry
- Eseguire l'override dei valori di sistema, ad esempio modificare i limiti delle risorse e aggiornare il numero di commit Git da recuperare
Puoi abilitare queste API anche se vuoi utilizzare solo un repository principale e non vuoi utilizzare repository dello spazio dei nomi.
Migra le impostazioni di ConfigManagement
Se utilizzi RootSync con spec.enableLegacyFields, segui le istruzioni
per interrompere l'utilizzo dei campi legacy.
Se l'oggetto ConfigManagement utilizza spec.git ma spec.enableMultiRepo
è impostato su false, segui le istruzioni per eseguire la migrazione a RootSync.
Interrompere l'utilizzo dei campi legacy
A partire dalla versione 1.19.0 e successive, il campo spec.enableLegacyFields non è
supportato e la sua impostazione causerà errori. Per utilizzare Config Sync
versione 1.19.0 e successive, completa i seguenti passaggi per rimuovere i campi legacy:
Apri l'oggetto ConfigManagement.
Nell'oggetto ConfigManagement, rimuovi i campi
spec.enableLegacyFieldsespec.git. L'oggetto ConfigManagement dovrebbe essere simile al seguente:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: trueApplica le modifiche:
kubectl apply -f config-management.yaml
I campi legacy sono ora disabilitati senza influire sull'oggetto RootSync generato
dai campi spec.git dell'oggetto ConfigManagement. La migrazione è stata
completata e ora puoi utilizzare direttamente i campi git nell'oggetto RootSync.
Eseguire la migrazione a RootSync
Se l'oggetto ConfigManagement utilizza spec.git, ma spec.enableMultiRepo
è impostato su false, segui questa guida per attivare le API RootSync e RepoSync.
Utilizza nomos migrate
A partire dalla versione 1.10.0, nomos fornisce il comando nomos migrate per
abilitare le API RootSync e RepoSync. Devi aggiornare
nomos alla versione 1.10.0 o successive.
Per maggiori dettagli su come eseguire il comando, segui la procedura descritta in Eseguire la migrazione da un oggetto ConfigManagement a un oggetto RootSync. Assicurati che l'oggetto ConfigManagement non sia archiviato nella tua fonte attendibile e gestito da Config Sync. In questo caso, devi modificare l'oggetto ConfigManagement nell'origine di riferimento seguendo i passaggi descritti in Migrazione manuale.
Migrazione manuale
Se la tua versione di nomos è precedente alla 1.10.0, puoi eseguire manualmente la migrazione delle
impostazioni. Devi impostare spec.enableMultiRepo su true nell'oggetto ConfigManagement e creare un oggetto RootSync che sincronizzi il repository radice con il cluster. Il repository radice può essere un repository non
strutturato o un repository
gerarchico. Dopo aver eseguito la migrazione
per utilizzare l'oggetto RootSync, puoi dividere un repository in più
repository e configurare la sincronizzazione da
più repository.
Per configurare il repository radice eseguendo la migrazione della configurazione, completa le seguenti attività:
- Apri l'oggetto ConfigManagement.
- Crea una copia dei valori nei campi
spec.git. Utilizzi questi valori quando crei l'oggetto RootSync. - Rimuovi tutti i campi
spec.git(inclusogit:) dall'oggetto ConfigManagement. Nell'oggetto ConfigManagement, imposta il campo
spec.enableMultiReposutrue:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: trueApplica le modifiche:
kubectl apply -f config-management.yamlAttendi la creazione della CRD RootSync.
kubectl wait --for=condition=established crd rootsyncs.configsync.gke.ioUtilizzando i valori copiati dall'oggetto ConfigManagement, crea l'oggetto RootSync. Ad esempio:
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: ROOT_FORMAT git: repo: ROOT_REPOSITORY revision: ROOT_REVISION branch: ROOT_BRANCH dir: "ROOT_DIRECTORY" auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL # secretRef should be omitted if the auth type is none, gcenode, or gcpserviceaccount. secretRef: name: git-credsSostituisci quanto segue:
ROOT_FORMAT: aggiungiunstructuredper utilizzare un repository non strutturato o aggiungihierarchyper utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito èhierarchy. Ti consigliamo di aggiungereunstructuredperché questo formato ti consente di organizzare le configurazioni nel modo più conveniente per te.ROOT_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository principale. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio,https://github.com/GoogleCloudPlatform/anthos-config-management-samplesutilizza il protocollo HTTPS. Se non inserisci un protocollo, l'URL viene trattato come un URL HTTPS. Questo campo è obbligatorio.ROOT_REVISION: aggiungi la revisione Git (tag o hash) da estrarre. Questo campo è facoltativo e il valore predefinito èHEAD.ROOT_BRANCH: aggiungi il ramo del repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èmaster.ROOT_DIRECTORY: aggiungi il percorso nel repository Git alla directory principale che contiene la configurazione da sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory radice (/) del repository.ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:none: Non utilizzare l'autenticazionessh: Utilizza una coppia di chiavi SSHcookiefile: utilizza uncookiefiletoken: utilizza un tokengcpserviceaccount: utilizza un account di servizio Google per accedere a un repository in Cloud Source Repositories.gcenode: utilizza un account di servizio Google per accedere a un repository in Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.Per ulteriori informazioni su questi tipi di autenticazione, consulta la pagina Concedere a Config Sync l'accesso in sola lettura a Git.
Questo campo è obbligatorio.
ROOT_EMAIL: se hai aggiuntogcpserviceaccountcomeROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempioacm@PROJECT_ID.iam.gserviceaccount.com.
Applica le modifiche:
kubectl apply -f root-sync.yaml
Tabella di confronto tra ConfigManagement e RootSync
La tabella seguente fornisce una panoramica di come i campi della mappa degli oggetti ConfigManagement vengono mappati ai campi di un oggetto RootSync.
| Campo ConfigManagement | Campo RootSync |
|---|---|
spec.git.gcpServiceAccountEmail |
spec.git.gcpServiceAccountEmail |
spec.git.syncRepo |
spec.git.repo |
spec.git.syncBranch |
spec.git.branch |
spec.git.policyDir |
spec.git.dir |
spec.git.syncWait |
spec.git.period |
spec.git.syncRev |
spec.git.revision |
spec.git.secretType |
spec.git.auth |
git-creds (questo è un valore fisso negli oggetti ConfigManagement) |
spec.git.secretRef.name |
spec.sourceFormat |
spec.sourceFormat |
spec.git.proxy.httpProxy o spec.git.proxy.httpsProxy
|
spec.git.proxy |