9.2. 构建系统镜像
本节提供构建系统镜像的步骤。
先决条件
- 您应该已经执行了准备 Oracle 数据库的步骤。
步骤
从 GitHub 存储库克隆 3scale 的 OpenShift 模板。使用以下命令:
$ git clone --branch 3scale-2.10.0-GA https://github.com/3scale/3scale-amp-openshift-templates.git
-
将您的 Oracle Database Instant 客户端软件包文件放在
3scale-amp-openshift-templates/amp/system-oracle/oracle-client-files
目录中。 - 下载 3scale 2.10 amp.yml 模板。
使用
-f
选项运行oc new-app
命令并指定build.yml
OpenShift 模板:$ oc new-app -f build.yml
使用
-f
选项运行oc new-app
命令以指示amp.yml
OpenShift 模板,并使用-p
选项指定带有 OpenShift 集群域的WILDCARD_DOMAIN
参数:$ oc new-app -f amp.yml -p WILDCARD_DOMAIN=mydomain.com
输入以下
oc patch
命令,将SYSTEM_PASSWORD
替换为您在准备 Oracle 数据库中设置的 Oracle Databasesystem
密码:$ oc patch dc/system-app -p '[{"op": "add", "path": "/spec/strategy/rollingParams/pre/execNewPod/env/-", "value": {"name": "ORACLE_SYSTEM_PASSWORD", "value": "SYSTEM_PASSWORD"}}]' --type=json $ oc patch dc/system-app -p '{"spec": {"strategy": {"rollingParams": {"post":{"execNewPod": {"env": [{"name": "ORACLE_SYSTEM_PASSWORD", "value": "SYSTEM_PASSWORD"}]}}}}}}'
输入以下命令,替换
DATABASE_URL
以指向在准备 Oracle 数据库中指定的 Oracle 数据库 :$ oc patch secret/system-database -p '{"stringData": {"URL": "DATABASE_URL"}}'
输入
oc start-build
命令以构建新系统镜像:$ oc start-build 3scale-amp-system-oracle --from-dir=.
等待构建完成。要查看构建的状态,请运行以下命令:
$ oc get build <build-name> -o jsonpath="{.status.phase}"
- 等待构建处于 Complete 状态。
9.2.1. 更新 ImageChange 触发器
更新使用系统镜像的 DeploymentConfig 的 ImageChange 触发器,以便它们使用基于 Oracle 的新系统镜像。
先决条件
- 首先执行构建系统镜像的步骤。
步骤
将当前的 3scale 发行版本保存到环境变量中:
$ export THREESCALE_RELEASE=2.10
更新
system-app
ImageChange 触发器:$ oc set triggers dc/system-app --from-image=amp-system:${THREESCALE_RELEASE} --containers=system-master,system-developer,system-provider --remove $ oc set triggers dc/system-app --from-image=amp-system:${THREESCALE_RELEASE}-oracle --containers=system-master,system-developer,system-provider
这会触发
system-app
DeploymentConfig 的重新部署。等待它重新部署,其对应的新容器集就绪,并且旧的容器集已停止。更新
system-sidekiq
ImageChange 触发器:$ oc set triggers dc/system-sidekiq --from-image=amp-system:${THREESCALE_RELEASE} --containers=system-sidekiq,check-svc --remove $ oc set triggers dc/system-sidekiq --from-image=amp-system:${THREESCALE_RELEASE}-oracle --containers=system-sidekiq,check-svc
这会触发
system-sidekiq
DeploymentConfig 的重新部署。等待它重新部署,其对应的新容器集就绪,并且旧的容器集已停止。更新
system-sphinx
ImageChange 触发器:$ oc set triggers dc/system-sphinx --from-image=amp-system:${THREESCALE_RELEASE} --containers=system-sphinx,system-master-svc --remove $ oc set triggers dc/system-sphinx --from-image=amp-system:${THREESCALE_RELEASE}-oracle --containers=system-sphinx,system-master-svc
这会触发
system-sphinx
DeploymentConfig 的重新部署。等待它重新部署,其对应的新容器集就绪,并且旧的容器集已停止。注意以下步骤是可选的。在安装 3scale 后使用它来删除
ORACLE_SYSTEM_PASSWORD
。使用 Oracle 数据库设置 3scale 系统镜像后,从
system-app
DeploymentConfig 中删除ORACLE_SYSTEM_PASSWORD
。在升级到新版本的 3scale 前,不需要再次执行它。$ oc set env dc/system-app ORACLE_SYSTEM_PASSWORD-
其他资源
有关 3scale 和 Oracle 数据库支持的更多信息,请参阅 Red Hat 3scale API 管理支持的配置。