1.6. 使用 Oracle 作为系统数据库的操作器安装 3scale API 管理
作为红帽 3scale API 管理管理员,您可以使用 Oracle 数据库使用操作器安装 3scale。默认情况下,3scale 2.14 有一个名为 system
的组件,该组件将配置数据存储在 MySQL 数据库中。您可以覆盖默认数据库,并将信息存储在外部 Oracle 数据库中。
- 当您只执行 3scale 的 Operator 安装时,OpenShift Container Platform(OCP)版本 4.2 和 4.3 不支持 Oracle 数据库。如需更多信息,请参阅 Red Hat 3scale API 管理支持的配置 页面。
-
在本文档中,
myregistry.example.com
用作 registry URL 的示例。将它替换为您的 registry URL。 - 免责声明:包括在此处的外部网络链接仅为方便用户而提供。红帽没有审阅链接的内容,并不对其内容负责。包含任何指向外部网站的链接并不表示红帽认可该网站或其实体、产品或服务。您同意红帽对因您使用(或依赖)外部网站或内容而导致的任何损失或费用不承担任何责任。
先决条件
- 一个容器 registry,用于推送容器镜像,该镜像可由安装 3scale 的 OCP 集群访问。
- 不要安装 APIManager CR,因为它将在以下流程中创建。
- 可以从 OpenShift cluster 访问的一个 Oracle Database 的支持版本。
-
访问 Oracle Database
SYSTEM
用户以获取安装过程。
要使用 Oracle 作为系统数据库通过操作器安装 3scale,请执行以下步骤:
1.6.1. 准备 Oracle 数据库
作为 3scale 管理员,当您决定将其用于系统组件时,您必须为 3scale 安装准备 Oracle 数据库。
流程
- 创建新数据库。
应用以下设置:
ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE;
配置数据库用户
在 3scale 中设置 Oracle 数据库集成有两个选项:带有或不提供 Oracle
SYSTEM
用户密码。3scale 仅将
SYSTEM
用户用于初始设置,它包含创建常规用户并授予其所需的权限。以下 SQL 命令将设置一个具有适当权限的普通用户。({DB_USER}
和{DB_PASSWORD}
是需要替换为实际值的占位符):CREATE USER {DB_USER} IDENTIFIED BY {DB_PASSWORD}; GRANT unlimited tablespace TO {DB_USER}; GRANT create session TO {DB_USER}; GRANT create table TO {DB_USER}; GRANT create view TO {DB_USER}; GRANT create sequence TO {DB_USER}; GRANT create trigger TO {DB_USER}; GRANT create procedure TO {DB_USER};
使用
SYSTEM
用户:-
在
system-database
secret 的ORACLE_SYSTEM_PASSWORD
字段中提供SYSTEM
用户密码。 - 安装前,普通用户不需要存在。它将由 3scale 初始化脚本创建。
-
在连接字符串中为常规用户提供所需的用户名和密码,例如:
oracle-enhanced://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}
in thesystem-database
secret 的URL
字段中。 -
常规 Oracle 数据库的非系统用户的密码必须是唯一的,且与
SYSTEM
用户密码不匹配。 如果具有指定用户名的用户已存在,3scale 初始化脚本将使用以下命令更新密码:
ALTER USER {DB_USER} IDENTIFIED BY {DB_PASSWORD}
如果参数
PASSWORD_REUSE_TIME
andPASSWORD_REUSE_MAX
被设置为限制重新使用相同的密码,则数据库配置可能会阻止这个命令成功完成。
-
在
手动设置常规数据库用户:
-
您不需要在
system-database
secret 中提供ORACLE_SYSTEM_PASSWORD
。 -
在 3scale 安装前,在
system-database
secret 的URL
字段中指定的连接字符串中指定的常规数据库用户(而不是SYSTEM
)。 - 用于安装的普通用户必须具有上面列出的所有权限。
-
您不需要在
其他资源
- 有关创建新数据库的详情,请查看 Oracle 数据库 19c 文档。
1.6.2. 构建自定义系统容器镜像
流程
从 GitHub 存储库下载 3scale OpenShift 模板并提取存档:
tar -xzf 3scale-2.14.0-GA.tar.gz
在 Instant Client Downloads 页面中下载:
- 客户端:可以是 basic-lite 或 basic。
- ODBC driver。
Oracle 数据库 19c 的 SDK。
- 对于 3scale,使用 Instant Client Downloads for Linux x86-64 (64-bit)
- 对于 ppc64le 和 3scale,使用 Oracle Instant Client Downloads for Linux on Power Little Endian (64-bit)
检查以下 Oracle 软件组件版本的表:
- Oracle Instant Client Package: Basic 或 Basic Light
- Oracle Instant Client Package: SDK
Oracle Instant Client Package: ODBC
表 1.6. 3scale 的 Oracle 19c 示例软件包 Oracle 19c 软件包名称 压缩的文件名 基本的
instantclient-basic-linux.x64-19.8.0.0.0dbru.zip
Basic Light
instantclient-basiclite-linux.x64-19.8.0.0.0dbru.zip
SDK
instantclient-sdk-linux.x64-19.8.0.0.0dbru.zip
ODBC
instantclient-odbc-linux.x64-19.8.0.0.0dbru.zip
表 1.7. Oracle 19c 示例软件包用于 ppc64le 和 3scale Oracle 19c 软件包名称 压缩的文件名 基本的
instantclient-basic-linux.leppc64.c64-19.3.0.0.0dbru.zip
Basic Light
instantclient-basiclite-linux.leppc64.c64-19.3.0.0.0dbru.zip
SDK
instantclient-sdk-linux.leppc64.c64-19.3.0.0.0dbru.zip
ODBC
instantclient-odbc-linux.leppc64.c64-19.3.0.0.0dbru.zip
注意如果本地下载并存储的客户端软件包版本与 3scale 期望不匹配,3scale 将自动下载并使用以下步骤中的相应版本。
-
将 Oracle Database Instant Client Package 文件放在
system-oracle-3scale-2.13.0-GA/oracle-client-files
目录中。 构建基于 Oracle 的自定义系统镜像.镜像标签必须是固定镜像标签,如下例所示:
$ docker build . --tag myregistry.example.com/system-oracle:2.14.0-1
将基于 Oracle 的系统镜像推送到 OCP 集群可访问的容器注册表。此容器 registry 是安装 3scale 解决方案的位置:
$ docker push myregistry.example.com/system-oracle:2.14.0-1
1.6.3. 使用 Operator 安装 3scale API 管理
流程
-
通过使用对应字段创建
system-database
secret,设置 Oracle Database URL 连接字符串和 Oracle Database 系统密码。请参阅为 Oracle 数据库安装外部数据库。 通过创建 APIManager CR 来安装 3scale 解决方案。按照 使用 operator 部署 3scale API 管理 中的说明进行操作。
APIManager CR 必须指定设置为您之前构建的基于 Oracle 的系统的
.spec.system.image
字段:apiVersion: apps.3scale.net/v1alpha1 kind: APIManager metadata: name: example-apimanager spec: imagePullSecrets: - name: threescale-registry-auth - name: custom-registry-auth system: image: "myregistry.example.com/system-oracle:2.14.0-1" externalComponents: system: database: true