搜索

1.4. 在断开连接的环境中安装多集群全局 hub

download PDF

如果集群位于受限网络中,您可以在断开连接的环境中部署 multicluster global hub operator。

需要的访问权限:集群管理员

1.4.1. 先决条件

在断开连接的环境中安装多集群全局 hub 前,您必须满足以下要求:

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-rhamq-streams 软件包名称。

完成以下步骤以创建 multicluster-global-hub-operator-rhamq-streams 软件包的本地镜像 registry:

  1. 创建 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: {}
  2. 使用以下命令将镜像直接设置为目标镜像 registry:

    oc mirror --config=./imageset-config.yaml docker://myregistry.example.com:5000
  3. 镜像在完全断开连接的环境中设置的镜像。如需了解更多详细信息 ,请参阅为断开连接的安装镜像镜像

1.4.2.2. 将 registry 和目录添加到断开连接的集群中

要使您的镜像 registry 和目录在断开连接的集群中可用。完成以下步骤:

  1. 禁用 Operator Hub 的默认目录源。运行以下命令以更新 OperatorHub 资源:

    oc patch OperatorHub cluster --type json \
    -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
  2. 通过完成镜像 Operator 目录的步骤来 镜像 Operator 目录
  3. 将镜像目录的 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 字段的值。
  4. 保存更新的文件。
  5. 通过查询可用的 PackageManifest 资源,验证所需的软件包是否可以从断开连接的集群中可用。运行以下命令:

    oc -n openshift-marketplace get packagemanifests

    显示的列表应包含显示 multicluster-global-hub-operator-rhamq-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:

  1. 从 pull secret 导出用户名:

    export USER=<the-registry-user>
  2. 从 pull secret 导出密码:

    export PASSWORD=<the-registry-password>
  3. 复制 pull secret:

    oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' > pull_secret.yaml
  4. 使用 pull secret 登录:

    oc registry login --registry=${REGISTRY} --auth-basic="$USER:$PASSWORD" --to=pull_secret.yaml
  5. 指定 multicluster global hub 镜像 pull secret:

    oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=pull_secret.yaml
  6. 删除旧的 pull secret:

    rm pull_secret.yaml
1.4.3.1.2. 将 multicluster global hub 镜像 pull secret 配置为单个命名空间

您可以通过完成以下步骤,将镜像 pull secret 配置为单独的命名空间:

  1. 运行以下命令,在租户命名空间中创建 secret:

    oc create secret generic <secret_name> -n <tenant_namespace> \
    --from-file=.dockerconfigjson=<path/to/registry/credentials> \
    --type=kubernetes.io/dockerconfigjson
  2. 将 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. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.