14.4. 为 Kubernetes Operator 的多集群引擎准备基于 Agent 的集群

您可以为 Kubernetes Operator 安装多集群引擎,并使用基于 Agent 的 OpenShift Container Platform 安装程序部署 hub 集群。以下流程部分自动化,在部署初始集群后需要手动步骤。

14.4.1. 先决条件

14.4.2. 断开连接时为 Kubernetes Operator 准备基于代理的集群部署

您可以在断开连接的环境中将所需的 OpenShift Container Platform 容器镜像、Kubernetes Operator 的多集群引擎和 Local Storage Operator (LSO) 镜像 (LSO) 到断开连接的环境中的本地镜像 registry 中。确保您注意了镜像 registry 的本地 DNS 主机名和端口。

注意

要将 OpenShift Container Platform 镜像存储库镜像到您的镜像 registry,您可以使用 oc adm release imageoc mirror 命令。在此过程中,oc mirror 命令被用作示例。

流程

  1. 创建一个 <assets_directory> 文件夹,使其包含有效的 install-config.yamlagent-config.yaml 文件。此目录用于存储所有资产。
  2. 要镜像 OpenShift Container Platform 镜像存储库、多集群引擎和 LSO,请使用以下设置创建一个 ImageSetConfiguration.yaml 文件:

    示例 ImageSetConfiguration.yaml

      kind: ImageSetConfiguration
      apiVersion: mirror.openshift.io/v1alpha2
      archiveSize: 4 1
      storageConfig: 2
        imageURL: <your-local-registry-dns-name>:<your-local-registry-port>/mirror/oc-mirror-metadata 3
        skipTLS: true
      mirror:
        platform:
          architectures:
            - "amd64"
          channels:
            - name: stable-4.12 4
              type: ocp
        additionalImages:
          - name: registry.redhat.io/ubi8/ubi:latest
        operators:
          - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12 5
            packages: 6
              - name: multicluster-engine 7
              - name: local-storage-operator 8

    1
    指定镜像集合中每个文件的最大大小(以 GiB 为单位)。
    2
    设置后端位置,以接收镜像设置元数据。此位置可以是 registry 或本地目录。除非使用技术预览 OCI 功能,否则您必须指定 storageConfig 值。
    3
    设置存储后端的 registry URL。
    4
    设置包含您要安装的版本的 OpenShift Container Platform 镜像的频道。
    5
    设置包含您要安装的 OpenShift Container Platform 镜像的 Operator 目录。
    6
    仅指定要包含在镜像集中的特定 Operator 软件包和频道。删除此字段以检索目录中的所有软件包。
    7
    多集群引擎软件包和频道。
    8
    LSO 软件包和频道。
    注意

    在镜像内容时,oc mirror 命令需要此文件。

  3. 要镜像特定的 OpenShift Container Platform 镜像存储库、多集群引擎和 LSO,请运行以下命令:

    $ oc mirror --dest-skip-tls --config ocp-mce-imageset.yaml docker://<your-local-registry-dns-name>:<your-local-registry-port>
  4. 更新 install-config.yaml 文件中的 registry 和证书:

    示例 imageContentSources.yaml

      imageContentSources:
        - source: "quay.io/openshift-release-dev/ocp-release"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/openshift/release-images"
        - source: "quay.io/openshift-release-dev/ocp-v4.0-art-dev"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/openshift/release"
        - source: "registry.redhat.io/ubi8"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/ubi8"
        - source: "registry.redhat.io/multicluster-engine"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/multicluster-engine"
        - source: "registry.redhat.io/rhel8"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/rhel8"
        - source: "registry.redhat.io/redhat"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/redhat"

    另外,请确保您的证书存在于 install-config.yamladditionalTrustBundle 字段中。

    示例 install-config.yaml

    additionalTrustBundle: |
      -----BEGIN CERTIFICATE-----
      zzzzzzzzzzz
      -----END CERTIFICATE-------

    重要

    oc mirror 命令会创建一个名为 oc-mirror-workspace 的文件夹,其中包含几个输出。这包括 imageContentSourcePolicy.yaml 文件,用于标识 OpenShift Container Platform 和所选 Operator 所需的所有镜像。

  5. 运行以下命令来生成集群清单:

    $ openshift-install agent create cluster-manifests

    此命令更新集群 manifests 文件夹,使其包含包含您的镜像配置的 mirror 文件夹。

14.4.3. 连接时为 Kubernetes Operator 准备基于代理的集群部署

为 Kubernetes Operator、Local Storage Operator (LSO) 创建所需的清单,并将基于代理的 OpenShift Container Platform 集群部署为 hub 集群。

