This section describes how to add bare metal hosts using the Container Cloud CLI during a managed cluster creation.
To add a bare metal host using API:
Verify that you configured each bare metal host as follows:
Enable the boot NIC support for UEFI load. Usually, at least the built-in network interfaces support it.
Enable the UEFI-LAN-OPROM support in BIOS -> Advanced -> PCIPCIe.
Enable the IPv4-PXE stack.
Set the following boot order:
UEFI-DISK
UEFI-PXE
If your PXE network is not configured to use the first network interface, fix the UEFI-PXE boot order to speed up node discovering by selecting only one required network interface.
Power off all bare metal hosts.
Warning
Only one Ethernet port on a host must be connected to the
Common/PXE network at any given time. The physical address
(MAC) of this interface must be noted and used to configure
the BareMetalHost
object describing the host.
Optional. Create a custom bare metal host profile depending on your needs as described in Create a custom bare metal host profile.
Log in to the host where your management cluster kubeconfig
is located
and where kubectl is installed.
Create a secret YAML file that describes the unique credentials of the new bare metal host.
Example of the bare metal host secret:
apiVersion: v1
data:
password: <credentials-password>
username: <credentials-user-name>
kind: Secret
metadata:
labels:
kaas.mirantis.com/credentials: "true"
kaas.mirantis.com/provider: baremetal
kaas.mirantis.com/region: region-one
name: <credentials-name>
namespace: <managed-cluster-project-name>
type: Opaque
In the data
section, add the IPMI user name and password in the base64
encoding to access the BMC. To obtain the base64-encoded credentials, you
can use the following command in your Linux console:
echo -n <username|password> | base64
Caution
Each bare metal host must have a unique Secret
.
Apply this secret YAML file to your deployment:
kubectl apply -f ${<bmh-cred-file-name>}.yaml
Create a YAML file that contains a description of the new bare metal host.
Example of the bare metal host configuration file with the worker
role:
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
labels:
kaas.mirantis.com/baremetalhost-id: <unique-bare-metal-host-hardware-node-id>
hostlabel.bm.kaas.mirantis.com/worker: "true"
kaas.mirantis.com/provider: baremetal
kaas.mirantis.com/region: region-one
name: <bare-metal-host-unique-name>
namespace: <managed-cluster-project-name>
spec:
bmc:
address: <ip_address_for-bmc-access>
credentialsName: <credentials-name>
bootMACAddress: <bare-metal-host-boot-mac-address>
online: true
For a detailed fields description, see BareMetalHost.
Apply this configuration YAML file to your deployment:
kubectl apply -f ${<bare-metal-host-config-file-name>}.yaml
Now, proceed with Create a managed cluster.