8.5. 从镜像的 Operator 目录填充 OperatorHub
如果用于断开连接的集群的 Operator 目录的镜像 (mirror),您可以在镜像目录中为 OperatorHub 填充 Operator。您可以使用镜像过程中生成的清单来创建所需的 ImageContentSourcePolicy
和 CatalogSource
对象。
8.5.1. 先决条件
8.5.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 内容。
8.5.3. 在集群中添加目录源
将目录源添加到 OpenShift Container Platform 集群可为用户发现和安装 Operator。集群管理员可以创建一个 CatalogSource
对象来引用索引镜像。OperatorHub 使用目录源来填充用户界面。
先决条件
- 构建并推送到 registry 的索引镜像。
流程
创建一个
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 image: <registry>/<namespace>/redhat-operator-index:v4.9 3 displayName: My Operator Catalog publisher: <publisher_name> 4 updateStrategy: registryPoll: 5 interval: 30m
使用该文件创建
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。
- 如果您的索引镜像托管在私有 registry 上且需要进行身份验证,请参阅 从私有 registry 访问 Operator 的镜像。
- 如果您希望目录能够使用基于 Kubernetes 版本的镜像标签在集群升级后自动更新索引镜像版本,请参阅自定义目录源的镜像模板。