Migrazione dell'oggetto ConfigManagement

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:

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:

  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 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à:

  1. Apri l'oggetto ConfigManagement.
  2. Crea una copia dei valori nei campi spec.git. Utilizzi questi valori quando crei l'oggetto RootSync.
  3. Rimuovi tutti i campi spec.git (incluso git:) dall'oggetto 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 della CRD RootSync.

    kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io
    
  7. Utilizzando 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-creds
    

    Sostituisci quanto segue:

    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi 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 perché 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-samples utilizza 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'autenticazione
      • ssh: Utilizza una coppia di chiavi SSH
      • cookiefile: utilizza 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 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 aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del 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 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

Passaggi successivi