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 |
|
IBM Z 上的 OpenShift Container Platform |
|
IBM Power 系统上的 OpenShift Container Platform |
|
每个环境变量的值指定红帽提供的代理容器镜像。例如:
- 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 值与特定的容器镜像标签对应。