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 attivare queste API anche se vuoi utilizzare solo un repository principale e non vuoi utilizzare repository dello spazio dei nomi.

Esegui la migrazione delle impostazioni di ConfigManagement

Se utilizzi RootSync con spec.enableLegacyFields, segui le istruzioni per smettere di utilizzare i campi precedenti.

Se l'oggetto ConfigManagement utilizza spec.git, ma spec.enableMultiRepo è impostato su false, segui le istruzioni per 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 precedenti 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 attivare 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, consulta Eseguire la migrazione da un oggetto 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 l'oggetto ConfigManagement nell'origine di riferimento 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 principale con il cluster. Il repository principale può essere un repository non strutturato o un repository gerarchico. Dopo aver eseguito la migrazione all'utilizzo dell'oggetto RootSync, puoi suddividere un repository in più repository e configurare la sincronizzazione da più repository.

Per configurare il repository principale eseguendo la migrazione della configurazione, completa 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:) 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 del CRD RootSync.

    kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io
    
  7. Utilizza i valori copiati dall'oggetto ConfigManagement per creare 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 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 consente di organizzare le configurazioni nel modo più pratico 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 contenente la configurazione con cui vuoi eseguire la sincronizzazione. 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 la federazione delle identità per i carichi di lavoro per GKE non è abilitata nel tuo 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 ROOT_AUTH_TYPE, aggiungi il tuo indirizzo email dell'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