搜索

4.23. 配置不在自定义资源定义中公开的项目

download PDF

自定义资源定义(CRD)是您可以配置项目的模式,您可以修改 AMQ Broker。您可以为对应自定义资源(CR)实例中的 CRD 中的配置项指定值。Operator 从 CR 实例为每个代理容器生成配置。

您可以通过在 brokerProperties 属性中添加项,在 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 无法配置的许多配置项目的访问。如果使用不正确,一些属性可能会对您的部署造成严重后果。使用此方法配置属性时始终谨慎。

流程

  1. 编辑部署的 CR。

    1. 使用 OpenShift Web 控制台:

      1. 输入以下命令:

        oc edit ActiveMQArtemis <CR instance name> -n <namespace>
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以具有特权的用户身份登录控制台,以便在代理部署的项目中部署 CR。
      2. 在左侧窗格中,点 Operators Installed Operator
      3. Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) operator。
      4. AMQ Broker 选项卡。
      5. 单击 ActiveMQArtemis 实例名称的名称。
      6. YAML 标签。

        在控制台中,会打开 YAML 编辑器,供您编辑 CR 实例。

  2. 在 CR 的 spec 部分,添加一个 brokerProperties 元素,并以 camel-case 格式添加属性列表。例如:

    spec:
      ...
      brokerProperties:
      - globalMaxSize=500m
      - maxDiskUsage=85
      ...
  3. 保存 CR。
  4. (可选)检查配置的状态。

    1. 使用 OpenShift 命令行界面:

      1. 获取代理状态条件。

        $ oc get activemqartemis -o yaml
    2. 使用 OpenShift Web 控制台:

      1. 导航到代理部署的 CR 的 status 部分。
    3. 检查 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 中的 Reloading 配置更新

其它信息

有关在 CR 中的 brokerProperties 元素中配置的属性列表,请参阅配置 AMQ Broker 中的 Broker 属性

4.23.1. 隔离 brokerProperties 配置

如果您的 CR 包含 brokerProperties 部分,并且 CR 处于最大大小限制 1MB,您可以在一个或多个 Java 属性文件中隔离 brokerProperties 配置。您可能还想在单独的文件中隔离 brokerProperties 配置,以逻辑方式对 brokerProperties 项进行分组,以便更轻松地维护。

流程

  1. 以 Java 属性格式创建一个文件,其中包含您要应用到代理的 brokerProperties 配置。在属性文件中的单独行中添加每个属性。例如:

    securityRoles.address1.group2.send=true
    securityRoles.address2.group1.consume=true
    securityRoles.address2.group2.createAddress=true
  2. 使用 .properties 扩展保存文件,如 securityRoles.properties
  3. 创建包含您创建的 .properties 文件的 secret 或 configMap。此流程中的剩余步骤假定您创建 secret。

    oc create secret generic address-settings-bp --from-file=securityRoles.properties
    注意

    secret 名称必须具有 -bp 后缀。当 secret 具有 -bp 后缀时,Operator 会将代理配置为搜索在代理 pod 上挂载 secret 的目录中的属性文件。

  4. extraMounts 属性中添加对 secret 的引用,以便 Operator 在每个代理 pod 上挂载 secret 中的属性文件:

    deploymentPlan:
      ...
      extraMounts:
        secrets:
        - "address-settings-bp"
      ...

    Operator 在每个代理 pod 上的 /amq/extra/secrets/ <secretname> 目录中挂载 secret 中的 .properties 文件。

    在启动时,代理会在每个挂载的目录中搜索具有 .properties 扩展名的文件,按字母顺序对文件进行排序,并在文件中应用配置。在属性文件中,代理会根据列出的顺序应用属性。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.