第 2 章 配置 Cluster Samples Operator
Cluster Samples Operator 运行在 openshift
命名空间中,用于安装和更新基于 Red Hat Enterprise Linux (RHEL) 的 OpenShift Container Platform 镜像流和 OpenShift Container Platform 模板。
从 OpenShift Container Platform 4.16 开始,Cluster Samples Operator 已被弃用。Cluster Samples Operator 不会将新的模板、示例或非 Source-to-Image (Non-S2I)镜像流添加到 Cluster Samples Operator 中。但是,现有 S2I 构建器镜像流和模板将继续接收更新,直到以后的发行版本中删除了 Cluster Samples Operator。S2I 镜像流和模板包括:
- Ruby
- Python
- Node.js
- Perl
- PHP
- HTTPD
- Nginx
- EAP
- Java
- Webserver
- .NET
- Go
- Cluster Samples Operator 将停止管理和提供对非 S2I 示例(镜像流和模板)的支持。您可以联系镜像流或模板所有者以获取任何要求和将来的计划。此外,请参阅托管镜像流或模板的存储库列表。
2.1. 了解 Cluster Samples Operator
在安装过程中,Operator 会为自己创建默认配置对象,然后创建示例镜像流和模板,包括快速启动模板。
为便于从需要凭证的其他 registry 中导入镜像流,集群管理员可在镜像导入所需的 openshift
命名空间中创建包含 Docker config.json
文件内容的额外 secret。
Cluster Samples Operator 配置是一个集群范围的资源,其部署包含在 openshift-cluster-samples-operator
命名空间中。
Cluster Samples Operator 的镜像包含关联的 OpenShift Container Platform 发行版本的镜像流和模板定义。在创建或更新每个示例时,Cluster Sample Operator 包含一个注解(annotation),用于注明 OpenShift Container Platform 的版本。Operator 使用此注解来确保每个示例与发行版本匹配。清单(inventory)以外的示例会与跳过的示例一样被忽略。对任何由 Operator 管理的示例进行的修改(版本注解被修改或删除),都将会被自动恢复。
Jenkins 镜像实际上自安装后便已是镜像有效负载的一部分,并直接标记(tag)到镜像流中。
Cluster Samples Operator 配置资源包含一个终结器(finalizer),它会在删除时清除以下内容:
- Operator 管理的镜像流。
- Operator 管理的模板。
- Operator 生成的配置资源。
- 集群状态资源。
删除样本资源后,Samples Operator 会使用默认配置重新创建资源。
2.1.1. Cluster Samples Operator 使用管理状态
Cluster Samples Operator 默认配置为 Managed
,或者配置了全局代理。在 Managed
状态下,Cluster Samples Operator 会主动管理其资源并保持组件的活跃状态,以便从 registry 中拉取示例镜像流和镜像,并确保安装了必要的示例模板。
在某些情况下,Cluster Samples Operator 会将自身引导为 Removed
,包括:
- 如果 Cluster Samples Operator 在全新安装后初始启动时三分钟后仍无法访问 registry.redhat.io。
- 如果 Cluster Samples Operator 检测到它位于 IPv6 网络中。
-
镜像控制器配置参数 阻止使用默认镜像 registry 或通过
samplesRegistry
设置 指定的镜像 registry 创建镜像流。
对于 OpenShift Container Platform,默认的镜像 registry 是 registry.redhat.io
。
但是,如果 Cluster Samples Operator 检测到它位于 IPv6 网络上,并且配置了 OpenShift Container Platform 全局代理,则 IPv6 检查会替换所有检查。因此,Cluster Samples Operator 会将自身引导为 Removed
。
registry.redhat.io目前不支持 IPv6 安装。Cluster Samples Operator 从 registry.redhat.io 中提取大多数示例镜像流和镜像。
2.1.1.1. 受限网络安装
当无法访问 registry.redhat.io
时,当网络限制已存在时,Boostrapping 为 Removed
有助于进行受限网络安装。当网络访问受限时,Bootstrapping 为 Removed
可让集群管理员有更多时间决定是否需要样本,因为 Cluster Samples Operator 不提交当管理状态设置为 Removed
时示例镜像流导入失败的警报。当 Cluster Samples Operator 启动为 Managed
并尝试安装示例镜像流时,它会在安装失败时在初始安装后 2 小时启动警报。
2.1.1.2. 使用初始网络访问受限网络安装
当一个集群旨在作为受限网络或断开连接而安装的集群,如果其存在网络连接,则 Cluster Samples Operator 会从 registry.redhat.io
中安装内容,因为可以访问它。如果您希望 Cluster Samples Operator 仍然引导为 Removed
,以便延迟样本安装,直到您决定了需要安装哪个样本、如何设置镜像等,请按照有关使用带有备用 registry 以及自定义节点(均在 additional resources 部分中链接)的 Samples Operator 的说明来覆盖 Cluster Samples Operator 默认配置,以便最初以 Removed
的形式出现。
您必须将以下额外 YAML 文件放到由 openshift-install create manifest
创建的 openshift
目录中:
带有 managementState: Removed
的 Cluster Samples Operator YAML 文件示例:
apiVersion: samples.operator.openshift.io/v1 kind: Config metadata: name: cluster spec: architectures: - x86_64 managementState: Removed
2.1.2. Cluster Samples Operator 跟踪和错误恢复镜像流导入
在创建或更新示例镜像流后,Cluster Samples Operator 会监控每个镜像流标签镜像导入的进度。
如果导入失败,Cluster Samples Operator 会通过镜像流镜像导入 API(与 oc import-image
命令使用的 API 相同)。重新尝试导入大约每 15 分钟进行一次,直到导入成功,或者 Cluster Samples Operator 的配置已更改为镜像流被添加到 skippedImagestreams
列表中,或者管理状态变为 Removed
。
其他资源
-
如果在安装过程中删除了 Cluster Samples Operator,您可以使用带有备用 registry 的 Cluster Samples Operator,以便导入内容,然后将 Cluster Samples Operator 设置为
Managed
来获取示例。 确保在带有初始网络访问权限的受限网络安装中将 Cluster Samples Operator 引导为
Removed
,直到您决定需要哪些样本,请按照自定义节点来覆盖 Cluster Samples Operator 默认配置,最初以Removed
的形式出现。- 要在断开连接的环境中托管示例,请按照使用带有备用 registry 的 Cluster Samples Operator 的说明进行操作。
2.1.3. 协助镜像的 Cluster Samples Operator
在安装过程中,OpenShift Container Platform 在 openshift-cluster-samples-operator
命名空间中创建一个名为 imagestreamtag-to-image
的配置映射。imagestreamtag-to-image
配置映射包含每个镜像流标签的条目(填充镜像)。
配置映射中 data 字段中每个条目的键格式为 <image_stream_name>_<image_stream_tag_name>
。
在断开连接的 OpenShift Container Platform 安装过程中,Cluster Samples Operator 的状态被设置为 Removed
。如果您将其改为 Managed
,它会安装示例。
在网络限制或断开连接的环境中使用示例可能需要通过网络访问服务。某些示例服务包括:Github、Maven Central、npm、RubyGems、PyPi 等。这可能需要执行额外的步骤,让集群 samples operator 对象能够访问它们所需的服务。
您可以使用此配置映射作为导入镜像流所需的镜像的引用。
-
在 Cluster Samples Operator 被设置为
Removed
时,您可以创建镜像的 registry,或决定您要使用哪些现有镜像 registry。 - 使用新的配置映射作为指南来镜像您要镜像的 registry 的示例。
-
将没有镜像的任何镜像流添加到 Cluster Samples Operator 配置对象的
skippedImagestreams
列表中。 -
将 Cluster Samples Operator 配置对象的
samplesRegistry
设置为已镜像的 registry。 -
然后,将 Cluster Samples Operator 设置为
Managed
来安装您已镜像的镜像流。
如需了解详细信息,请参阅使用带有备用或镜像 registry 的 Cluster Samples Operator 镜像流。