12.6. 从镜像的 Operator 目录填充 OperatorHub
如果用于断开连接的集群的 Operator 目录的镜像 (mirror),您可以在镜像目录中为 OperatorHub 填充 Operator。您可以使用镜像过程中生成的清单来创建所需的 ImageContentSourcePolicy
和 CatalogSource
对象。
12.6.1. 先决条件
12.6.2. 创建 ImageContentSourcePolicy 对象
将 Operator 目录内容镜像到镜像 registry 后,创建所需的 ImageContentSourcePolicy
(ICSP)对象。ICSP 对象配置节点,以在 Operator 清单中存储的镜像引用和镜像的 registry 间进行转换。
流程
在可以访问断开连接的集群的主机上,运行以下命令指定 manifests 目录中的
imageContentSourcePolicy.yaml
文件来创建 ICSP:$ oc create -f <path/to/manifests/dir>/imageContentSourcePolicy.yaml
其中
<path/to/manifests/dir>
是镜像内容的 manifests 目录的路径。现在,您可以创建一个
CatalogSource
来引用您的镜像索引镜像和 Operator 内容。
12.6.3. 在集群中添加目录源
将目录源添加到 OpenShift Container Platform 集群可为用户发现和安装 Operator。集群管理员可以创建一个 CatalogSource
对象来引用索引镜像。OperatorHub 使用目录源来填充用户界面。
或者,您可以使用 Web 控制台管理目录源。在 Administration → Cluster Settings → Configuration → OperatorHub 页面中,点 Sources 选项卡,您可以在其中创建、更新、删除、禁用和启用单独的源。
先决条件
- 构建并推送索引镜像到 registry。
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
创建一个
CatalogSource
对象来引用索引镜像。如果使用oc adm catalog mirror
命令将目录镜像到目标 registry,您可以使用 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.15 4 displayName: My Operator Catalog publisher: <publisher_name> 5 updateStrategy: registryPoll: 6 interval: 30m
- 1
- 如果您在上传到 registry 前将内容镜像到本地文件,请从
metadata.name
字段中删除任何反斜杠(/
)字符,以避免在创建对象时出现 "invalid resource name" 错误。 - 2
- 如果您希望目录源对所有命名空间中的用户全局可用,请指定
openshift-marketplace
命名空间。否则,您可以指定一个不同的命名空间来对目录进行作用域并只对该命名空间可用。 - 3
- 指定
legacy
或restricted
的值。如果没有设置该字段,则默认值为legacy
。在以后的 OpenShift Container Platform 发行版本中,计划默认值为restricted
。如果您的目录无法使用restricted
权限运行,建议您手动将此字段设置为legacy
。 - 4
- 指定索引镜像。如果您在镜像名称后指定了标签,如
:v4.15
,则目录源 Pod 会使用镜像 pull 策略Always
,这意味着 pod 始终在启动容器前拉取镜像。如果您指定了摘要,如@sha256:<id>
,则镜像拉取策略为IfNotPresent
,这意味着仅在节点上不存在的镜像时才拉取镜像。 - 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 安装 Operator。