$ oc patch OperatorHub cluster --type json \
-p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
对于断开连接环境中的 OpenShift Container Platform 集群,Operator Lifecycle Manager (OLM) 默认情况下无法访问托管在远程注册表上的 Red Hat 提供的 OperatorHub 源,因为这些远程源需要完全的互联网连接。
但是,如果您有一个具有完全互联网访问权限的工作站,则作为集群管理员,您仍然可以启用集群以在断开连接的环境中使用 OLM。该工作站需要完全的互联网访问权限才能提取远程 OperatorHub 内容,用于准备远程源的本地镜像,并将内容推送到镜像注册表。
镜像注册表可以位于堡垒主机上(需要连接到您的工作站和断开连接的集群),或者位于完全断开连接或“隔离”的主机上(需要可移动介质才能将镜像内容物理移动到断开连接的环境)。
本指南描述了在断开连接的环境中启用 OLM 所需的以下流程
禁用 OLM 的默认远程 OperatorHub 源。
使用具有完全互联网访问权限的工作站来创建和推送 OperatorHub 内容的本地镜像到镜像注册表。
配置 OLM 以从镜像注册表上的本地源安装和管理 Operator,而不是默认的远程源。
在断开连接的环境中启用 OLM 后,您可以继续使用不受限制的工作站来保持本地 OperatorHub 源更新,因为会发布更新版本的 Operator。
|
虽然 OLM 可以管理本地源的 Operator,但在断开连接的环境中,给定 Operator 成功运行的能力仍然取决于 Operator 本身是否满足以下条件
您可以在 Red Hat 生态系统目录 上搜索软件,以获取支持在断开模式下运行的 Red Hat Operator 列表,方法是使用以下选项进行筛选
|
您已以具有 `cluster-admin` 权限的用户身份登录到您的 OpenShift Container Platform 集群。
如果您在 IBM Z® 上断开连接的环境中使用 OLM,则必须至少为放置注册表的目录分配 12 GB。
在 OpenShift Container Platform 安装期间,默认情况下为 OperatorHub 配置了源自 Red Hat 和社区项目提供的 Operator 目录。在受限网络环境中,您必须作为集群管理员禁用默认目录。然后,您可以配置 OperatorHub 以使用本地目录源。
通过向 `OperatorHub` 对象添加 `disableAllDefaultSources: true` 来禁用默认目录的源
$ oc patch OperatorHub cluster --type json \
-p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
|
或者,您可以使用 Web 控制台来管理目录源。在**管理** → **集群设置** → **配置** → **OperatorHub** 页面中,单击**源**选项卡,您可以在其中创建、更新、删除、禁用和启用各个源。 |
有关镜像化 Operator 目录以用于断开连接的集群的说明,请参见镜像化 Operator 目录以用于断开连接的集群。
|
从 OpenShift Container Platform 4.11 开始,默认的 Red Hat 提供的 Operator 目录使用基于文件的目录格式发布。OpenShift Container Platform 4.6 到 4.10 的默认 Red Hat 提供的 Operator 目录使用已弃用的 SQLite 数据库格式发布。 与 SQLite 数据库格式相关的 许多用于处理 SQLite 数据库格式的 |
向 OpenShift Container Platform 集群添加目录源可以使用户发现和安装 Operators。集群管理员可以创建一个引用索引镜像的 CatalogSource 对象。OperatorHub 使用目录源来填充用户界面。
|
或者,您可以使用 Web 控制台来管理目录源。在**管理** → **集群设置** → **配置** → **OperatorHub** 页面中,单击**源**选项卡,您可以在其中创建、更新、删除、禁用和启用各个源。 |
您已构建并推送了一个索引镜像到注册表。
您可以作为具有 cluster-admin 角色的用户访问集群。
创建一个引用您的索引镜像的 CatalogSource 对象。如果您使用 oc adm catalog mirror 命令将您的目录镜像到目标注册表,您可以使用 manifests 目录中生成的 catalogSource.yaml 文件作为起点。
根据您的规格修改以下内容,并将其保存为 catalogSource.yaml 文件
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: my-operator-catalog (1)
namespace: openshift-marketplace (2)
spec:
sourceType: grpc
grpcPodConfig:
securityContextConfig: <security_mode> (3)
image: <registry>/<namespace>/redhat-operator-index:v4.17 (4)
displayName: My Operator Catalog
publisher: <publisher_name> (5)
updateStrategy:
registryPoll: (6)
interval: 30m
| 1 | 如果您在上传到注册表之前将内容镜像到本地文件,请删除 metadata.name 字段中的任何反斜杠 (/) 字符,以避免在创建对象时出现“无效资源名称”错误。 |
| 2 | 如果您希望目录源对所有命名空间中的用户全局可用,请指定 openshift-marketplace 命名空间。否则,您可以为目录指定不同的命名空间,使其仅在该命名空间中可用。 |
| 3 | 指定 legacy 或 restricted 的值。如果未设置该字段,则默认值为 legacy。在将来的 OpenShift Container Platform 版本中,计划将默认值设置为 restricted。如果您的目录无法在 restricted 权限下运行,建议您手动将此字段设置为 legacy。 |
| 4 | 指定您的索引镜像。如果您在镜像名称后指定一个标签,例如 :v4.17,则目录源 pod 将使用 Always 的镜像拉取策略,这意味着 pod 始终会在启动容器之前拉取镜像。如果您指定一个摘要,例如 @sha256:<id>,则镜像拉取策略为 IfNotPresent,这意味着 pod 仅在节点上不存在镜像时才拉取镜像。 |
| 5 | 指定发布目录的您的姓名或组织名称。 |
| 6 | 目录源可以自动检查新版本以保持最新。 |
使用该文件创建 CatalogSource 对象
$ oc apply -f catalogSource.yaml
验证以下资源是否已成功创建。
检查 pod
$ oc get pods -n openshift-marketplace
NAME READY STATUS RESTARTS AGE
my-operator-catalog-6njx6 1/1 Running 0 28s
marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h
检查目录源
$ oc get catalogsource -n openshift-marketplace
NAME DISPLAY TYPE PUBLISHER AGE
my-operator-catalog My Operator Catalog grpc 5s
检查包清单
$ oc get packagemanifest -n openshift-marketplace
NAME CATALOG AGE
jaeger-product My Operator Catalog 93s
您现在可以从 OpenShift Container Platform Web 控制台上的 **OperatorHub** 页面安装 Operators。