2.4. Operator 如何选择容器镜像

当您根据 Operator 的最低版本 7.9.3-opr-3 为代理部署创建自定义资源(CR)实例时,您不需要 在 CR 中明确指定代理或 Init 容器镜像名称。默认情况下,如果您部署 CR 但没有显式指定容器镜像值,Operator 会自动选择要使用的适当容器镜像。

注意

如果使用 OpenShift 命令行界面安装 Operator,Operator 安装存档包含一个名为 broker_activemqartemis_cr.yaml 的示例 CR 文件。示例 CR 中包含 spec.deploymentPlan.image 属性,并将其设置为其 占位符 默认值。此值表示 Operator 在部署 CR 之前不会选择代理容器镜像。

指定初始容器镜像的 spec.deploymentPlan.initImage 属性 不包括在 broker_activemqartemis_cr.yaml 示例 CR 文件中。如果您没有在 CR 中明确包含 spec.deploymentPlan.initImage 属性并指定了一个值,Operator 会选择部署 CR 时使用的适当内置 Init 容器镜像。

本节介绍了 Operator 如何选择这些镜像。

要选择代理和初始容器镜像,Operator 首先决定镜像应对应的 AMQ Broker 版本。Operator 决定以下版本:

  • 如果主 CR 中的 spec.upgrades.enabled 属性已设置为 true,spec .version 属性指定 7.7.0、78.0、7.8. 1 或 7.8.2,Operator 会使用该指定版本。
  • 如果 spec.upgrades.enabled 没有设置为 true,或者将 spec.version 设置为早于 7.7.0 的 AMQ Broker 版本,Operator 将使用 最新版本的 AMQ Broker(即 7.9.3)。

然后,Operator 会检测容器平台。AMQ Broker Operator 可以在以下容器平台中运行:

  • OpenShift Container Platform (x86_64)
  • IBM Z 上的 OpenShift Container Platform(s390x)
  • IBM Power Systems 上的 OpenShift Container Platform(ppc64le)

根据 AMQ Broker 和容器平台的版本,Operator 会在 operator.yaml 配置文件中引用两组环境变量。这些环境变量集为不同版本的 AMQ Broker 指定代理和 Init 容器镜像,如下小节所述。

2.4.1. 代理容器镜像的环境变量

代理容器镜像的 operator.yaml 配置文件中包含的环境变量具有以下命名约定:

OpenShift Container Platform
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_<AMQ_Broker_version_identifier>
IBM Z 上的 OpenShift Container Platform
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_<AMQ_Broker_version_identifier>_s390x
IBM Power 系统上的 OpenShift Container Platform
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_<AMQ_Broker_version_identifier>_ppc64le

表中显示了每个支持的容器平台和特定 AMQ Broker 版本的环境变量名称。

容器平台环境变量名称

OpenShift Container Platform

  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_781
  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_782
  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_790

IBM Z 上的 OpenShift Container Platform

  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_781_s390x
  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_782_s390x
  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_790_s390x

IBM Power 系统上的 OpenShift Container Platform

  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_781_ppc64le
  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_782_ppc64le
  • RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_790_ppc64le

每个环境变量的值指定红帽提供的代理容器镜像。例如:

- name: RELATED_IMAGE_ActiveMQ_Artemis_Broker_Kubernetes_790
  #value: registry.redhat.io/amq7/amq-broker-rhel8:7.9
  value: registry.redhat.io/amq7/amq-broker-rhel8@sha256:979b59325aa0f34eb05625201beba53fccbb83bd5eb80a89dcb5261ae358138f

因此,Operator 根据 AMQ Broker 版本和容器平台决定适用的环境变量名称。在启动代理容器时,Operator 会使用对应的镜像值。

注意

operator.yaml 文件中,Operator 使用由 Secure Hash Algorithm (SHA)值表示的镜像。注释行以数字符号(#)符号开头,表示 SHA 值与特定的容器镜像标签对应。