Config Controller-Ressourcen migrieren

Auf dieser Seite erfahren Sie, wie Sie Config Connector-Ressourcen von einem Config Controller-Cluster zu einem anderen migrieren. Möglicherweise müssen Sie eine Ressource migrieren, wenn Ihr primärer Config Controller-Cluster fehlschlägt und ersetzt werden muss oder Sie eine unveränderliche Clusterkonfiguration ändern müssen.

Auf dieser Seite wird die folgende Terminologie verwendet:

  • Quellcluster: Der Cluster mit den Config Connector-Ressourcen, die Sie migrieren müssen.
  • Zielcluster: Der Cluster, in den Sie Ressourcen migrieren.

Empfehlungen

  • Bevor Sie Änderungen in der Produktion vornehmen, führen Sie diese Schritte in einer Testumgebung aus.
  • Wenn Sie mehrere Config Controller-Cluster migrieren müssen, migrieren Sie jeden Cluster separat, beginnend mit dem am wenigsten kritischen Cluster.
  • Wenn der Config Sync-Cluster aus mehreren Repositories synchronisiert wird, migrieren Sie alle Ressourcen aus jedem Repository gleichzeitig.

Migrationsschritte für verschiedene Szenarien

Alle Ressourcen migrieren

So migrieren Sie alle Ressourcen:

  1. Erstellen Sie den Zielcluster.

  2. Übertragen Sie keine Änderungen mehr per Push an das Git-Repository, aus dem der Quellcluster für die Synchronisierung konfiguriert ist. Config Sync sollte jedoch weiterhin aus dem Repository synchronisiert werden. Nur Änderungen am Git-Branch, von denen der Quellcluster synchronisiert wird, sollten angehalten werden.

  3. Prüfen Sie, ob alle aktuellen Änderungen am Git-Repository im Cluster synchronisiert wurden und alle Ressourcen im Quellcluster aktuell sind.

    Wenn bei einigen Ressourcen Fehler auftreten, müssen Sie diese möglicherweise einzeln analysieren. Wenn eine Ressource aufgrund eines Fehlers noch nicht erstellt wurde, wird sie später mithilfe des Config Connectors erstellt, der im Zielcluster ausgeführt wird. Diese Fehler können normalerweise ignoriert werden. Bei den meisten Fehlern sollten die Ursachen jedoch vor der Migration ermittelt und behoben werden.

  4. Richten Sie Config Sync im Zielcluster so ein, dass es aus demselben Repository liest, aus dem der Quellcluster konfiguriert ist. Führen Sie dies für jede Synchronisierung durch, wenn Sie mehrere Synchronisierungen von mehr als einem Repository einrichten.

  5. Prüfen Sie mit dem Befehl nomos status, ob der Zielcluster alle Ressourcen aus dem Git-Repository synchronisiert hat.

  6. Entfernen Sie nach der Synchronisierung der Ressourcen das RepoSync aus dem Quellcluster.

  7. Löschen Sie den Config Controller-Quellcluster, nachdem alle Repository-Synchronisierungen migriert wurden.

Einige Ressourcen migrieren

So migrieren Sie einige Ressourcen:

  1. Führen Sie die Schritte 1 bis 6 aus dem vorherigen Abschnitt Alle Ressourcen migrieren aus.

  2. Annotieren Sie die Ressourcen, die zum Zielcluster migriert werden sollen, mit der Annotation cnrm.cloud.google.com/deletion-policy: abandon. Diese Annotation verhindert, dass Config Connector die zugrunde liegenden Ressourcen löscht, wenn die Config Connector-Ressource aus dem Config Controller-Cluster gelöscht wird.

  3. Löschen Sie die Ressourcen, die als verworfen markiert wurden, aus dem Quellcluster. Das Löschen funktioniert nur, wenn diese Ressourcen auch aus dem Git-Repository entfernt werden, bevor Config Sync fortgesetzt wird.

  4. Verschieben Sie diese Ressourcen in ein anderes Git-Repository oder einen anderen Ordner innerhalb desselben Repositorys.

  5. Richten Sie den Zielcluster so ein, dass er von dem Ort aus synchronisiert, an den Sie die Ressourcen verschoben haben. Der Zielcluster kann diese Ressourcen jetzt abrufen und verwalten.

Einzelne Ressourcen migrieren

Wenn ein Config Controller-Cluster nicht gelöscht werden kann (z. B. wenn nur eine Teilmenge von Ressourcen zu einem anderen Cluster migriert wird), können Sie einzelne Ressourcen löschen. Wenn Sie einzelne Ressourcen löschen möchten, deaktivieren Sie Config Sync und legen Sie dann die Annotation cnrm.cloud.google.com/deletion-policy: abandon für die einzelnen Ressourcen fest, die Sie löschen möchten.

Ressourcen mit einer vom Dienst generierten resourceID migrieren

Bei Ressourcen, bei denen das Feld resourceID nicht explizit angegeben wurde, muss resourceID nicht für die Ressourcenakquisition durch eine andere Config Connector-Instanz angegeben werden. Es gibt jedoch Ressourcen, die eine vom Dienst generierte Ressourcen-ID haben, für die zusätzliche Schritte erforderlich sind. Obwohl der resourceID vom Dienst generiert wurde, muss er angegeben werden, um diese Ressourcen von einer anderen Config Connector-Instanz zu erhalten. Für diese Ressource sollten die resourceIDs dem Git-Repository hinzugefügt werden, bevor sie versuchen, Ressourcen vom Zielcluster zu erhalten.

Ressourcen mithilfe der Richtlinie zur Konfliktvermeidung migrieren

Die Richtlinie zur Vermeidung von Konflikten ist standardmäßig für Ressourcen deaktiviert. Sie können sie für eine Ressource aktivieren, indem Sie die folgende Annotation festlegen:

cnrm.cloud.google.com/management-conflict-prevention-policy: "resource"

Nach dem Festlegen muss Config Connector eine Freigabe für die zugrunde liegende Ressource erwerben, bevor Änderungen daran vorgenommen werden. Dies bedeutet, dass der Zielcluster die Freigabe nicht sofort übernehmen kann, da die Freigabe von Config Connector im Quellcluster gehalten wird. Die Freigabe wird für 40 Minuten gewährt. Nach 20 Minuten versucht Config Connector jedoch, die Freigabe proaktiv zu erneuern. Daher kann der Zielcluster die Freigabe nicht abrufen, wenn Config Connector im Quellcluster fehlerfrei ist und ausgeführt wird. Der Quellcluster muss seine Freigabe freigeben, bevor der Zielcluster sie abrufen kann. Dies kann entweder durch Löschen des Quellclusters oder durch Löschen der Ressource im Quellcluster erfolgen.

Sobald der Quellcluster die Freigabe freigegeben hat, kann der Zielcluster die Freigabe übernehmen. Der Zielcluster kann die Freigabe nach maximal 40 Minuten abrufen und die Ressourcen verwalten. Bevor die Freigabe vom Zielcluster übernommen wird, sollten Sie keine Änderungen an den Config Connector-Ressourcen vornehmen.

Nächste Schritte