4.4. 添加第三方 JAR 文件
您可以在运行时将第三方 JAR 文件提供给 AMQ Broker。例如,如果您希望代理将消息存储在 JDBC 数据库中,您可以将代理配置为加载数据库所需的第三方 JAR 文件。
您必须将 Operator 配置为在每个代理 pod 上挂载的卷上提供第三方 JAR 文件,并将 JAR 文件的卷路径添加到代理的 Java 类路径中。
如果 JAR 文件的大小小于 1 MB,您可以将 JAR 文件添加到 secret 或 configmap 中,并将 Operator 配置为将 JAR 文件挂载到每个代理 Pod 上。如果 JAR 文件大于 secret 和 configmap 的 1 MB 限制,您可以将 Operator 配置为在每个代理 pod 上挂载共享卷,并将 JAR 文件下载到该卷。
4.4.1. 使用 secret 或配置映射在代理 pod 上挂载 JAR 文件 复制链接链接已复制到粘贴板!
如果 JAR 文件小于 1 MB,您可以使用 secret 或配置映射来在每个代理 pod 上挂载第三方 JAR 文件。您还必须修改代理的 Java 类路径,以便在运行时从挂载的位置加载 JAR 文件。
以下流程假设您使用 secret 来挂载 JAR 文件。
流程
使用
oc create secret
命令创建包含您要添加的第三方 JAR 文件的 secret。例如:oc create secret generic log4j-template --from-file=log4j-layout-template-json-2.22.1.jar
oc create secret generic log4j-template --from-file=log4j-layout-template-json-2.22.1.jar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关如何创建 secret 的更多信息,请参阅 Kubernetes 文档中的 Secret。
编辑代理部署的 CR,并将 Operator 配置为将包含第三方 JAR 文件的 secret 挂载到每个代理 pod。例如,以下配置会挂载一个名为
log4j-template
的机密。Copy to Clipboard Copied! Toggle word wrap Toggle overflow JAR 文件挂载到每个代理 Pod 上的
/amq/extra/secrets/secret 名称
目录中。例如,/amq/extra/secrets/postgresql-driver/log4j-template.jar
。创建
ARTEMIS_EXTRA_LIBS
环境变量来扩展代理的 Java 类路径,以便代理从每个 pod 上挂载的目录加载 JAR 文件。例如:spec: ... env: - name: ARTEMIS_EXTRA_LIBS value: /amq/extra/secrets/log4j-template
spec: ... env: - name: ARTEMIS_EXTRA_LIBS value: /amq/extra/secrets/log4j-template
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 CR。
4.4.2. 将 JAR 文件下载到每个代理 pod 上的卷 复制链接链接已复制到粘贴板!
如果 JAR 文件大于 1 MB,则无法使用 secret 或配置映射将 JAR 文件挂载到每个代理 pod。相反,您可以将 Operator 配置为将 JAR 文件下载到 Operator 在每个代理 pod 上挂载的持久共享卷。
先决条件
持久性卷可用于挂载到每个代理 pod。
流程
-
编辑用于代理部署的
ActiveMQArtemis
CR。 在 broker CR 中,使用
extraVolumes
和extraVolumeMounts
属性来添加持久性卷,并在每个代理 pod 上挂载卷。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
resourceTemplates
属性自定义部署的 StatefulSet 资源。在自定义过程中,使用 init 容器挂载您在每个 Pod 上创建的extra-volume
卷,并将 JAR 文件下载到卷。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在示例中,如果该文件尚未在卷上,使用 curl 镜像将
mysql-connector.jar
文件下载到卷的挂载路径/opt/extra-lib
。创建
ARTEMIS_EXTRA_LIBS
环境变量来扩展代理的 Java 类路径,以便代理从共享卷加载 JAR 文件。例如:spec: ... env: - name: ARTEMIS_EXTRA_LIBS value: /opt/extra-lib
spec: ... env: - name: ARTEMIS_EXTRA_LIBS value: /opt/extra-lib
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存 CR。