迁移 Config Controller 资源

本页面介绍如何将 Config Connector 资源从一个 Config Controller 集群迁移到另一个 Config Controller 集群。如果您的主要 Config Controller 集群失败并且需要替换,或者您需要更改不可变的集群配置,则可能需要迁移资源。

本页面使用以下术语:

  • 源集群:包含您需要迁移的 Config Connector 资源的集群。
  • 目标集群:您要将资源迁移到其中的集群。

建议

  • 在生产环境中进行更改之前,请在测试环境中完成以下步骤。
  • 如果您需要迁移多个 Config Controller 集群,请从最不重要的集群开始逐个迁移。
  • 如果 Config Sync 集群从多个可信来源同步,请一次性迁移每个来源中的所有资源。

各种场景的迁移步骤

迁移所有资源

如需迁移所有资源,请完成以下步骤:

  1. 创建目标集群。

  2. 停止将更改推送到源集群配置为从中同步的数据源。Config Sync 应继续从可信来源同步。只有源集群与之同步的更改才能停止。

  3. 确保对可信来源所做的任何更改都已在集群中同步,并且源集群中的所有资源都是最新的。

    如果某些资源存在错误,您可能需要单独分析这些资源。如果某个资源由于错误而未被创建,系统稍后会使用在目标集群中运行的 Config Connector 创建该资源。这些错误通常可以忽略。但对于大多数错误,应在尝试迁移之前找出根本原因并予以解决。

  4. 在目标集群中设置 Config Sync,以从配置源集群的同一可信来源读取数据。如果将多个同步设置为从多个可信来源同步,则请针对每个同步执行此操作。

  5. 使用 nomos status 命令确保目标集群已同步来自可靠来源的所有资源。

  6. 同步资源后,从源集群中移除 RootSync 或 RepoSync

  7. 迁移完每个可信来源后,请删除源 Config Controller 集群。

迁移部分资源

如需迁移部分资源,请完成以下步骤:

  1. 完成上面的“迁移所有资源”部分中的第 1 步到第 6 步。

  2. 使用 cnrm.cloud.google.com/deletion-policy: abandon 注解为应迁移到目标集群的资源添加注解。此注解可以防止在从 Config Controller 集群中删除 Config Connector 资源时,Config Connector 删除底层资源。

  3. 从源集群中删除被标记为“已弃用”的资源。只有在这些资源在恢复 Config Sync 之前也从可信来源中移除时,此删除操作才会起作用。

  4. 将这些资源移动到其他可信来源或同一可信来源中的不同文件夹中。

  5. 将目标集群设置为从您将资源移动到的位置同步。目标集群现在可以获取这些资源并开始管理它们。

迁移个别资源

如果无法删除 Config Controller 集群(例如,仅将一部分资源迁移到另一个集群时),您可以删除个别资源。如需删除个别资源,请停用 Config Sync,然后在需要删除的各个资源上设置注解 cnrm.cloud.google.com/deletion-policy: abandon

迁移具有服务生成的 resourceID 的资源

对于未明确提供 resourceID 字段的资源,无需指定 resourceID,便可让另一个 Config Connector 实例获取该资源。但是,具有服务生成的资源 ID 的资源需要额外的步骤。虽然 resourceID 是服务生成的,您也需要明确提供该字段才能从另一个 Config Connector 实例获取这些资源。对于这些资源,应该先将 resourceID 添加到可信来源,然后再尝试从目标集群获取资源。

使用冲突预防政策迁移资源

默认情况下,系统为资源关闭冲突预防政策。您可以通过设置以下注解在资源上启用它:

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

设置完成后,Config Connector 必须先获取底层资源的租约,然后才能对其进行更改。这意味着目标集群无法立即获取租约,因为租约由源集群中的 Config Connector 保留。租期为 40 分钟。但是,20 分钟后,Config Connector 会主动尝试续订租约。由于此行为,如果源集群中的 Config Connector 健康状况良好且正在运行,则目标集群将无法获取租约。源集群需要释放其租约,然后目标集群才能获取该租约。此操作可以通过删除源集群或通过删除源集群中的资源来实现。

源集群释放租约后,目标集群可以获取租约。目标集群最多在 40 分钟后便能获得租约,之后便可开始管理资源。在目标集群获取租约之前,不应对 Config Connector 资源进行任何更改。

后续步骤