4.7. 指定自定义 Init 容器镜像


第 4.1 节 “Operator 如何生成代理配置” 所述,AMQ Broker Operator 使用默认内置初始容器来生成代理配置。要生成配置,初始容器将主自定义资源(CR)实例用于您的部署。您可以在 CR 中指定的 唯一 项目是主代理自定义资源定义(CRD)中公开的项目。

然而,在有些情况下,您需要包含 未在 CRD 中未 公开的配置。在这种情况下,您可以在主 CR 实例中 指定自定义 Init 容器。自定义 Init 容器可以修改或添加到由 Operator 创建的配置中。例如,您可以使用自定义 Init 容器来修改代理日志记录设置。或者,您可以使用自定义 Init 容器在代理安装目录中包含额外的运行时依赖项(即 .jar 文件)。

在构建自定义初始容器镜像时,您必须遵循以下重要准则:

  • 在为自定义镜像创建的构建脚本(例如,Docker Dockerfile 或 Podman Containerfile)中,FROM 指令必须指定 AMQ Broker Operator 内置初始容器作为基础镜像的最新版本。在脚本中包含以下行:

    FROM registry.redhat.io/amq7/amq-broker-init-rhel8:7.10
    Copy to Clipboard Toggle word wrap
  • 自定义镜像必须包含一个名为 post-config.sh 的脚本,此脚本包含在名为 /amq/scripts 的目录中。post-config.sh 脚本是您修改或添加到 Operator 生成的初始配置中。当您指定自定义 Init Container 时,Operator 在使用 CR 实例生成配置,但在启动代理应用程序容器运行 post-config.sh 脚本。
  • 第 4.1.2 节 “代理 Pod 的目录结构” 所述,初始容器使用的安装目录的路径在名为 CONFIG_INSTANCE_DIR 的环境变量中定义。post-config.sh 脚本在引用安装目录时应使用此环境变量名称(例如 :${CONFIG_INSTANCE_DIR}/lib而不是 此变量的实际值(如 /amq/init/config/lib)。
  • 如果要在自定义代理配置中包含其他资源(如 .xml.jar 文件),您必须确保它们已包含在自定义镜像中,并可以被 post-config.sh 脚本访问。

以下流程描述了如何指定自定义初始容器镜像。

先决条件

流程

  1. 开始为代理部署配置自定义资源(CR)实例。

    1. 使用 OpenShift 命令行界面:

      1. 以有权在用于创建部署的项目中部署 CR 的用户身份登录 OpenShift。

        oc login -u <user> -p <password> --server=<host:port>
        Copy to Clipboard Toggle word wrap
      2. 打开名为 broker_activemqartemis_cr.yaml 的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的 deploy/crs 目录中。
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以有权在用于创建部署的项目中部署 CR 的用户登录到控制台。
      2. 根据主代理 CRD 启动一个新的 CR 实例。在左侧窗格中,单击 Administration Custom Resource Definitions
      3. 单击 ActiveMQArtemis CRD。
      4. 实例 选项卡。
      5. 单击 Create ActiveMQArtemis

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

    对于基本的代理部署,配置可能类似以下示例。

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
    Copy to Clipboard Toggle word wrap

    观察到 broker_activemqartemis_cr.yaml 示例 CR 文件中,image 属性设为 占位符 默认值。此值表示默认情况下,image 属性不指定用于部署的代理容器镜像。要了解 Operator 如何确定要使用的适当代理容器镜像,请参阅 第 2.4 节 “Operator 如何选择容器镜像”

  2. 在 CR 的 deploymentPlan 部分中,添加 initImage 属性。

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        initImage:
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
    Copy to Clipboard Toggle word wrap
  3. initImage 属性的值设置为自定义初始容器镜像的 URL。

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        initImage: <custom_init_container_image_url>
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
    Copy to Clipboard Toggle word wrap
    initImage
    指定自定义初始容器镜像的完整 URL,您必须添加到容器 registry 中的存储库中。
  4. 部署 CR 实例。

    1. 使用 OpenShift 命令行界面:

      1. 保存 CR 文件。
      2. 切换到您要在其中创建代理部署的项目。

        $ oc project <project_name>
        Copy to Clipboard Toggle word wrap
      3. 创建 CR 实例。

        $ oc create -f <path/to/custom_resource_instance>.yaml
        Copy to Clipboard Toggle word wrap
    2. 使用 OpenShift Web 控制台:

      1. 配置完 CR 后,点 Create

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat