2.4. Operator 如何选择容器镜像
为代理部署创建自定义资源 (CR) 实例时,您不需要在 CR 中明确指定代理或初始容器镜像名称。默认情况下,如果您部署 CR 且没有指定容器镜像值,Operator 会自动选择要使用的适当容器镜像。
如果使用 OpenShift 命令行界面安装 Operator,Operator 安装存档包括一个示例 CR 文件,名为 broker_activemqartemis_cr.yaml。在示例 CR 中,包含 spec.deploymentPlan.image 属性,并将其默认值设置为 placeholder。此值表示,在部署 CR 前,Operator 不会选择代理容器镜像。
spec.deploymentPlan.initImage 属性(用于指定 Init 容器镜像) 没有包括在 broker_activemqartemis_cr.yaml 示例 CR 文件中。如果您没有在 CR 中明确包含 spec.deploymentPlan.initImage 属性并指定值,Operator 会选择一个适当的内置初始容器镜像,以便在部署 CR 时使用。
本节中介绍了 Operator 选择这些镜像的方式。
要选择代理和初始容器镜像,Operator 首先决定镜像应与之对应的 AMQ Broker 版本。Operator 决定版本,如下所示:
-
如果主 CR 中的
spec.upgrades.enabled属性已设置为true,并且spec.version属性指定7.7.0,7.8.0,7.8.1, 或7.8.2,则 Operator 会使用指定的版本。 -
如果
spec.upgrades.enabled没有 设为true,或spec.version设置为早于7.7.0的 AMQ Broker 版本,Operator 将 使用最新版本的 AMQ Broker (即7.10.7)。
然后,Operator 会检测您的容器平台。AMQ Broker Operator 可以在以下容器平台中运行:
- OpenShift Container Platform (x86_64)
- IBM Z (s390x) 上的 OpenShift Container Platform
- IBM Power Systems (ppc64le) 上的 OpenShift Container Platform
然后,Operator 会根据 AMQ Broker 和容器平台的版本,在 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_7100
#value: registry.redhat.io/amq7/amq-broker-rhel8:7.10
value: registry.redhat.io/amq7/amq-broker-rhel8@sha256:982ba18be1ac285722bc0ca8e85d2a42b8b844ab840b01425e79e3eeee6ee5b9
因此,根据 AMQ Broker 版本和容器平台,Operator 会决定适用的环境变量名称。Operator 在启动代理容器时使用对应的镜像值。
在 operator.yaml 文件中,Operator 使用一个由 Secure Hash Algorithm (SHA) 值代表的镜像。注释行以数字符号 (#) 符号开头,注明 SHA 值对应于特定的容器镜像标签。
2.4.2. Init 容器镜像的环境变量 复制链接链接已复制到粘贴板!
Init 容器镜像的 operator.yaml 配置文件中包含的环境变量有以下命名约定:
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_<AMQ_Broker_version_identifier>
下面列出了特定 AMQ Broker 版本的环境变量名称。
-
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_782 -
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_790 -
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_7100
每个环境变量的值都指定红帽提供的初始容器镜像。例如:
- name: RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_7100
#value: registry.redhat.io/amq7/amq-broker-init-rhel8:0.4-21
value: registry.redhat.io/amq7/amq-broker-init-rhel8@sha256:f37f98c809c6f29a83e3d5a3ac4494e28efe9b25d33c54f533c6a08662244622
因此,Operator 基于 AMQ Broker 版本,决定适用的环境变量名称。Operator 在启动初始容器时使用对应的镜像值。
如示例所示,Operator 使用一个由 Secure Hash Algorithm (SHA) 值表示的镜像。注释行以数字符号 (#) 符号开头,注明 SHA 值对应于特定的容器镜像标签。注意,对应的容器镜像标签为 0.4-21 的形式,因此不是浮动标签。这意味着 Operator 使用的容器镜像会保持固定。当它可以从红帽获得时,Operator 不会自动拉取并使用新的 micro 镜像版本(为 0.4-21-n,其中 n 是最新的 micro 版本)。
Init 容器镜像的 operator.yaml 配置文件中包含的环境变量有以下命名约定:
- OpenShift Container Platform
-
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_<AMQ_Broker_version_identifier> - IBM Z 上的 OpenShift Container Platform
-
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_s390x_<AMQ_Broker_version_identifier> - IBM Power 系统上的 OpenShift Container Platform
-
RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_ppc64le_<AMQ_Broker_version_identifier>
表中会显示每个受支持的容器平台和特定 AMQ Broker 版本的环境变量名称。
| 容器平台 | 环境变量名称 |
|---|---|
| OpenShift Container Platform |
|
| IBM Z 上的 OpenShift Container Platform |
|
| IBM Power 系统上的 OpenShift Container Platform |
|
每个环境变量的值都指定红帽提供的初始容器镜像。例如:
- name: RELATED_IMAGE_ActiveMQ_Artemis_Broker_Init_7100
#value: registry.redhat.io/amq7/amq-broker-init-rhel8:0.4-21-1
value: registry.redhat.io/amq7/amq-broker-init-rhel8@sha256:f37f98c809c6f29a83e3d5a3ac4494e28efe9b25d33c54f533c6a08662244622
因此,根据 AMQ Broker 版本和容器平台,Operator 会决定适用的环境变量名称。Operator 在启动初始容器时使用对应的镜像值。
如示例所示,Operator 使用一个由 Secure Hash Algorithm (SHA) 值表示的镜像。注释行以数字符号 (#) 符号开头,注明 SHA 值对应于特定的容器镜像标签。注意,对应的容器镜像标签为 0.4-21 的形式,因此不是浮动标签。这意味着 Operator 使用的容器镜像会保持固定。当它可以从红帽获得时,Operator 不会自动拉取并使用新的 micro 镜像版本(为 0.4-21-n,其中 n 是最新的 micro 版本)。
其他资源
- 要了解如何使用 AMQ Broker Operator 创建代理部署,请参阅 第 3 章 使用 AMQ Broker Operator 在 OpenShift Container Platform 上部署 AMQ Broker。
- 如需有关 Operator 如何使用初始容器生成代理配置的更多信息,请参阅 第 4.1 节 “Operator 如何生成代理配置”。
- 要了解如何构建和 指定自定义 初始容器镜像,请参阅 第 4.7 节 “指定自定义 Init 容器镜像”。