4.11. 指定自定义初始容器镜像


第 4.1 节 “Operator 如何生成代理配置” 所述,AMQ Broker Operator 使用默认的内置 Init Container 来生成代理配置。要生成配置,Init 容器为您的部署使用主自定义资源(CR)实例。在某些情况下,您可能需要使用自定义初始容器。例如,如果您要在代理安装目录中包含额外的运行时依赖项 .jar 文件。

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

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

    FROM registry.redhat.io/amq7/amq-broker-init-rhel8:7.13
    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 的目录结构” 所述,Init 容器使用的安装目录的路径在名为 CONFIG_INSTANCE_DIR 的环境变量中定义。在引用安装目录(例如 ${CONFIG_INSTANCE_DIR}/lib而不是 此变量的实际值(例如 /amq/init/config/lib)时,post-config.sh 脚本应使用此环境变量名称。
  • 如果要在自定义代理配置中包含其他资源(如 .xml.jar 文件),您必须确保它们包含在自定义镜像中,并可以被 post-config.sh 脚本访问。

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

先决条件

流程

  1. 编辑代理部署的 CR 实例。

    1. 使用 OpenShift 命令行界面:

      1. 以有权在代理部署的项目中部署 CR 的用户身份登录 OpenShift Container Platform。
      2. 编辑部署的 CR。

         oc edit ActiveMQArtemis <CR instance name> -n <namespace>
        Copy to Clipboard Toggle word wrap
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以有权在代理部署的项目中部署 CR 的用户身份登录 OpenShift Container Platform。
      2. 在左侧窗格中,单击 Administration Custom Resource Definitions
      3. 单击 ActiveMQArtemis CRD。
      4. 实例 选项卡。
      5. 点代理部署的实例。
      6. YAML 标签。

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

  2. 在 CR 的 deploymentPlan 部分中,添加一个 initImage 属性,并将值设置为自定义 Init 容器镜像的 URL。

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
    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 中提供。

    重要

    如果 CR 具有在 spec.deploymentPlan.initImage 属性中指定的自定义 init 容器镜像,红帽建议您在 spec.deploymentPlan.image 属性中指定相应代理容器镜像的 URL,以防止自动升级代理镜像。如果您没有在 spec.deploymentPlan.image 属性中指定特定代理容器镜像的 URL,则代理镜像可以被自动升级。代理镜像升级后,代理和自定义 init 容器镜像的版本有所不同,这可能会阻止代理运行。

    如果您有一个具有自定义 init 容器的工作部署,您可以防止进一步升级代理容器镜像,以消除较新代理镜像无法使用自定义 init 容器镜像的风险。有关防止升级到代理镜像的更多信息,请参阅 第 6.6.2 节 “使用镜像 URL 限制镜像自动升级”

  3. 保存 CR。

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat