$ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type json \
--patch '[{"op": "add", "path":"/spec/overrides/components/-", "value": {"name":"image-based-install-operator","enabled": true}}]'
当使用基于镜像的安装预安装了单节点 OpenShift 的主机到达远程站点时,技术人员可以在几分钟内轻松地重新配置和部署主机。
对于具有中心和辐条架构的集群,要完成预安装主机的部署,必须首先为每个主机在中心集群上定义特定于站点的配置资源。这些资源包含配置信息,例如裸机主机的属性、身份验证详细信息以及其他部署和网络信息。
基于镜像的安装 (IBI) 运算符会根据这些资源创建配置 ISO,然后在附加了配置 ISO 的情况下启动主机。主机挂载配置 ISO 并运行重新配置过程。重新配置完成后,单节点 OpenShift 集群即可使用。
必须为每个裸机主机创建不同的配置资源。 |
请参阅以下高级步骤,以在具有中心和辐条架构的集群中部署预安装的主机
在中心集群上安装 IBI 运算符。
为每个主机在中心集群中创建特定于站点的配置资源。
IBI 运算符会根据这些资源创建配置 ISO,并在附加了配置 ISO 的情况下启动目标主机。
主机挂载配置 ISO 并运行重新配置过程。重新配置完成后,单节点 OpenShift 集群即可使用。
或者,您可以手动部署集群的预安装主机,无需使用 hub 集群。您必须定义一个 |
基于镜像的安装 (IBI) 操作符是裸机主机上预安装单节点 OpenShift 基于镜像部署工作流程的一部分。
IBI 操作符是 MCE 2.7 版本及以上版本的 Kubernetes 操作符多集群引擎的一部分。 |
您已以具有cluster-admin
权限的用户身份登录。
您已部署 Red Hat Advanced Cluster Management (RHACM) hub 集群,或者您已部署 Kubernetes 操作符的多集群引擎。
您已在“基于镜像安装的软件先决条件”部分中查看了所需软件组件的版本。
通过运行以下命令,将MultiClusterEngine
资源中image-based-install-operator
组件的enabled
规范设置为true
$ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type json \
--patch '[{"op": "add", "path":"/spec/overrides/components/-", "value": {"name":"image-based-install-operator","enabled": true}}]'
通过运行以下命令检查基于镜像的安装操作符 pod 是否正在运行
$ oc get pods -A | grep image-based
multicluster-engine image-based-install-operator-57fb8sc423-bxdj8 2/2 Running 0 5m
在 hub 集群中创建特定于站点的配置资源,以启动预安装主机的基于镜像的部署。
当您在 hub 集群中创建这些配置资源时,基于镜像的安装 (IBI) 操作符会生成一个配置 ISO 并将其附加到目标主机,以开始特定于站点的配置过程。配置过程完成后,单节点 OpenShift 集群就准备就绪了。
有关必须在 hub 集群中配置的配置资源的更多信息,请参见“部署预安装主机的集群配置资源”。 |
您使用基于镜像的安装预安装了具有单节点 OpenShift 的主机。
您已以具有cluster-admin
权限的用户身份登录。
您已部署 Red Hat Advanced Cluster Management (RHACM) hub 集群,或者您已部署 Kubernetes 操作符的多集群引擎 (MCE)。
您已在 hub 集群上安装了 IBI 操作符。
您已创建了一个 pull 密钥来验证 pull 请求。更多信息,请参见“使用镜像 pull 密钥”。
通过运行以下命令创建ibi-ns
命名空间
$ oc create namespace ibi-ns
为您的镜像注册表创建Secret
资源
创建一个 YAML 文件,该文件定义了您的镜像注册表的Secret
资源
secret-image-registry.yaml
文件apiVersion: v1
kind: Secret
metadata:
name: ibi-image-pull-secret
namespace: ibi-ns
stringData:
.dockerconfigjson: <base64-docker-auth-code> (1)
type: kubernetes.io/dockerconfigjson
1 | 您必须提供 base64 编码的凭据详细信息。有关使用镜像 pull 密钥的更多信息,请参见“其他资源”部分。 |
通过运行以下命令创建您的镜像注册表的Secret
资源
$ oc create -f secret-image-registry.yaml
可选:为主机配置静态网络
创建一个包含nmstate
格式静态网络配置的Secret
资源
host-network-config-secret.yaml
文件apiVersion: v1
kind: Secret
metadata:
name: host-network-config-secret (1)
namespace: ibi-ns
type: Opaque
stringData:
nmstate: | (2)
interfaces:
- name: ens1f0 (3)
type: ethernet
state: up
ipv4:
enabled: true
address:
- ip: 192.168.200.25
prefix-length: 24
dhcp: false (4)
ipv6:
enabled: false
dns-resolver:
config:
server:
- 192.168.15.47 (5)
- 192.168.15.48
routes:
config: (6)
- destination: 0.0.0.0/0
metric: 150
next-hop-address: 192.168.200.254
next-hop-interface: ens1f0
table-id: 254
1 | 指定Secret 资源的名称。 |
2 | 以nmstate 格式定义静态网络配置。 |
3 | 指定主机上接口的名称。接口的名称必须与操作系统中显示的实际网卡名称匹配。要使用您的 MAC 地址进行网卡匹配,请将identifier 字段设置为mac-address 。 |
4 | 您必须指定dhcp: false 以确保nmstate 将静态 IP 地址分配给接口。 |
5 | 指定系统将用于解析域名的一个或多个 DNS 服务器。 |
6 | 在此示例中,默认路由通过ens1f0 接口配置到下一跳 IP 地址192.168.200.254 。 |
创建BareMetalHost
和Secret
资源
创建一个 YAML 文件,该文件定义了BareMetalHost
和Secret
资源
ibi-bmh.yaml
文件apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: ibi-bmh (1)
namespace: ibi-ns
spec:
online: false (2)
bootMACAddress: 00:a5:12:55:62:64 (3)
bmc:
address: redfish-virtualmedia+http://192.168.111.1:8000/redfish/v1/Systems/8a5babac-94d0-4c20-b282-50dc3a0a32b5 (4)
credentialsName: ibi-bmh-bmc-secret (5)
preprovisioningNetworkDataName: host-network-config-secret (6)
automatedCleaningMode: disabled (7)
externallyProvisioned: true (8)
---
apiVersion: v1
kind: Secret
metadata:
name: ibi-bmh-secret (9)
namespace: ibi-ns
type: Opaque
data:
username: <user_name> (10)
password: <password> (11)
1 | 指定BareMetalHost 资源的名称。 |
2 | 指定主机是否应该在线。 |
3 | 指定主机启动 MAC 地址。 |
4 | 指定 BMC 地址。您只能使用支持虚拟媒体网络启动的裸机主机驱动程序,例如 redfish-virtualmedia 和 idrac-virtualmedia。 |
5 | 指定裸机主机Secret 资源的名称。 |
6 | 可选:如果您需要主机的静态网络配置,请指定包含该配置的Secret 资源的名称。 |
7 | 您必须指定automatedCleaningMode:disabled 以防止预配服务在磁盘检查期间删除所有预安装工件,例如种子镜像。 |
8 | 您必须指定externallyProvisioned: true 以使主机能够从预安装磁盘启动,而不是从配置 ISO 启动。 |
9 | 指定Secret 资源的名称。 |
10 | 指定用户名。 |
11 | 指定密码。 |
通过运行以下命令创建BareMetalHost
和Secret
资源
$ oc create -f ibi-bmh.yaml
创建ClusterImageSet
资源
创建一个 YAML 文件,该文件定义了ClusterImageSet
资源
ibi-cluster-image-set.yaml
文件apiVersion: hive.openshift.io/v1
kind: ClusterImageSet
metadata:
name: ibi-img-version-arch (1)
spec:
releaseImage: ibi.example.com:path/to/release/images:version-arch (2)
1 | 指定ClusterImageSet 资源的名称。 |
2 | 指定要用于部署的发布镜像的地址。如果您使用的镜像注册表与种子镜像生成过程中使用的镜像注册表不同,请确保发布镜像的 OpenShift Container Platform 版本保持不变。 |
通过运行以下命令创建ClusterImageSet
资源
$ oc apply -f ibi-cluster-image-set.yaml
创建ImageClusterInstall
资源
创建一个 YAML 文件,该文件定义了ImageClusterInstall
资源
ibi-image-cluster-install.yaml
文件apiVersion: extensions.hive.openshift.io/v1alpha1
kind: ImageClusterInstall
metadata:
name: ibi-image-install (1)
namespace: ibi-ns
spec:
bareMetalHostRef:
name: ibi-bmh (2)
namespace: ibi-ns
clusterDeploymentRef:
name: ibi-cluster-deployment (3)
hostname: ibi-host (4)
imageSetRef:
name: ibi-img-version-arch (5)
machineNetwork: 10.0.0.0/24 (6)
proxy: (7)
httpProxy: "http://proxy.example.com:8080"
#httpsProxy: "http://proxy.example.com:8080"
#noProxy: "no_proxy.example.com"
1 | 指定ImageClusterInstall 资源的名称。 |
2 | 指定要针对基于镜像安装的目标BareMetalHost 资源。 |
3 | 指定要用于目标主机的基于镜像安装的ClusterDeployment 资源的名称。 |
4 | 指定集群的主机名。 |
5 | 指定您用于定义要用于部署的容器发布镜像的ClusterImageSet 资源的名称。 |
6 | 指定外部网络的公共 CIDR(无类别域间路由)。 |
7 | 可选:指定要用于集群部署的代理。 |
如果您的集群部署需要代理配置,则必须执行以下操作
|
通过运行以下命令创建ImageClusterInstall
资源
$ oc create -f ibi-image-cluster-install.yaml
创建ClusterDeployment
资源
创建一个 YAML 文件,该文件定义了ClusterDeployment
资源
ibi-cluster-deployment.yaml
文件apiVersion: hive.openshift.io/v1
kind: ClusterDeployment
metadata:
name: ibi-cluster-deployment (1)
namespace: ibi-ns (2)
spec:
baseDomain: example.com (3)
clusterInstallRef:
group: extensions.hive.openshift.io
kind: ImageClusterInstall
name: ibi-image-install (4)
version: v1alpha1
clusterName: ibi-cluster (5)
platform:
none: {}
pullSecretRef:
name: ibi-image-pull-secret (6)
1 | 指定ClusterDeployment 资源的名称。 |
2 | 指定ClusterDeployment 资源的命名空间。 |
3 | 指定集群所属的基本域名。 |
4 | 指定您在其中定义用于目标主机基于镜像安装的容器镜像的ImageClusterInstall 的名称。 |
5 | 指定集群的名称。 |
6 | 指定用于从您的镜像注册表拉取镜像的密钥。 |
通过运行以下命令创建ClusterDeployment
资源
$ oc apply -f ibi-cluster-deployment.yaml
创建ManagedCluster
资源
创建一个YAML文件,该文件定义ManagedCluster
资源
ibi-managed.yaml
文件示例apiVersion: cluster.open-cluster-management.io/v1
kind: ManagedCluster
metadata:
name: sno-ibi (1)
spec:
hubAcceptsClient: true (2)
1 | 指定ManagedCluster 资源的名称。 |
2 | 指定true 以启用RHACM管理集群。 |
通过运行以下命令创建ManagedCluster
资源
$ oc apply -f ibi-managed.yaml
通过运行以下命令检查中心集群中ImageClusterInstall
的状态,以监控目标主机安装的进度
$ oc get imageclusterinstall
NAME REQUIREMENTSMET COMPLETED BAREMETALHOSTREF
target-0 HostValidationSucceeded ClusterInstallationSucceeded ibi-bmh
如果 |
安装完成后,您可以通过运行以下命令检索kubeconfig
密钥以登录到托管集群
$ oc extract secret/<cluster_name>-admin-kubeconfig -n <cluster_namespace> --to - > <directory>/<cluster_name>-kubeconfig
<cluster_name>
是集群的名称。
<cluster_namespace>
是集群的命名空间。
<directory>
是要在其中创建文件的目录。
要完成对远程站点预安装主机的部署,必须为每个裸机主机在中心集群中配置以下特定于站点的集群配置资源。
资源 | 描述 |
---|---|
|
托管单节点OpenShift集群的命名空间。 |
|
描述物理主机及其属性,例如配置和硬件配置。 |
裸机主机的 |
主机BMC的凭据。 |
裸机主机静态网络配置的 |
可选:描述目标主机的静态网络配置。 |
镜像注册表的 |
镜像注册表的凭据。镜像注册表的密钥必须为 |
|
引用裸机主机、部署和镜像集资源。 |
|
描述要用于集群的发行版镜像。 |
|
描述网络、身份验证和特定于平台的设置。 |
|
描述集群详细信息,以启用Red Hat Advanced Cluster Management (RHACM) 进行注册和管理。 |
|
可选:描述集群部署的其他配置,例如添加一组受信任的证书,以确保主机与集群服务的受信任通信。 |
以下内容描述了ImageClusterInstall
资源的API规范。此资源是基于镜像安装操作符的端点。
规范 | 类型 | 描述 |
---|---|---|
|
|
指定定义部署发行版镜像的 |
|
|
指定集群的主机名。 |
|
|
指定您的SSH密钥以提供对目标主机的SSH访问。 |
规范 | 类型 | 描述 |
---|---|---|
|
|
指定要用于目标主机的基于镜像安装的 |
|
|
部署完成后,此规范将自动填充有关集群的元数据信息,包括用于登录集群的 |
|
|
指定发行版镜像内容的来源或存储库,例如
|
|
|
指定包含要应用于目标集群的其他清单的 |
|
|
指定要用于集群部署的 |
|
|
指定外部网络的公共 CIDR(无类别域间路由)。 |
|
|
指定集群的代理设置,例如
|
|
|
指定包含主机新受信任证书捆绑包的 |
您可以选择创建一个ConfigMap
资源来在托管单节点OpenShift集群的基于镜像的部署中定义其他清单。
创建ConfigMap
资源后,请在ImageClusterInstall
资源中引用它。在部署过程中,IBI Operator会将额外清单包含在部署中。
您可以使用ConfigMap
资源将额外清单添加到单节点OpenShift集群的基于镜像的部署中。
以下示例将单根I/O虚拟化(SR-IOV)网络添加到部署中。
额外清单的文件名不得超过30个字符。较长的文件名可能会导致部署失败。 |
您使用基于镜像的安装预安装了具有单节点 OpenShift 的主机。
您已以具有cluster-admin
权限的用户身份登录。
创建SriovNetworkNodePolicy
和SriovNetwork
资源
创建一个YAML文件来定义这些资源
sriov-extra-manifest.yaml
文件示例apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetworkNodePolicy
metadata:
name: "example-sriov-node-policy"
namespace: openshift-sriov-network-operator
spec:
deviceType: vfio-pci
isRdma: false
nicSelector:
pfNames: [ens1f0]
nodeSelector:
node-role.kubernetes.io/master: ""
mtu: 1500
numVfs: 8
priority: 99
resourceName: example-sriov-node-policy
---
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetwork
metadata:
name: "example-sriov-network"
namespace: openshift-sriov-network-operator
spec:
ipam: |-
{
}
linkState: auto
networkNamespace: sriov-namespace
resourceName: example-sriov-node-policy
spoofChk: "on"
trust: "off"
通过运行以下命令创建ConfigMap
资源
$ oc create configmap sr-iov-extra-manifest --from-file=sriov-extra-manifest.yaml -n ibi-ns (1)
1 | 指定包含ImageClusterInstall 资源的命名空间。 |
configmap/sr-iov-extra-manifest created
在ImageClusterInstall
资源的spec.extraManifestsRefs
字段中引用ConfigMap
资源
#...
spec:
extraManifestsRefs:
- name: sr-iov-extra-manifest
#...
您可以使用ConfigMap
资源将证书颁发机构(CA)捆绑包添加到主机,以确保集群服务的受信任通信。
创建ConfigMap
资源后,请在ImageClusterInstall
资源的spec.caBundleRef
字段中引用它。
您使用基于镜像的安装预安装了具有单节点 OpenShift 的主机。
您已以具有cluster-admin
权限的用户身份登录。
创建一个名为tls-ca-bundle.pem
的CA捆绑包文件
tls-ca-bundle.pem
文件示例-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKmjYKJbIyz3MA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
...Custom CA certificate bundle...
4WPl0Qb27Sb1xZyAsy1ww6MYb98EovazUSfjYr2EVF6ThcAPu4/sMxUV7He2J6Jd
cA8SMRwpUbz3LXY=
-----END CERTIFICATE-----
通过运行以下命令创建ConfigMap
对象
$ oc create configmap custom-ca --from-file=tls-ca-bundle.pem -n ibi-ns
custom-ca
指定ConfigMap
资源的名称。
tls-ca-bundle.pem
定义ConfigMap
资源中data
条目的密钥。您必须包含一个带有tls-ca-bundle.pem
密钥的data
条目。
ibi-ns
指定包含ImageClusterInstall
资源的命名空间。
configmap/custom-ca created
在ImageClusterInstall
资源的spec.caBundleRef
字段中引用ConfigMap
资源
#...
spec:
caBundleRef:
name: custom-ca
#...