流程

  1. <assets_directory> 文件夹中创建一个名为 openshift 的子文件夹。此子文件夹用于存储在安装过程中应用的额外清单,以进一步自定义部署的集群。<assets_directory> 文件夹包含所有资产,包括 install-config.yamlagent-config.yaml 文件。

    注意

    安装程序不会验证额外的清单。

  2. 对于多集群引擎,创建以下清单并将其保存到 <assets_directory>/openshift 文件夹中:

    示例 mce_namespace.yaml

      apiVersion: v1
      kind: Namespace
      metadata:
        labels:
          openshift.io/cluster-monitoring: "true"
        name: multicluster-engine

    示例 mce_operatorgroup.yaml

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: multicluster-engine-operatorgroup
        namespace: multicluster-engine
      spec:
        targetNamespaces:
        - multicluster-engine

    示例 mce_subscription.yaml

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: multicluster-engine
        namespace: multicluster-engine
      spec:
        channel: "stable-2.1"
        name: multicluster-engine
        source: redhat-operators
        sourceNamespace: openshift-marketplace

    注意

    您可以使用支持的安装程序 (AI) 使用 Red Hat Advanced Cluster Management (RHACM) 大规模安装分布式单元 (DU)。这些分布式单元必须在 hub 集群中启用。AI 服务需要手动创建的持久性卷 (PV)。

  3. 对于 AI 服务,请创建以下清单并将其保存到 <assets_directory>/openshift 文件夹中:

    示例 lso_namespace.yaml

      apiVersion: v1
      kind: Namespace
      metadata:
        annotations:
          openshift.io/cluster-monitoring: "true"
        name: openshift-local-storage

    示例 lso_operatorgroup.yaml

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: local-operator-group
        namespace: openshift-local-storage
      spec:
        targetNamespaces:
          - openshift-local-storage

    示例 lso_subscription.yaml

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: local-storage-operator
        namespace: openshift-local-storage
      spec:
        installPlanApproval: Automatic
        name: local-storage-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace

    注意

    创建所有清单后,文件系统必须显示如下:

    文件系统示例

    <assets_directory>
        ├─ install-config.yaml
        ├─ agent-config.yaml
        └─ /openshift
            ├─ mce_namespace.yaml
            ├─ mce_operatorgroup.yaml
            ├─ mce_subscription.yaml
            ├─ lso_namespace.yaml
            ├─ lso_operatorgroup.yaml
            └─ lso_subscription.yaml

  4. 运行以下命令来创建代理 ISO 镜像:

    $ openshift-install agent create image --dir <assets_directory>
  5. 镜像就绪后,引导目标机器并等待安装完成。
  6. 要监控安装,请运行以下命令:

    $ openshift-install agent wait-for install-complete --dir <assets_directory>
    注意

    要配置功能齐全的 hub 集群,必须创建以下清单,并通过运行 $ oc apply -f <manifest-name> 命令手动应用它们。清单创建的顺序非常重要,如果需要,会显示等待条件。

  7. 对于 AI 服务所需的 PV,请创建以下清单:

      apiVersion: local.storage.openshift.io/v1
      kind: LocalVolume
      metadata:
       name: assisted-service
       namespace: openshift-local-storage
      spec:
       logLevel: Normal
       managementState: Managed
       storageClassDevices:
         - devicePaths:
             - /dev/vda
             - /dev/vdb
           storageClassName: assisted-service
           volumeMode: Filesystem
  8. 在应用后续清单前,使用以下命令等待 PV 的可用性:

    $ oc wait localvolume -n openshift-local-storage assisted-service --for condition=Available --timeout 10m
    注意
    The `devicePath` is an example and may vary depending on the actual hardware configuration used.
  9. 为多集群引擎实例创建清单。

    示例 MultiClusterEngine.yaml

      apiVersion: multicluster.openshift.io/v1
      kind: MultiClusterEngine
      metadata:
        name: multiclusterengine
      spec: {}

  10. 创建清单以启用 AI 服务。

    示例 agentserviceconfig.yaml

      apiVersion: agent-install.openshift.io/v1beta1
      kind: AgentServiceConfig
      metadata:
        name: agent
        namespace: assisted-installer
      spec:
       databaseStorage:
        storageClassName: assisted-service
        accessModes:
        - ReadWriteOnce
        resources:
         requests:
          storage: 10Gi
       filesystemStorage:
        storageClassName: assisted-service
        accessModes:
        - ReadWriteOnce
        resources:
         requests:
          storage: 10Gi

  11. 创建清单来部署后续 spoke 集群。

    示例 clusterimageset.yaml

      apiVersion: hive.openshift.io/v1
      kind: ClusterImageSet
      metadata:
        name: "4.12"
      spec:
        releaseImage: quay.io/openshift-release-dev/ocp-release:4.12.0-x86_64

  12. 创建一个清单来导入安装代理(托管多集群引擎和 Assisted Service)作为 hub 集群。

    示例 autoimport.yaml

      apiVersion: cluster.open-cluster-management.io/v1
      kind: ManagedCluster
      metadata:
       labels:
         local-cluster: "true"
         cloud: auto-detect
         vendor: auto-detect
       name: local-cluster
      spec:
       hubAcceptsClient: true

  13. 等待受管集群创建。

    $ oc wait -n multicluster-engine managedclusters local-cluster --for condition=ManagedClusterJoined=True --timeout 10m

验证

  • 要确认受管集群安装成功,请运行以下命令:

    $ oc get managedcluster
    NAME            HUB ACCEPTED   MANAGED CLUSTER URLS             JOINED   AVAILABLE  AGE
    local-cluster   true           https://<your cluster url>:6443   True     True       77m