1.4. 在断开连接的环境中安装多集群全局 hub
如果集群位于受限网络中,您可以在断开连接的环境中部署 multicluster global hub operator。
需要的访问权限:集群管理员
1.4.1. 先决条件
在断开连接的环境中安装多集群全局 hub 前,您必须满足以下要求:
- 镜像 registry 和堡垒主机必须可以同时访问互联网和您的镜像 registry。
- 在集群上安装 Operator Lifecycle Manager。请参阅 Operator Lifecycle Manager (OLM)。
- 安装 Red Hat Advanced Cluster Management for Kubernetes。
安装以下命令行界面:
- OpenShift Container Platform 命令行。请参阅 OpenShift Container Platform CLI 入门。
-
opm
命令行。请参阅安装 opm CLI。 -
oc-mirror
插件。请参阅使用 oc-plugin 为断开连接的安装镜像镜像。
1.4.2. 配置镜像 registry
在断开连接的环境中安装多集群全局 hub 涉及使用本地镜像 registry。此时假设您已在 OpenShift Container Platform 集群安装过程中设置了镜像 registry。
完成以下步骤,为多集群全局 hub 置备镜像 registry:
1.4.2.1. 使用 oc-mirror 插件在镜像目录中创建 operator 软件包
红帽在 Red Hat operator 目录中提供多集群全局 hub 和 AMQ Streams operator,由 registry.redhat.io/redhat/redhat-operator-index
索引镜像提供。当您准备此目录索引镜像的镜像时,您可以选择将镜像整个目录作为红帽提供的镜像,或者镜像只包含您要使用的 Operator 软件包的子集。
如果您要创建完整镜像目录,则不需要特别考虑安装多集群全局 hub 和 AMQ Streams 所需的所有软件包。但是,如果您要创建部分或过滤了镜像目录,您需要为其识别要包含的特定软件包,则必须在列表中包含 multicluster-global-hub-operator-rh
和 amq-streams
软件包名称。
完成以下步骤以创建 multicluster-global-hub-operator-rh
和 amq-streams
软件包的本地镜像 registry:
创建
ImageSetConfiguration
YAML 文件来配置并添加 Operator 镜像。您的 YAML 文件可能类似以下内容,使用当前版本替换4.x
:kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 storageConfig: registry: imageURL: myregistry.example.com:5000/mirror/oc-mirror-metadata mirror: platform: channels: - name: stable-4.x type: ocp operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.13 packages: - name: multicluster-global-hub-operator-rh - name: amq-streams additionalImages: [] helm: {}
使用以下命令将镜像直接设置为目标镜像 registry:
oc mirror --config=./imageset-config.yaml docker://myregistry.example.com:5000
- 镜像在完全断开连接的环境中设置的镜像。如需了解更多详细信息 ,请参阅为断开连接的安装镜像镜像。
1.4.2.2. 将 registry 和目录添加到断开连接的集群中
要使您的镜像 registry 和目录在断开连接的集群中可用。完成以下步骤:
禁用 Operator Hub 的默认目录源。运行以下命令以更新
OperatorHub
资源:oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
- 通过完成镜像 Operator 目录的步骤来 镜像 Operator 目录。
将镜像目录的
CatalogSource
资源添加到openshift-marketplace
命名空间中。您的CatalogSource
YAML 文件可能类似以下示例:apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-mirror-catalog-source namespace: openshift-marketplace spec: image: myregistry.example.com:5000/mirror/my-operator-index:v4.13 sourceType: grpc secrets: - <global-hub-secret>
-
注: 记录
metadata.name
字段的值。
-
注: 记录
- 保存更新的文件。
通过查询可用的
PackageManifest
资源,验证所需的软件包是否可以从断开连接的集群中可用。运行以下命令:oc -n openshift-marketplace get packagemanifests
显示的列表应包含显示
multicluster-global-hub-operator-rh
和amq-streams
软件包由镜像目录的目录源提供的条目:
1.4.3. 配置镜像 registry
要让集群从本地镜像 registry 获取 multicluster global hub operator 的容器镜像,而不是从互联网托管的 registry 中配置 ImageContentSourcePolicy
资源,以将镜像引用重定向到您的镜像 registry。ImageContentSourcePolicy
仅支持带有 镜像摘要 的镜像镜像。
如果您使用 oc adm catalog mirror
命令镜像目录,所需的镜像内容源策略配置位于由该命令创建的 manifests-
目录中的 imageContentSourcePolicy.yaml
文件中。
如果您使用 oc-mirror
插件来镜像目录,则 imageContentSourcePolicy.yaml
文件位于由 oc-mirror-workspace/results-
目录中创建的 oc-mirror
-workspace/results- 目录中。
在这两种情况下,您可以使用 oc apply
或 oc replace 命令将策略应用到断开连接的命令中,如
oc replace
-f ./<path>/imageContentSourcePolicy.yaml
所需的镜像内容源策略语句会根据您创建镜像 registry 的方式而有所不同,但与以下示例类似:
apiVersion: operator.openshift.io/v1alpha1 kind: ImageContentSourcePolicy metadata: labels: operators.openshift.org/catalog: "true" name: global-hub-operator-icsp spec: repositoryDigestMirrors: - mirrors: - myregistry.example.com:5000/multicluster-globalhub source: registry.redhat.io/multicluster-globalhub - mirrors: - myregistry.example.com:5000/openshift4 source: registry.redhat.io/openshift4 - mirrors: - myregistry.example.com:5000/redhat source: registry.redhat.io/redhat
您可以使用 ManagedClusterImageRegistry
为不同的受管 hub 配置不同的镜像 registry。请参阅 导入具有 ManagedClusterImageRegistry 的集群,以使用 ManagedClusterImageRegistry
API 替换代理镜像。
通过完成上一步,会将标签和注解添加到所选 ManagedCluster
中。这意味着集群中的代理镜像被镜像(mirror)替换。
-
label:
multicluster-global-hub.io/image-registry=<namespace.managedclusterimageregistry-name>
-
annotation:
multicluster-global-hub.io/image-registries: <image-registry-info>
1.4.3.1. 配置镜像 pull secret
如果订阅的 Operator 引用的 Operator 或 Operand 镜像需要访问私有 registry,您可以 提供对集群中的所有命名空间或单独的目标租户命名空间的访问权限。
1.4.3.1.1. 在 OpenShift Container Platform 集群中配置多集群全局 hub 镜像 pull secret
您可以在现有 OpenShift Container Platform 集群中配置镜像 pull secret。
注: 在预先存在的集群中应用镜像 pull secret 会导致所有节点的滚动重启。
完成以下步骤以配置 pull secret:
从 pull secret 导出用户名:
export USER=<the-registry-user>
从 pull secret 导出密码:
export PASSWORD=<the-registry-password>
复制 pull secret:
oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' > pull_secret.yaml
使用 pull secret 登录:
oc registry login --registry=${REGISTRY} --auth-basic="$USER:$PASSWORD" --to=pull_secret.yaml
指定 multicluster global hub 镜像 pull secret:
oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=pull_secret.yaml
删除旧的 pull secret:
rm pull_secret.yaml
1.4.3.1.2. 将 multicluster global hub 镜像 pull secret 配置为单个命名空间
您可以通过完成以下步骤,将镜像 pull secret 配置为单独的命名空间:
运行以下命令,在租户命名空间中创建 secret:
oc create secret generic <secret_name> -n <tenant_namespace> \ --from-file=.dockerconfigjson=<path/to/registry/credentials> \ --type=kubernetes.io/dockerconfigjson
将 secret 链接到 Operator 或操作对象的服务帐户:
oc secrets link <operator_sa> -n <tenant_namespace> <secret_name> --for=pull
1.4.3.2. 安装 Global Hub Operator
您可以使用 Red Hat OpenShift Container Platform Web 控制台从 OperatorHub 安装并订阅 Operator。详情请参阅将 Operator 添加到集群。添加 Operator 后,您可以运行以下命令来检查 multicluster global hub Operator 的状态:
oc get pods -n multicluster-global-hub NAME READY STATUS RESTARTS AGE multicluster-global-hub-operator-687584cb7c-fnftj 1/1 Running 0 2m12s
1.4.4. 其他资源
- 有关创建镜像 registry 的更多信息,请参阅 创建镜像 registry。
- 有关镜像镜像的更多信息,请参阅 为断开连接的安装镜像镜像。
- 如需有关镜像 Operator 目录的更多信息,请参阅 镜像 Operator 目录。