10.3. 针对受限网络配置 OperatorHub
集群管理员可以使用自定义 Operator 目录镜像将 OLM 和 OperatorHub 配置为在受限网络环境中使用本地内容。本例中的流程使用之前构建并推送到受支持的 registry 的自定义 redhat-operators
目录镜像。
先决条件
- 具有无限网络访问权限的 Linux 工作站 [1]
- 推送到受支持的 registry 的自定义 Operator 目录镜像
-
oc
版本 4.3.5+ -
podman
1.4.4+ 版 - 访问支持 Docker v2-2 的镜像(mirror)registry
如果您正在使用私有 registry,请将
REG_CREDS
环境变量设置为到 registry 凭证的文件路径。例如,对于podman
CLI:$ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
流程
通过在 spec 中添加
disableAllDefaultSources: true
来禁用默认 OperatorSource:$ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
该操作将禁用在 OpenShift Container Platform 安装期间默认配置的默认 OperatorSource。
oc adm catalog mirror
命令提取自定义 Operator catalog 镜像的内容,以生成镜像(mirror)所需的清单:您可以选择:- 允许该命令的默认行为在生成清单后自动将所有镜像内容镜像到您的镜像 registry 中,或者
-
添加
--manifests-only
标志来只生成镜像所需的清单,但并不实际将镜像内容镜像到 registry。这对检查哪些要镜像(mirror)非常有用。如果您只需要部分内容的话,可以对映射列表做出任何修改。然后,您可以使用该文件与oc image mirror
命令一起,在以后的步骤中镜像修改的镜像列表。
在没有网络访问限制的工作站中,运行以下命令:
$ oc adm catalog mirror \ <registry_host_name>:<port>/olm/redhat-operators:v1 \1 <registry_host_name>:<port> \ [-a ${REG_CREDS}] \2 [--insecure] \3 [--filter-by-os="<os>/<arch>"] \4 [--manifests-only] 5
输出示例
using database path mapping: /:/tmp/190214037 wrote database to /tmp/190214037 using database at: /tmp/190214037/bundles.db 1 ...
- 1
- 命令生成的临时数据库。
在运行命令后,会在当前目录中生成
<image_name>-manifests/
目录以及以下文件:-
用来定义 ImageContentSourcePolicy 对象的
imageContentSourcePolicy.yaml
,它可以将节点配置为在 Operator 清单中存储的镜像(image)引用和镜像 (mirror) 的 registry 间进行转换。 -
mapping.txt
文件,在其中包含所有源镜像,并将它们映射到目标 registry。此文件与oc image mirror
命令兼容,可用于进一步自定义镜像(mirror)配置。
如果您在上一步中使用
--manifests-only
标志,并只想镜像部分内容:将
mapping.txt
文件中的镜像列表改为您的规格。如果您不确定要镜像的镜像子集的名称和版本,请使用以下步骤查找:对
oc adm catalog mirror
命令生成的临时数据库运行sqlite3
工具,以检索与一般搜索查询匹配的镜像列表。输出以后如何编辑mapping.txt
文件的帮助信息。例如,要检索与字符串
clusterlogging.4.3
类似的镜像列表:$ echo "select * from related_image \ where operatorbundle_name like 'clusterlogging.4.3%';" \ | sqlite3 -line /tmp/190214037/bundles.db 1
- 1
- 请参阅
oc adm catalog mirror
命令的输出结果来查找数据库文件的路径。
输出示例
image = registry.redhat.io/openshift4/ose-logging-kibana5@sha256:aa4a8b2a00836d0e28aa6497ad90a3c116f135f382d8211e3c55f34fb36dfe61 operatorbundle_name = clusterlogging.4.3.33-202008111029.p0 image = registry.redhat.io/openshift4/ose-oauth-proxy@sha256:6b4db07f6e6c962fc96473d86c44532c93b146bbefe311d0c348117bf759c506 operatorbundle_name = clusterlogging.4.3.33-202008111029.p0 ...
使用上一步的结果来编辑
mapping.txt
文件,使其只包含您要镜像的镜像子集。例如,您可以使用前面示例输出中的
image
值来找出您的mapping.txt
文件中存在以下匹配行:mapping.txt
中的匹配镜像映射registry.redhat.io/openshift4/ose-logging-kibana5@sha256:aa4a8b2a00836d0e28aa6497ad90a3c116f135f382d8211e3c55f34fb36dfe61=<registry_host_name>:<port>/openshift4-ose-logging-kibana5:a767c8f0 registry.redhat.io/openshift4/ose-oauth-proxy@sha256:6b4db07f6e6c962fc96473d86c44532c93b146bbefe311d0c348117bf759c506=<registry_host_name>:<port>/openshift4-ose-oauth-proxy:3754ea2b
在这个示例中,如果您只想镜像这些 image,可以在
mapping.txt
文件中删除所有其他条目,仅保留上述两行。
在您的没有网络访问限制的工作站中,使用您修改的
mapping.txt
文件,使用oc image mirror
命令将镜像镜像到 registry:$ oc image mirror \ [-a ${REG_CREDS}] \ -f ./redhat-operators-manifests/mapping.txt
应用 ImageContentSourcePolicy:
$ oc apply -f ./redhat-operators-manifests/imageContentSourcePolicy.yaml
创建一个 CatalogSource 对象来引用您的目录镜像。
按照您的规格修改以下内容,并将它保存为
catalogsource.yaml
文件:apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-operator-catalog namespace: openshift-marketplace spec: sourceType: grpc image: <registry_host_name>:<port>/olm/redhat-operators:v1 1 displayName: My Operator Catalog publisher: grpc
- 1
- 指定您的自定义 Operator 目录镜像。
使用该文件创建 CatalogSource 对象:
$ oc create -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
检查 CatalogSource:
$ oc get catalogsource -n openshift-marketplace
输出示例
NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s
检查 PackageManifest:
$ oc get packagemanifest -n openshift-marketplace
输出示例
NAME CATALOG AGE etcd My Operator Catalog 34s
现在,您可在受限网络 OpenShift Container Platform 集群的 web 控制台中,通过 OperatorHub 安装 Operator。
其他资源