1.4. 创建和修改裸机资产

弃用通知: 使用裸机资产创建裸机集群的步骤已弃用。请参阅在内部环境中为创建集群

裸机资产是您配置为运行 OpenShift Container Platform 集群的虚拟或物理服务器。Red Hat Advanced Cluster Management for Kubernetes 会连接到管理员创建的裸机资产。然后您可以在受管集群中部署裸机资产。

hub 集群清单控制器定义一个名为 BareMetalAsset 的自定义资源定义 (CRD),其中包含裸机资产清单记录。在置备受管集群时,清单控制器会将 BareMetalAsset 清单记录与受管集群中对应的 BareMetalHost 资源协调。

Red Hat Advanced Cluster Management 使用 BareMetalAsset CR 根据配置管理数据库 (CMDB) 或类似的系统中输入的记录置备集群硬件。外部工具或自动化轮询 CMDB,并使用 Red Hat Advanced Cluster Management API 在 hub 集群中创建对应的 BareMetalAsset 和对应的 Secret 资源,以便后续在受管集群中部署。

使用以下步骤为由 Red Hat Advanced Cluster Management 管理的集群创建和管理裸机资产。

1.4.1. 先决条件

创建裸机资产前需要满足以下先决条件:

  • 在 OpenShift Container Platform 版本 4.6 或更高版本上部署了 Red Hat Advanced Cluster Management hub 集群。
  • 访问 Red Hat Advanced Cluster Management hub 集群以连接到裸机资产。
  • 配置了裸机资产,以及登录凭证(包含登录和管理该资产所需的权限)。

    注:裸机资产凭证包括您的管理员提供的资产的以下项:用户名密码 Baseboard Management Controller (BMC) Address 引导 NIC MAC 地址

1.4.2. 使用控制台创建裸机资产

要使用 Red Hat Advanced Cluster Management for Kubernetes 控制台创建裸机资产,请进入 Infrastructure > Bare metal assets。选择 Create bare metal asset,并在控制台中完成这个流程。

裸机资产的名称在创建集群时标识它。

裸机资产、受管裸机集群及其相关 secret 必须位于同一命名空间中。

+ 有权访问此命名空间的用户可以在创建集群时将此资产与集群相关联。

基板管理控制器地址是启用与主机通信的控制器。支持以下协议:

引导 NIC MAC 地址是主机网络连接 NIC 的 MAC 地址,用于在裸机资产上置备主机。

您可以继续在裸机上创建集群

1.4.3. 使用 CLI 创建裸机资产

使用 BareMetalAsset CR 为集群中的特定命名空间创建裸机资产。每个 BareMetalAsset 都有一个对应的 Secret,其中包含 Baseboard Management Controller (BMC) 凭证以及同一命名空间中的 secret 名称。

1.4.3.1. 先决条件

  • 在 hub 集群中安装 Red Hat Advanced Cluster Management for Kubernetes。
  • 安装 Red Hat OpenShift CLI (oc)。
  • 以具有 cluster-admin 权限的用户身份登录。

1.4.3.2. 创建裸机资产

  1. 在您的环境中安装并置备裸机资产。
  2. 打开 BMC,并记录硬件的 IPMI 或 Redfish BMC 地址和 MAC 地址。
  3. 创建以下 BareMetalAssetSecret CR,并将文件保存为baremetalasset-cr.yaml

    apiVersion: inventory.open-cluster-management.io/v1alpha1
    kind: BareMetalAsset
    metadata:
      name: <baremetalasset-machine>
      namespace: <baremetalasset-namespace>
    spec:
      bmc:
        address: ipmi://<out_of_band_ip>:<port>
        credentialsName: baremetalasset-machine-secret
      bootMACAddress: "00:1B:44:11:3A:B7"
      hardwareProfile: "hardwareProfile"
      role: "<role>"
      clusterName: "<cluster name>"
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: baremetalasset-machine-secret
    type: Opaque
    data:
      username: <username>
      password: <password>
    • 使用裸机资产所在机器的名称替换 baremetalasset-machine。创建后,受管集群中的 BareMetalHost 的名称与 hub 集群上对应的 BareMetalAsset 的名称相同。BareMetalHost 名称应始终与对应的 BareMetalAsset 名称匹配。
    • 使用创建裸机资产的集群命名空间替换 baremetalasset-namespace
    • out_of_band_ipport 替换为裸机资产的地址和端口。对于 Redfish 寻址,请使用以下地址格式: redfish://<out-band-ip>/redfish/v1/Systems/1
    • 根据计算机角色类型,将 role 替换为 workermaster 或保留为空。role 设置用于将裸机资产与集群中的特定机器角色类型匹配。BareMetalAsset 资源不应用于指定机器角色类型来填充另一个角色。role 角色值被用作键为 inventory.open-cluster-management.io/role 的标签的值。这可让集群管理应用程序或用户查询用于特定角色的清单。
    • 使用集群的名称替换 cluster_name,集群管理应用程序或用户使用该名称查询与特定集群关联的清单。保留这个值为空以创建裸机资产,而不将其添加到集群部署中。
    • 使用您的 secret 的用户名替换 username
    • password 替换为您的 secret 的密码。
  4. 运行以下命令来创建 BareMetalAsset CR:

    oc create -f baremetalasset-cr.yaml
  5. 检查 BareMetalAsset 是否已成功创建:

    oc get baremetalassets -A

    输出示例:

    NAMESPACE   		    NAME                              AGE
    ocp-example-bm      baremetalasset-machine   			    2m
    ocp-example-bm      csv-f24-h27-000-r630-master-1-1   4d21h

