在 Kubernetes 上作为 cronjob 运行配置同步

在 Kubernetes 上作为 cronjob 运行 apic-configsync 实用程序使该实用程序能够定时运行,例如每 10 分钟运行一次。

准备工作

在尝试配置 cronjob 之前,请确保满足以下先决条件:

  • 确保您有可用于将映像复制到映像注册表的工具。

    本主题中的示例使用 skopeo 将映像复制到目标注册表,但您可以改为使用等效的 dockerpodman 命令。

关于本任务

您可以将 apic-configsync 实用程序配置为在 API Connect 上运行的 Kubernetes 部署中作为 cronjob 运行。 apic-configsync 实用程序应尽可能靠近目标群集运行,因此 cronjob 应配置为在与目标 API Connect 群集相同的 Kubernetes 环境中运行。

过程

  1. 下载并解压 Config Sync API Connect 软件包
  2. 通过运行以下命令从提取的 API Connect Config Sync 软件包中提取 Config Sync 映像:
    tar xf ibm-apic-configsync-image.tar.gz
  3. 将抽取的配置同步映像复制到目标注册表。

    例如,如果使用 skopeo ,请运行以下命令:

    skopeo copy dir:./ibm-apic-configsync/ibm-apic-configsync-<version>/<tag> docker://<registry>/ibm-apic-configsync/ibm-apic-configsync-<version>:<tag>

    <version><tag> 替换为它们的实际值。 为确保使用最新值,请从解压缩的 API Connect 配置同步软件包根目录下的 README 文件中复制这些值。

    <registry> 替换为映像注册表的实际注册表值。 请参阅有关为目标注册表配置凭证的 skopeo 文档。

  4. 定义源目录和目标目录的环境变量
  5. 创建私钥以托管源集群和目标集群的配置详细信息。
    1. 创建私钥以在要运行 cronjob 的名称空间中托管源集群的配置详细信息:
      kubectl create secret --namespace <namespace> generic source-catalog-details \
          --from-literal=SOURCE_MGMT_SERVER=$SOURCE_MGMT_SERVER \
          --from-literal=SOURCE_ORG=$SOURCE_ORG \
          --from-literal=SOURCE_REALM=$SOURCE_REALM \
          --from-literal=SOURCE_ADMIN_USER=$SOURCE_ADMIN_USER \
          --from-literal=SOURCE_ADMIN_PASSWORD=$SOURCE_ADMIN_PASSWORD \
          --from-literal=SOURCE_CATALOG=$SOURCE_CATALOG \
          --from-literal=SOURCE_TOOLKIT_CREDENTIALS_CLIENTID=$SOURCE_TOOLKIT_CREDENTIALS_CLIENTID \
          --from-literal=SOURCE_TOOLKIT_CREDENTIALS_CLIENTSECRET=$SOURCE_TOOLKIT_CREDENTIALS_CLIENTSECRET
    2. 创建私钥以在要运行 cronjob 的名称空间中托管目标集群的配置详细信息:
      kubectl create secret --namespace <namespace> generic target-catalog-details \
          --from-literal=TARGET_MGMT_SERVER=$TARGET_MGMT_SERVER \
          --from-literal=TARGET_ORG=$TARGET_ORG \
          --from-literal=TARGET_REALM=$TARGET_REALM \
          --from-literal=TARGET_ADMIN_USER=$TARGET_ADMIN_USER \
          --from-literal=TARGET_ADMIN_PASSWORD=$TARGET_ADMIN_PASSWORD \
          --from-literal=TARGET_CATALOG=$TARGET_CATALOG \
          --from-literal=TARGET_TOOLKIT_CREDENTIALS_CLIENTID=$TARGET_TOOLKIT_CREDENTIALS_CLIENTID \
          --from-literal=TARGET_TOOLKIT_CREDENTIALS_CLIENTSECRET=$TARGET_TOOLKIT_CREDENTIALS_CLIENTSECRET
  6. 创建 cronjob:
    1. 打开位于提取的 API Connect 配置同步软件包中的 helper_files/configsync-cronjob-k8s.yaml 文件。
    2. 修改 schedule 属性以指定作业的运行频率。

      建议的最小调度周期为 1 分钟; 但是,具有大量对象的部署可能需要更多时间才能完成作业。 因为不允许并发作业,所以两个连续作业启动之间的总时间可能更长。

    3. concurrencyPolicy 设置为 Forbid

      配置同步一次对单个源/目标目录对执行操作。 如果要同步多个不同的源/目标目录对,请为每个对创建单独的 cronjob。

    4. image 属性中,将 <registry> 变量替换为映像注册表的实际注册表值。
    5. 通过运行以下命令在集群中创建 cronjob 资源:
      kubectl --namespace <namespace> apply -f helper_files/configsync-cronjob-k8s.yaml