11.5. 为 Kubernetes Operator 的多集群引擎准备基于 Agent 的集群
您可以安装多集群引擎 Operator,并使用基于 Agent 的 OpenShift Container Platform 安装程序部署 hub 集群。以下流程部分自动化,在部署初始集群后需要手动步骤。
11.5.1. 先决条件
您已阅读了以下文档:
- 您可以访问互联网来获取所需的容器镜像。
-
已安装 OpenShift CLI(
oc
)。 - 如果要在断开连接的环境中安装,则必须为断开连接的安装镜像配置了本地镜像 registry。
11.5.2. 断开连接时为 Kubernetes Operator 准备基于代理的集群部署
您可以在断开连接的环境中将所需的 OpenShift Container Platform 容器镜像、多集群引擎 Operator 和 Local Storage Operator (LSO) 镜像 (LSO) 到断开连接的环境中的本地镜像 registry 中。确保您注意了镜像 registry 的本地 DNS 主机名和端口。
要将 OpenShift Container Platform 镜像存储库镜像到您的镜像 registry,您可以使用 oc adm release image
或 oc mirror
命令。在此过程中,oc mirror
命令被用作示例。
流程
-
创建一个
<assets_directory>
文件夹,使其包含有效的install-config.yaml
和agent-config.yaml
文件。此目录用于存储所有资产。 要镜像 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.16 4 type: ocp additionalImages: - name: registry.redhat.io/ubi9/ubi:latest operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16 5 packages: 6 - name: multicluster-engine 7 - name: local-storage-operator 8
- 1
- 指定镜像集合中每个文件的最大大小(以 GiB 为单位)。
- 2
- 设置后端位置,以接收镜像设置元数据。此位置可以是 registry 或本地目录。必须指定
storageConfig
值。 - 3
- 设置存储后端的 registry URL。
- 4
- 设置包含您要安装的版本的 OpenShift Container Platform 镜像的频道。
- 5
- 设置包含您要安装的 OpenShift Container Platform 镜像的 Operator 目录。
- 6
- 仅指定要包含在镜像集中的特定 Operator 软件包和频道。删除此字段以检索目录中的所有软件包。
- 7
- 多集群引擎软件包和频道。
- 8
- LSO 软件包和频道。
注意在镜像内容时,
oc mirror
命令需要此文件。要镜像特定的 OpenShift Container Platform 镜像存储库、多集群引擎和 LSO,请运行以下命令:
$ oc mirror --dest-skip-tls --config ocp-mce-imageset.yaml docker://<your-local-registry-dns-name>:<your-local-registry-port>
更新
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/ubi9" mirrors: - "<your-local-registry-dns-name>:<your-local-registry-port>/ubi9" - 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.yaml
的additionalTrustBundle
字段中。示例
install-config.yaml
additionalTrustBundle: | -----BEGIN CERTIFICATE----- zzzzzzzzzzz -----END CERTIFICATE-------
重要oc mirror
命令会创建一个名为oc-mirror-workspace
的文件夹,其中包含几个输出。这包括imageContentSourcePolicy.yaml
文件,用于标识 OpenShift Container Platform 和所选 Operator 所需的所有镜像。运行以下命令来生成集群清单:
$ openshift-install agent create cluster-manifests
此命令更新集群 manifests 文件夹,使其包含包含您的镜像配置的
mirror
文件夹。
11.5.3. 连接时为 Kubernetes Operator 准备基于代理的集群部署
为多集群引擎 Operator、Local Storage Operator (LSO) 创建所需的清单,并将基于代理的 OpenShift Container Platform 集群部署为 hub 集群。
流程
在
<assets_directory>
文件夹中创建一个名为openshift
的子文件夹。此子文件夹用于存储在安装过程中应用的额外清单,以进一步自定义部署的集群。<assets_directory>
文件夹包含所有资产,包括install-config.yaml
和agent-config.yaml
文件。注意安装程序不会验证额外的清单。
对于多集群引擎,创建以下清单并将其保存到
<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.3" name: multicluster-engine source: redhat-operators sourceNamespace: openshift-marketplace
注意您可以使用支持的安装程序 (AI) 使用 Red Hat Advanced Cluster Management (RHACM) 大规模安装分布式单元 (DU)。这些分布式单元必须在 hub 集群中启用。AI 服务需要手动创建的持久性卷 (PV)。
对于 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
运行以下命令来创建代理 ISO 镜像:
$ openshift-install agent create image --dir <assets_directory>
- 镜像就绪后,引导目标机器并等待安装完成。
要监控安装,请运行以下命令:
$ openshift-install agent wait-for install-complete --dir <assets_directory>
注意要配置功能齐全的 hub 集群,必须创建以下清单,并通过运行
$ oc apply -f <manifest-name>
命令手动应用它们。清单创建的顺序非常重要,如果需要,会显示等待条件。对于 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
在应用后续清单前,使用以下命令等待 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.
为多集群引擎实例创建清单。
示例
MultiClusterEngine.yaml
apiVersion: multicluster.openshift.io/v1 kind: MultiClusterEngine metadata: name: multiclusterengine spec: {}
创建清单以启用 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
创建清单来部署后续 spoke 集群。
示例
clusterimageset.yaml
apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: "4.16" spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.16.0-x86_64
创建一个清单来导入安装代理(托管多集群引擎和 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
等待受管集群创建。
$ 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