1.4.4. 使用控制台批量导入裸机资产

您可以使用 CSV 格式列表使用 Red Hat Advanced Cluster Management for Kubernetes 控制台批量导入裸机资产。

1.4.4.1. 先决条件

  • 在一个管理一个或多个 spoke 集群的 hub 集群上安装 Red Hat Advanced Cluster Management。
  • 安装 OpenShift Container Platform CLI(oc)。
  • 以具有 cluster-admin 权限的用户身份登录。

1.4.4.2. 导入资产

要导入一组裸机资产,请完成以下步骤:

  1. 在 Red Hat Advanced Cluster Management 控制台中,在导航菜单中选择 Cluster management > Bare metal asset
  2. 选择 Import asset,并导入包含裸机资产数据的 CSV 文件。CSV 文件必须具有以下标题列:

    hostName, hostNamespace, bmcAddress, macAddress, role (optional), username, password

1.4.5. 修改裸机资产

如果您需要修改裸机资产的设置,请完成以下步骤:

  1. 在 Red Hat Advanced Cluster Management for Kubernetes 控制台导航中,选择: Infrastructure > Bare metal assets
  2. 选择表中您要修改的资产的选项菜单。
  3. 选择 Edit asset

1.4.6. 删除裸机资产

当裸机资产不再用于任何集群时,您可以将其从可用的裸机资产列表中删除。删除未使用的资产既可以简化您的可用资产列表,又可以防止意外选择该资产。

要在控制台中删除裸机资产,请完成以下步骤:

  1. 在 Red Hat Advanced Cluster Management for Kubernetes 控制台导航中,选择: Infrastructure > Bare metal assets
  2. 选择表中要删除的资产的选项菜单。
  3. 选择 Delete asset

1.4.7. 使用 REST API 创建裸机资产

您可以使用 OpenShift Container Platform REST API 管理要在 Red Hat Advanced Cluster Management 集群中使用的裸机资产。当您有单独的 CMDB 应用程序或数据库来管理环境中的裸机资产时,这很有用。

1.4.7.1. 先决条件

  • 在 hub 集群中安装 Red Hat Advanced Cluster Management for Kubernetes。
  • 安装 OpenShift Container Platform CLI(oc)。
  • 以具有 cluster-admin 权限的用户身份登录。

1.4.7.2. 创建裸机资产

要使用 REST API 创建裸机资产,请执行以下操作:

  1. 获取 hub 集群的登录令牌,并通过命令行登录集群。例如:

    oc login --token=<login_token> --server=https://<hub_cluster_api_url>:6443
  2. 使用您要添加到集群的裸机资产详情修改以下 curl 命令,并运行命令。

    $ curl --location --request POST '<hub_cluster_api_url>:6443/apis/inventory.open-cluster-management.io/v1alpha1/namespaces/<bare_metal_asset_namespace>/baremetalassets?fieldManager=kubectl-create' \
    --header 'Authorization: Bearer <login_token>' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "apiVersion": "inventory.open-cluster-management.io/v1alpha1",
        "kind": "BareMetalAsset",
        "metadata": {
            "name": "<baremetalasset_name>",
            "namespace": "<bare_metal_asset_namespace>"
        },
        "spec": {
            "bmc": {
                "address": "ipmi://<ipmi_address>",
                "credentialsName": "<credentials-secret>"
            },
            "bootMACAddress": "<boot_mac_address>",
            "clusterName": "<cluster_name>",
            "hardwareProfile": "hardwareProfile",
            "role": "worker"
        }
    }'
    • Replacebaremetalasset-name 使用裸机资产的名称。创建后,受管集群中的 BareMetalHost 的名称与 hub 集群上对应的 BareMetalAsset 的名称相同。BareMetalHost 名称应始终与对应的 BareMetalAsset 名称匹配。
    • 使用创建裸机资产的集群命名空间替换 baremetalasset-namespace
    • out_of_band_ipport 替换为裸机资产的地址和端口。对于 Redfish 寻址,请使用以下地址格式: redfish://<out-band-ip>/redfish/v1/Systems/1
    • 根据计算机角色类型,将 role 替换为 workermaster 或保留为空。role 设置用于将裸机资产与集群中的特定机器角色类型匹配。BareMetalAsset 资源不应用于指定机器角色类型来填充另一个角色。role 角色值被用作键为 inventory.open-cluster-management.io/role 的标签的值。这可让集群管理应用程序或用户查询用于特定角色的清单。
    • 使用集群的名称替换 cluster_name,集群管理应用程序或用户使用该名称查询与特定集群关联的清单。保留这个值为空以创建裸机资产,而不将其添加到集群部署中。

      注:对于上一个 curl 命令,假设 API 服务器通过 HTTPS 提供,并可以安全地访问。在开发或测试环境中,您可以传递 --insecure 参数。

提示: 您可以将 --v=9 附加到 oc 命令来查看生成的操作的原始输出。这对于确定 oc 命令的 REST API 路由非常有用。