It is helpful to understand the high level architecture of of the Machine API Integration. Click on each step to learn more about that particular component.
The first component is the Bare Metal Actuator, which is an implementation of the Machine Actuator interface defined by the cluster-api project. This actuator reacts to changes to Machine objects and acts as a client of the BareMetalHost custom resources managed by the Bare Metal
The architecture also includes a new Bare Metal Operator, which includes the following:
A Controller for a new Custom Resource, BareMetalHost. This custom resource represents an inventory of known (configured or automatically discovered) bare metal hosts. When a Machine is created the Bare Metal Actuator will claim one of these hosts to be provisioned as a new Kubernetes node. In response to BareMetalHost updates, the controller will perform bare metal host provisioning actions as necessary to reach the desired state. The creation of the BareMetalHost inventory can be done in two ways:
- Manually via creating BareMetalHost objects.
- Optionally, automatically created via a bare metal host discovery process. For more information about Operators, see the operator-sdk.
The operator manages a set of tools for controlling the power on the host, monitoring the host status, and provisioning images to the host. These tools run inside the pod with the operator, and do not require any configuration by the user.
Enroll nodes by creating
BareMetalHostresources. This would either be manually or done by a component doing node discovery and introspection.
See the documentation in the baremetal-operator repository for details.
Use the machine API to allocate a machine.
See the documentation in the cluster-api-provider-metal3 repository for details.
The new Machine is associated with an available
BareMetalHost, which triggers provisioning of that host to join the cluster. This association is done by the Actuator when it sets the
MachineReffield on the
The design documents for Metal3 are all publicly available. Refer to the metal3-io/metal3-docs github repository for details.
Around the Web
- Metal³: Deploy Kubernetes on Bare Metal - Yolanda Robla - Shift Dev 2019
- Introducing metal3 kubernetes native bare metal host management - Kubecon NA 2019
- Extend Your Data Center to the Hybrid Edge - Red Hat Summit, May 2019
- OpenStack Ironic and Bare Metal Infrastructure: All Abstractions Start Somewhere - Chris Hoge, OpenStack Foundation; Julia Kreger, Red Hat
- Kubernetes-native Infrastructure: Managed Baremetal with Kubernetes Operators and OpenStack Ironic - Steve Hardy, Red Hat
In The News
- The New Stack: Metal3 Uses OpenStack’s Ironic for Declarative Bare Metal Kubernetes
- The Register: Raise some horns: Red Hat’s MetalKube aims to make Kubernetes on bare machines simple