Migrazione dell'oggetto ConfigManagement

Questa pagina mostra come eseguire la migrazione della configurazione di Git da un oggetto ConfigManagement a un oggetto RootSync. La migrazione abilita le API RootSync e RepoSync, che ti consentono di utilizzare funzionalità aggiuntive:

Puoi abilitare queste API anche se vuoi utilizzare solo un repository radice e non vuoi utilizzare alcun repository dello spazio dei nomi.

Esegui la migrazione delle impostazioni di ConfigManagement

Se utilizzi RootSync con spec.enableLegacyFields, segui le istruzioni fino a Interrompere l'utilizzo dei campi precedenti.

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 precedenti

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 nella versione 1.19.0 e successive, completa i seguenti passaggi per rimuovere i campi legacy:

  1. Apri l'oggetto ConfigManagement.

  2. Nell'oggetto ConfigManagement, rimuovi i campi spec.enableLegacyFields e spec.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: true
    
  3. Applica 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 abilitare le API RootSync e RepoSync.

Utilizza nomos migrate

A partire dalla versione 1.10.0, nomos fornisce il comando nomos migrate per attivare 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 ConfigManagement a un oggetto RootSync. Assicurati che l'oggetto ConfigManagement non sia sottoposto a check-in nella tua fonte attendibile e gestito da Config Sync. In questo caso, devi modificare ConfigManagement nella tua origine 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 nel tuo ConfigManagement e crea un oggetto RootSync che sincronizza l'oggetto principale repository Git nel cluster. Il repository principale può essere un repository non strutturato o un repository gerarchico. Dopo la migrazione per utilizzare l'oggetto RootSync, potete suddividere un repository in più repository e configurare la sincronizzazione più repository.

Per configurare il repository radice eseguendo la migrazione della configurazione, completa il le seguenti attività:

  1. Apri l'oggetto ConfigManagement.
  2. Crea una copia dei valori nei campi spec.git. Utilizza questi valori quando crei l'oggetto RootSync.
  3. Rimuovi tutti i campi spec.git (incluso git:) da ConfigManagement.
  4. Nell'oggetto ConfigManagement, imposta il campo spec.enableMultiRepo su true:

    # config-management.yaml
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: true
    
  5. Applica le modifiche:

    kubectl apply -f config-management.yaml
    
  6. Attendi la creazione del CRD RootSync.

    kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io
    
  7. Utilizzando i valori copiati dall'oggetto ConfigManagement, crea 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-creds
    

    Sostituisci quanto segue:

    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.
    • ROOT_REPOSITORY: aggiungi l'URL del repository Git a da usare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS HTTP(S) o SSH. Ad esempio: https://github.com/GoogleCloudPlatform/anthos-config-management-samples usi il protocollo HTTPS. Se non inserisci un protocollo, l'URL viene trattato come URL HTTPS. Questo campo è obbligatorio.
    • ROOT_REVISION: aggiungi la revisione Git (tag o hash) per il pagamento. Questo è 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 a la directory principale che contiene la configurazione da sincronizzare a. Questo campo è facoltativo e il valore predefinito è la directory radice (/) di nel repository.
    • ROOT_AUTH_TYPE: aggiungi una delle seguenti autenticazioni tipi:

      • none: non usare l'autenticazione
      • ssh: usa una coppia di chiavi SSH
      • cookiefile: usa un cookiefile
      • token: utilizza un token
      • gcpserviceaccount: 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 La federazione delle identità per i carichi di lavoro per GKE non è abilitata nel cluster.

        Per ulteriori informazioni su questi tipi di autenticazione, consulta la pagina Concedere a Config Sync l'accesso di sola lettura a Git.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come tuo ROOT_AUTH_TYPE, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio: acm@PROJECT_ID.iam.gserviceaccount.com.

  8. Applica le modifiche:

    kubectl apply -f root-sync.yaml
    

Tabella di confronto tra ConfigManagement e RootSync

La tabella seguente fornisce una panoramica della mappatura 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

Passaggi successivi