ConfigManagement-Objekt migrieren

Auf dieser Seite erfahren Sie, wie Sie Ihre Git-Konfiguration von einem ConfigManagement-Objekt zu einem RootSync-Objekt migrieren. Durch die Migration werden die APIs RootSync und RepoSync aktiviert, sodass Sie zusätzliche Funktionen nutzen können:

Sie können diese APIs auch dann aktivieren, wenn Sie nur ein Root-Repository und keine Namespace-Repositories verwenden möchten.

ConfigManagement-Einstellungen migrieren

Wenn Sie RootSync mit spec.enableLegacyFields verwenden, folgen Sie der Anleitung unter Alte Felder nicht mehr verwenden.

Wenn in Ihrem ConfigManagement-Objekt spec.git verwendet wird, spec.enableMultiRepo aber auf „false“ gesetzt ist, folgen Sie der Anleitung unter Zu RootSync migrieren.

Alte Felder nicht mehr verwenden

Das Feld spec.enableLegacyFields wird in Config Sync nicht unterstützt. Das Vorhandensein dieses Felds führt zu Fehlern. Wenn Sie eine frühere Version von Config Sync verwenden, in der dieses Feld angegeben ist, führen Sie die folgenden Schritte aus, um die alten Felder zu entfernen:

  1. Öffnen Sie das ConfigManagement-Objekt.

  2. Entfernen Sie im ConfigManagement-Objekt die Felder spec.enableLegacyFields und spec.git. Ihr ConfigManagement-Objekt sollte in etwa so aussehen:

    # config-management.yaml
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: true
    
  3. Übernehmen Sie die Änderung:

    kubectl apply -f config-management.yaml
    

Alte Felder sind jetzt deaktiviert, ohne dass sich das auf das RootSync-Objekt auswirkt, das aus den spec.git-Feldern Ihres ConfigManagement-Objekts generiert wird. Die Migration ist abgeschlossen und Sie können die Git-Felder im RootSync-Objekt jetzt direkt verwenden.

Zu RootSync migrieren

Wenn in Ihrem ConfigManagement-Objekt spec.git verwendet wird, spec.enableMultiRepo aber auf „false“ gesetzt ist, folgen Sie dieser Anleitung, um die RootSync und RepoSync APIs zu aktivieren.

nomos migrate verwenden

Ab Version 1.10.0 bietet nomos den Befehl nomos migrate, um die APIs RootSync und RepoSync zu aktivieren. Sie müssen nomos auf 1.10.0 und höher aktualisieren.

Weitere Informationen zum Ausführen des Befehls finden Sie unter Von einem ConfigManagement-Objekt zu einem RootSync-Objekt migrieren. Achten Sie darauf, dass Ihr ConfigManagement-Objekt nicht in Ihre Source of Truth eingecheckt und von Config Sync verwaltet wird. Wenn dies der Fall ist, sollten Sie Ihr ConfigManagement-Objekt in Ihrer „Source of Truth“ gemäß der Anleitung unter Manuelle Migration ändern.

Manuelle Migration

Wenn Ihre nomos-Version vor 1.10.0 ist, können Sie Ihre Einstellungen manuell migrieren. Sie müssen in Ihrem ConfigManagement-Objekt spec.enableMultiRepo auf true setzen und ein RootSync-Objekt erstellen, das Ihr Roote-Repository mit dem Cluster synchronisiert.

Führen Sie die folgenden Aufgaben aus, um das Root-Repository durch Migrieren der Konfiguration zu konfigurieren:

  1. Öffnen Sie das ConfigManagement-Objekt.
  2. Kopieren Sie die Werte in den spec.git-Feldern. Sie verwenden diese Werte beim Erstellen des RootSync-Objekts.
  3. Entfernen Sie alle spec.git-Felder (einschließlich git:) aus dem ConfigManagement-Objekt.
  4. Legen Sie im ConfigManagement-Objekt das Feld spec.enableMultiRepo auf true fest:

    # config-management.yaml
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: true
    
  5. Änderungen anwenden:

    kubectl apply -f config-management.yaml
    
  6. Warten Sie, bis die RootSync-CRD erstellt wurde.

    kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io
    
  7. Erstellen Sie das RootSync-Objekt mit den Werten, die Sie aus dem ConfigManagement-Objekt kopiert haben. Beispiele:

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: root-sync
      namespace: config-management-system
    spec:
      sourceFormat: unstructured
      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
    

    Ersetzen Sie Folgendes:

    • ROOT_REPOSITORY: Fügen Sie die URL des Git-Repositorys hinzu, das als Stamm-Repository verwendet werden soll. Sie können URLs mithilfe des HTTPS- oder SSH-Protokolls eingeben. https://github.com/GoogleCloudPlatform/anthos-config-management-samples verwendet beispielsweise das HTTPS-Protokoll. Wenn Sie kein Protokoll eingeben, wird die URL als HTTPS-URL behandelt. Dies ist ein Pflichtfeld.
    • ROOT_REVISION: Fügen Sie die Git-Revision (Tag oder Hash) hinzu, um auszuchecken. Dieses Feld ist optional und der Standardwert ist HEAD.
    • ROOT_BRANCH: Der Zweig des Repositorys, von dem aus synchronisiert werden soll. Dieses Feld ist optional und der Standardwert ist master.
    • ROOT_DIRECTORY: Fügen Sie den Pfad im Git-Repository zum Stammverzeichnis hinzu, das die Konfiguration enthält, mit der Sie die Synchronisierung durchführen möchten. Dieses Feld ist optional und die Standardeinstellung ist das Stammverzeichnis (/) des Repositorys.
    • ROOT_AUTH_TYPE: Fügen Sie einen der folgenden Authentifizierungstypen hinzu:

      • none: Keine Authentifizierung verwenden
      • ssh: Ein SSH-Schlüsselpaar verwenden
      • cookiefile: Nutzen Sie einen cookiefile.
      • token: Ein Token verwenden
      • gcpserviceaccount: Verwenden Sie ein Google-Dienstkonto, um auf ein Repository in Cloud Source Repositories zuzugreifen.
      • gcenode: Verwenden Sie ein Google-Dienstkonto, um auf ein Repository in Cloud Source Repositories zuzugreifen. Wählen Sie diese Option nur aus, wenn Workload Identity Federation for GKE in Ihrem Cluster nicht aktiviert ist.

        Weitere Informationen zu diesen Authentifizierungstypen finden Sie unter Config Sync Lesezugriff auf Git gewähren.

      Dies ist ein Pflichtfeld.

    • ROOT_EMAIL: Wenn Sie gcpserviceaccount für ROOT_AUTH_TYPE angegeben haben, fügen Sie die E-Mail-Adresse Ihres Google-Dienstkontos hinzu. Beispiel: acm@PROJECT_ID.iam.gserviceaccount.com.

  8. Änderungen anwenden:

    kubectl apply -f root-sync.yaml
    

ConfigManagement und RootSync-Vergleichstabelle

Die folgende Tabelle bietet einen Überblick darüber, wie die Felder in Ihrem ConfigManagement-Objekt den Feldern in einem RootSync-Objekt zugeordnet werden.

ConfigManagement-Feld RootSync-Feld
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 (fester Wert in ConfigManagement-Objekten) spec.git.secretRef.name
spec.sourceFormat spec.sourceFormat
spec.git.proxy.httpProxy oder spec.git.proxy.httpsProxy spec.git.proxy

Nächste Schritte