使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

迁移 Config Controller 资源

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

本页面使用以下术语:

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

建议

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

各种场景的迁移步骤

迁移所有资源

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

  1. 创建目标集群。

  2. 停止将更改推送到源集群配置为与其同步的 Git 代码库。Config Sync 应该继续从该代码库同步。应该仅停止源集群与其同步的 Git 分支的更改。

  3. 确保对 Git 代码库所做的所有近期更改都已在集群中同步,并且源集群中的所有资源均为最新状态。

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

  4. 在目标集群中设置 Config Sync,以从配置了源集群的同一代码库中读取数据。如果设置了多个同步作业以从多个代码库同步,则分别为每个同步作业执行此操作。

  5. 使用 nomos status 命令确保目标集群已从 Git 代码库同步所有资源。

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

  7. 所有代码库同步都迁移后,删除源 Config Controller 集群。

迁移部分资源

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

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

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

  3. 从源集群中删除被标记为“已弃用”的资源。仅当在恢复 Config Sync 之前也从 Git 代码库中移除了这些资源时,此删除操作才有效。

  4. 将这些资源移动到另一个 Git 代码库或同一代码库中的另一个文件夹。

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

迁移个别资源

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

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

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

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

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

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

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

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

后续步骤