在 Red Hat OpenShift 或 IBM Cloud Pak for Integration 上将 apic-configsync 实用程序作为 cronjob 运行,可使实用程序定时运行,例如每 10 分钟运行一次。
在开始之前
在尝试配置 cronjob 之前,请确保满足以下先决条件:
- 确保您有可用于将映像复制到映像注册表的工具。
本主题中的示例使用 skopeo 将映像复制到目标注册表,但您可以改为使用等效的 docker 或 podman 命令。
- 通过运行以下命令,使用
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 环境中运行。
过程
- 下载并解压 "API Connect配置同步软件包.
- 通过运行以下命令从提取的 API Connect Config Sync 软件包中提取 Config Sync 映像:
tar xf ibm-apic-configsync-image.tar.gz
- 将抽取的配置同步映像复制到目标注册表。
例如,如果使用 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 文件中复制这些值。
- 定义源目录和目标目录的环境变量。
- 创建私钥以托管源集群和目标集群的配置详细信息。
- 创建私钥以在要运行 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
- 创建私钥以在要运行 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
- 创建 cronjob:
- 打开位于提取的 API Connect 配置同步软件包中的
helper_files/configsync-cronjob-ocp.yaml 文件。
- 修改
schedule 属性以指定作业的运行频率。
建议的最小调度周期为 1 分钟; 但是,具有大量对象的部署可能需要更多时间才能完成作业。 因为不允许并发作业,所以两个连续作业启动之间的总时间可能更长。
- 将
concurrencyPolicy 设置为 Forbid。
配置同步一次对单个源/目标目录对执行操作。 如果要同步多个不同的源/目标目录对,请为每个对创建单独的 cronjob。
- 在
image 属性中,将 <APIC_PROJECT> 变量替换为将在其中运行 cronjob 的名称空间 (项目)。
- 通过运行以下命令在集群中创建 cronjob 资源:
oc --namespace $APIC_PROJECT apply -f helper_files/configsync-cronjob-ocp.yaml