Migrazione dell'oggetto ConfigManagement

Questa pagina mostra come eseguire la migrazione dell'oggetto ConfigManagement a un oggetto RootSync. La migrazione da un oggetto ConfigManagement a un oggetto RootSync consente di abilitare le API RootSync e RepoSync. Queste API consentono di utilizzare funzionalità aggiuntive. Ad esempio, puoi visualizzare le configurazioni di Kustomize e i grafici Helm e sostituire i valori di sistema come modifica dei limiti delle risorse e aggiornare il numero di commit Git da recuperare. Puoi abilitare queste API anche se vuoi utilizzare solo un repository radice e non utilizzare repository di spazio dei nomi.

Eseguire la migrazione delle impostazioni di ConfigManagement

Usa 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, segui le istruzioni riportate in Eseguire la migrazione da un oggetto ConfigManagement a un oggetto RootSync.

Migrazione manuale

Se la versione di nomos è precedente a 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 root al 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 suddividere un repository in più repository e configurare la sincronizzazione da più repository nella versione 1.11.0 o successive.

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

  1. Apri il tuo oggetto ConfigManagement.
  2. Crea una copia dei valori nei campi spec.git. Questi valori vengono utilizzati durante la creazione dell'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 il completamento della 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
    # If you are using a Config Sync version earlier than 1.7.0,
    # use: apiVersion: configsync.gke.io/v1alpha1
    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 poiché questo formato ti consente di organizzare le tue configurazioni nel modo che preferisci.
    • 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-samples utilizza il protocollo HTTPS. Se non inserisci un protocollo, l'URL viene considerato come un URL HTTPS. Questo campo è obbligatorio.
    • ROOT_REVISION: aggiungi la revisione Git (tag o hash) per il pagamento. 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 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: utilizzo di una coppia di chiavi SSH
      • cookiefile: utilizza un cookiefile
      • token: utilizzo di 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 non è abilitato nel cluster.

        Per ulteriori informazioni su questi tipi di autenticazione, consulta la pagina relativa alla concessione dell'accesso in sola lettura a Config Sync a Git.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come 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 ConfigManagement e RootSync

La seguente tabella fornisce una panoramica del modo in cui i campi nell'oggetto ConfigMangent vengono mappati ai campi in 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 (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