Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Migrazione dell'oggetto ConfigManagement

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

Esegui la migrazione delle impostazioni di ConfigManagement

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 e successive.

Per maggiori dettagli su come eseguire il comando, consulta Eseguire la migrazione da un oggetto ConfigManagement a un oggetto ConfigSync.

Migrazione manuale

Se la tua versione di nomos è precedente alla 1.10.0, puoi eseguire la migrazione manuale delle impostazioni. Devi impostare spec.enableMultiRepo su true nell'oggetto ConfigManagement e creare un oggetto RootSync che sincronizza il tuo repository root nel cluster. Il repository principale 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.

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 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 il completamento della creazione del CRD di 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ù pratico per te.
    • ROOT_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository root. 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) da pagare. 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 contenente 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'autenticazione
      • ssh: usa 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 non è abilitato nel cluster.

        Per ulteriori informazioni su questi tipi di autenticazione, consulta Concedere l'accesso di 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 offre una panoramica di come i campi nell'oggetto ConfigMangent 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 (valore predefinito 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