2.4. Operator 如何选择容器镜像
当您根据 Operator 的 最少 版本 7.8.5-opr-2 为代理部署创建自定义资源(CR)实例时,您不需要 在 CR 中明确指定代理或初始容器镜像名称。默认情况下,如果部署 CR 且没有明确指定容器镜像值,Operator 会自动选择要使用的适当容器镜像。
如果使用 OpenShift 命令行界面安装 Operator,Operator 安装存档包含一个名为 broker_activemqartis_cr.yaml 的示例 CR 文件。在示例 CR 中,包含 spec.deploymentPlan.image 属性,并设置为其 占位符 的默认值。这个值表示,在部署 CR 之前,Operator 不会选择代理容器镜像。
broker_activemqartis_cr.yaml 示例 CR 文件 中不包含 属性(指定 Init 容器镜像)。如果您没有在 CR 中明确包含 spec.deploymentPlan. initImagespec.deploymentPlan.initImage 属性并指定值,Operator 会选择要在部署 CR 时使用的适当内置初始容器镜像。
本节介绍了 Operator 如何选择这些镜像。
要选择 broker 和 Init Container 镜像,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.8.5)。
备注:对于 IBM Z 和 IBM Power Systems,7.8.1 和 7.8.2 是 spec.version 的唯一有效值。
然后,Operator 会检测您的容器平台。AMQ Broker Operator 可以在以下容器平台中运行:
- OpenShift Container Platform (x86_64)
- IBM Z 上的 OpenShift Container Platform(s390x)
- IBM Power Systems(ppc64le)上的 OpenShift Container Platform
根据 AMQ Broker 和容器平台的版本,Operator 会引用 operator.yaml 配置文件中的两组环境变量。这些环境变量为 AMQ Broker 的不同版本指定代理和初始容器镜像,如以下子部分所述。
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_787
#value: registry.redhat.io/amq7/amq-broker:7.8-33
value: registry.redhat.io/amq7/amq-broker@sha256:4d60775cd384067147ab105f41855b5a7af855c4d9cbef1d4dea566cbe214558
因此,基于 AMQ Broker 版本和容器平台,Operator 会确定适用的环境变量名称。在启动代理容器时,Operator 会使用对应的镜像值。
在 operator.yaml 文件中,Operator 使用一个由 安全 Hash Algorithm (SHA)值表示的镜像。注释行以数字符号(#)符号开头,表示 SHA 值对应于特定的容器镜像标签。