4.17. 配置没有在自定义资源定义中公开的项目
自定义资源定义(CRD)是您可以修改 AMQ Broker 的配置项目模式。您可以在对应的自定义资源(CR)实例中为 CRD 中的配置项目指定值。Operator 从 CR 实例生成每个代理容器的配置。
您可以通过将项目添加到 brokerProperties
属性,在 CRD 中包含没有在 CRD 中公开的配置项。brokerProperties
属性中包含的项目存储在 secret 中,该 secret 作为代理 Pod 上的属性文件挂载。在启动时,属性文件会在应用 XML 配置后应用到内部 java 配置 bean。
在以下示例中,单个属性应用于配置 bean。
spec: ... brokerProperties: - globalMaxSize=500m ...
在以下示例中,将多个属性应用到嵌套的配置 Bean 集合,以创建一个名为 target
的代理连接,该连接使用另一个代理镜像消息。
spec: ... brokerProperties - "AMQPConnections.target.uri=tcp://<hostname>:<port>" - "AMQPConnections.target.connectionElements.mirror.type=MIRROR" - "AMQPConnections.target.connectionElements.mirror.messageAcknowledgements=true" - "AMQPConnections.target.connectionElements.mirror.queueCreation=true" - "AMQPConnections.target.connectionElements.mirror.queueRemoval=true" ...
使用 brokerProperties
属性提供对在 OpenShift Container Platform 上无法为 AMQ Broker 配置的许多配置项的访问。如果使用不正确,一些属性可能会对部署产生严重后果。在使用此方法配置属性时要谨慎。
流程
编辑部署的 CR。
使用 OpenShift Web 控制台:
输入以下命令:
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
使用 OpenShift Container Platform Web 控制台:
- 以具有特权在项目中为代理部署 CR 的用户登录到控制台。
-
在左侧窗格中,点
。 - 点 Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) operator。
- 点 AMQ Broker 选项卡。
- 单击 ActiveMQArtemis 实例名称的名称。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,供您编辑 CR 实例。
在 CR 的
spec
部分中,添加一个brokerProperties
元素,并以 camel-case 格式添加属性列表。例如:spec: ... brokerProperties: - globalMaxSize=500m - maxDiskUsage=85 ...
- 保存 CR。
(可选)检查配置的状态。
使用 OpenShift 命令行界面:
获取代理的状态条件。
$ oc get activemqartemis -o yaml
使用 OpenShift Web 控制台:
- 导航到代理部署的 CR 的 status 部分。
检查
BrokerPropertiesApplied
状态信息中的reason
字段的值。例如:- lastTransitionTime: "2023-02-06T20:50:01Z" message: "" reason: Applied status: "True" type: BrokerPropertiesApplied
可能的值有:
应用
- OpenShift Container Platform 将更新的 secret 传播到每个代理 Pod 上的属性文件中。
AppliedWithError
-
OpenShift Container Platform 将更新的 secret 传播到每个代理 Pod 上的属性文件中。但是,在
brokerProperties
配置中发现了一个错误。在 CR 的status
部分中,检查message
字段以识别无效属性并在 CR 中修正。 OutOfSync
- OpenShift Container Platform 还没有将更新的 secret 传播到每个代理 Pod 上的属性文件中。当 OpenShift Container Platform 将更新的 secret 传播到每个 Pod 时,状态会被更新。
代理会定期检查配置更改,包括对 Pod 上挂载的属性文件的更新,并在检测到任何更改时重新加载配置。但是,只有在代理启动时(如 JVM 设置)才会对属性进行更新,直到重启代理为止。有关 重新载入哪些属性的更多信息,请参阅配置 AMQ Broker 中的重新加载配置更新。
其它信息
有关您可以在 CR 中的 brokerProperties
元素中配置的属性列表,请参阅配置 AMQ Broker 中的 Broker 属性。