$ 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。