Questa pagina mostra come eseguire la migrazione della configurazione Git da un
ConfigManagement oggetto a un
RootSync oggetto. La migrazione abilita le API RootSync e RepoSync, che ti consentono di utilizzare funzionalità aggiuntive:
- Sincronizzazione da più fonti attendibili
- Utilizzo della dashboard di Config Sync
- Monitoraggio di Config Sync con Cloud Monitoring, Prometheus o un sistema di monitoraggio personalizzato
- Rendering delle configurazioni Kustomize e dei grafici Helm
- Sincronizzazione degli artefatti OCI da Artifact Registry
- Sincronizzazione dei grafici Helm da Artifact Registry
- Override dei valori di sistema, ad esempio modifica dei limiti delle risorse e aggiornamento del numero di commit Git da recuperare
Puoi abilitare queste API anche se vuoi utilizzare solo un repository radice e non vuoi utilizzare repository di spazi dei nomi.
Eseguire la migrazione delle 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
Il campo spec.enableLegacyFields non è supportato in Config Sync. La presenza di questo campo causa errori.
Se utilizzi una versione precedente di Config Sync che specifica questo campo, 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 disattivati 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 abilitare le API RootSync e RepoSync.
Utilizzare 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 e successive.
Per maggiori dettagli su come eseguire il comando, vedi 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 caso contrario, devi modificare l'oggetto ConfigManagement nella tua fonte attendibile seguendo i passaggi descritti in Migrazione manuale.
Migrazione manuale
Se la 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.
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. Utilizzerai 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: unstructured 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_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository radice. 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 radice che contiene la configurazione che vuoi 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 cluster.Per ulteriori informazioni su questi tipi di autenticazione, vedi 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 tuo account di servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com.
Applica le modifiche:
kubectl apply -f root-sync.yaml
Tabella di confronto tra ConfigManagement e RootSync
La seguente tabella fornisce una panoramica del mapping dei campi dell'oggetto ConfigMangent 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 |