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

在 Red Hat OpenShift 或 IBM Cloud Pak for Integration 上将 apic-configsync 实用程序作为 cronjob 运行,可使实用程序定时运行,例如每 10 分钟运行一次。

在开始之前

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

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

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

  • 通过运行以下命令,使用 defaultRoute 公开 OpenShift 注册表:
    oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
    有关详细信息,请参阅OpenShift文档中的 "公开注册表"。 无需在指示信息中执行步骤 5 ("podman login" 步骤)。
  • 通过运行以下命令将 REGISTRY_HOST 环境变量设置为 OpenShift 注册表:
    REGISTRY_HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
  • APIC_PROJECT 环境变量设置为要在其中运行 cronjob 的名称空间 (项目)。 为获得最佳性能,cronjob 应在与目标 API Connect 集群相同的 OpenShift 环境中运行。

关于此任务

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

过程

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

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

    skopeo copy --dest-tls-verify=false --dest-registry-token=$(oc whoami -t) dir:./ibm-apic-configsync/ibm-apic-configsync-<version>/<tag> docker://$REGISTRY_HOST/$APIC_PROJECT/ibm-apic-configsync-<version>:<tag>

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

  4. 定义源目录和目标目录的环境变量
  5. 创建私钥以托管源集群和目标集群的配置详细信息。
    1. 创建私钥以在要运行 cronjob 的名称空间中托管源集群的配置详细信息:
      oc create secret --namespace $APIC_PROJECT 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 的名称空间中托管目标集群的配置详细信息:
      oc create secret --namespace $APIC_PROJECT 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-ocp.yaml 文件。
    2. 修改 schedule 属性以指定作业的运行频率。

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

    3. concurrencyPolicy 设置为 Forbid

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

    4. image 属性中,将 <APIC_PROJECT> 变量替换为将在其中运行 cronjob 的名称空间 (项目)。
    5. 通过运行以下命令在集群中创建 cronjob 资源:
      oc --namespace $APIC_PROJECT apply -f helper_files/configsync-cronjob-ocp.yaml