14.4. 为 Kubernetes Operator 的多集群引擎准备基于 Agent 的集群
您可以为 Kubernetes Operator 安装多集群引擎,并使用基于 Agent 的 OpenShift Container Platform 安装程序部署 hub 集群。以下流程部分自动化,在部署初始集群后需要手动步骤。
14.4.1. 先决条件
您已阅读了以下文档:
- 您可以访问互联网来获取所需的容器镜像。
-
已安装 OpenShift CLI(
oc
)。 - 如果要在断开连接的环境中安装,则必须为断开连接的安装镜像配置了本地镜像 registry。
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 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.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
命令需要此文件。要镜像特定的 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/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.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
文件夹。
14.4.3. 连接时为 Kubernetes Operator 准备基于代理的集群部署
为 Kubernetes 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.1" 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.12" spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.12.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