4040
4141Baremetal IPI deployments enable OpenShift to enroll baremetal servers to become
4242Nodes that can run K8s workloads.
43- The Baremetal Operator [ 1] along with other provisioning services (Ironic and
43+ The [ Baremetal Operator] [ 1 ] along with other provisioning services (Ironic and
4444dependencies) run in their own pod called "metal3". This pod is deployed by the
4545Machine API Operator when the Platform type is ` BareMetal ` . The OpenShift
4646Installer is responsble for providing all the necessary configs required for
@@ -88,9 +88,9 @@ with the right configuration.
8888With the addition of features described in this and other enhancements
8989detailed in this current directory, OpenShift can be used to bring up
9090a functioning cluster starting with a set of baremetal servers. As
91- mentioned earlier, these enhancements rely on the Baremetal Operator (BMO)
92- [ 1 ] running within the "metal3" pod to manage baremetal hosts. The BMO in
93- turn relies on the Ironic service [ 3] to manage and provision baremetal
91+ mentioned earlier, these enhancements rely on the [ Baremetal Operator (BMO)] [ 1 ]
92+ running within the "metal3" pod to manage baremetal hosts. The BMO in
93+ turn relies on the [ Ironic service] [ 3 ] to manage and provision baremetal
9494servers.
9595
96961 . Will enable the user to deploy a control plane with 3 master nodes.
@@ -100,34 +100,41 @@ nodes.
100100
101101### Implementation Details/Notes/Constraints
102102
103- Baremetal IPI is integrated with OpenShift through the metal3.io [ 8] project.
103+ Baremetal IPI is integrated with OpenShift through the [ metal3.io] [ 8 ] project.
104104Metal3.io is a set of Kubernetes controllers that wrap the OpenStack Ironic
105105project to provide Kubernetes native APIs for managing deployment and
106106monitoring of physical hosts.
107107
108108The installer support for Baremetal IPI deployments is described in more detail
109- in [ 7] . The installer runs on a special "provisioning host" that needs to be
110- connected to both a "provisioning network" and an "external network". The
111- provisioning network is a dedicated network used just for the purposes of
112- configuring baremetal servers to be part of the cluster. The traffic on the
113- provisioning network needs to be isolated from the traffic on the external
114- network (hence 2 seperate networks.). The external network is used to carry
115- cluster traffic which which includes cluster control plane traffic, application
116- and data traffic.
109+ in [ this document] [ 7 ] . The installer runs on a special "provisioning host" that
110+ needs to be connected to both a "provisioning network" and an "external
111+ network". The provisioning network is a dedicated network used just for the
112+ purposes of configuring baremetal servers to be part of the cluster. The
113+ traffic on the provisioning network needs to be isolated from the traffic on
114+ the external network (hence 2 seperate networks.). The external network is used
115+ to carry cluster traffic which which includes cluster control plane traffic,
116+ application and data traffic. More detail on the networking requirements for
117+ the cluster can be found in [ this document] [ 10 ] .
117118
118119Control Plane Deployment
119120
121+ Details about DNS and load balancer automation for this platform are documented
122+ [ here] [ 11 ] .
123+
1201241 . A minimin Baremetal IPI deployment consists of 4 hosts, one to be used
121125first as a provisioning host and later potentially re-purposed as a worker.
122126The other 3 make up the control plane. These 4 hosts need to be connected
123- to both the provisioning and external networks.
127+ to both the provisioning and external networks. The provisioning host is a
128+ RHEL 8 host capable of running libvirt VMs.
124129
1251302 . Installation can be kicked off by downloading and running
126131"openshift-baremetal-install". This image differs from the "openshift-install"
127132binary only because libvirt is needs to be always linked for the baremetal
128133install. Removing a bootstrap node would remove the dependency on libvirt
129134and then baremetal IPI installs can be part of the normal Openshift installer.
130- This is in the roadmap for this work and being investigated.
135+ This is in the roadmap for this work and being investigated. Note that it is
136+ still built from the same installer code base and is only a separate binary
137+ build.
131138
1321393 . The installer starts a bootstrap VM on the provisioning host. With other
133140platform types supported by OpenShift, a cloud already exists and the installer
@@ -140,16 +147,20 @@ the network interface on the provisioning host that is connected to the
140147provisioning network needs to be provided to the installer.
141148
1421495 . The bootstrap VM must be configured with a special well-known IP within the
143- provisioning network that needs to provided as input to the installer.
150+ provisioning network that needs to provided as input to the installer. This
151+ happens automatically and does not need any intervention by the cluster
152+ operator.
144153
1451546 . The installer user Ironic in the bootstrap VM to provision each host that
146155makes up the control plane. The installer uses terraform to invoke Ironic API
147156that configures each host to boot over the provisioning network using DHCP
148157and PXE.
149158
150- 7 . The bootstrap VM runs a DHCP server and responds with network infomation and
151- PXE instructions when Ironic powers on a host. The host boots the Ironic Agent
152- image which is hosted on the httpd instance also running on the bootstrap VM.
159+ 7 . The bootstrap VM runs a DHCP server on the isolated provisioning network and
160+ responds with network infomation and PXE instructions when Ironic powers on
161+ a host. The host boots the Ironic Agent image which is hosted on the httpd
162+ instance also running on the bootstrap VM. Note that this DHCP server moves
163+ into the cluster as part of the ` metal3 ` pod once the cluster comes up.
153164
1541658 . After the Ironic Agent on the host boots and runs from its ramdisk image, it
155166looks for the Ironic Service either using an URL passed in as a kernel command line
@@ -195,7 +206,7 @@ address in the provisioning network are assigned to each of these hosts.
195206
1962072 . The user adds hosts to the available inventory for their cluster by creating
197208BareMetalHost CRs. For more information about the 3 CRs that already exist for a host
198- transitioning from a baremetal host to a Node, please refer to [ 9] .
209+ transitioning from a baremetal host to a Node, please refer to [ this doc ] [ 9 ] .
199210
2002113 . The cluster-api-provider-baremetal (CAPBM) controller finds an unassigned/free
201212BareMetalHost and uses it to fulfill a Machine resource. It then sets the configuration
@@ -229,23 +240,23 @@ Will be specified in follow-up enhancement requests mentioned above.
229240### Test Plan
230241
231242True e2e and integration testing can happen only after implementation for
232- enhancement [ 2] lands. Until then, e2e testing is being performed with the
243+ [ this enhancement ] [ 2 ] lands. Until then, e2e testing is being performed with the
233244help of some developer scripts.
234245
235246Unit tests have been added to MAO and the Installer to test additions
236247made for the Baremetal IPI case.
237248
238249### Graduation Criteria
239250
240- Metal3 integration is in tech preview in 4.2 and is targetted for GA in 4.4 .
251+ Metal3 integration is in tech preview in 4.2 and is targeted for GA in 4.6 .
241252
242253Metal3 integration is currently missing an important piece to information on
243254the baremetal servers and ther provisioning environment. Without this, true
244255end to end testing cannot be performed in order to graduate to GA.
245256
246257### Upgrade / Downgrade Strategy
247258
248- Metal3 integration is in tech preview n 4.2 and missing key pieces that allows
259+ Metal3 integration is in tech preview in 4.2 and missing key pieces that allows
249260a user to specify the baremetal server details and its provisioning setup. It
250261is really not usable in this state without the help of external scripts that
251262provied the above information in the form of a Config Map.
@@ -262,22 +273,25 @@ respective requests.
262273
263274## Implementation History
264275
265- Implementation to deploy a Metal3 cluster from the MAO was added via [ 4] .
276+ Implementation to deploy a Metal3 cluster from the MAO was added via [ this
277+ commit] [ 4 ] .
266278
267279## Infrastructure Needed
268280
269281The Baremetal IPI solution depends on the Baremetal Operator and the baremetal
270- Machine actuator both of which can be found at [ 5] .
271- OpenShift integration can be found here : [ 6] .
282+ Machine actuator both of which can be found [ here ] [ 5 ] .
283+ OpenShift integration can be found [ here] [ 6 ] .
272284Implementation is complete on the metal3-io and relevant bits have been
273- added to the OpenShift repo.
274-
275- [ 1] - https://github.com/metal3-io/baremetal-operator
276- [ 2] - https://github.com/openshift/enhancements/blob/master/enhancements/baremetal/baremetal-provisioning-config.md
277- [ 3] - https://github.com/openstack/ironic
278- [ 4] - https://github.com/openshift/machine-api-operator/commit/43dd52d5d2dfea1559504a01970df31925501e35
279- [ 5] - https://github.com/metal3-io
280- [ 6] - https://github.com/openshift-metal3
281- [ 7] - https://github.com/openshift/installer/blob/master/docs/user/metal/install_ipi.md
282- [ 8] - https://metal3.io/
283- [ 9] - https://github.com/metal3-io/metal3-docs/blob/master/design/nodes-machines-and-hosts.md
285+ added to the OpenShift repo.
286+
287+ [ 1 ] : https://github.com/metal3-io/baremetal-operator
288+ [ 2 ] : https://github.com/openshift/enhancements/blob/master/enhancements/baremetal/baremetal-provisioning-config.md
289+ [ 3 ] : https://github.com/openstack/ironic
290+ [ 4 ] : https://github.com/openshift/machine-api-operator/commit/43dd52d5d2dfea1559504a01970df31925501e35
291+ [ 5 ] : https://github.com/metal3-io
292+ [ 6] : https://github.com/openshift-metal3
293+ [ 7 ] : https://github.com/openshift/installer/blob/master/docs/user/metal/install_ipi.md
294+ [ 8 ] : https://metal3.io/
295+ [ 9 ] : https://github.com/metal3-io/metal3-docs/blob/master/design/nodes-machines-and-hosts.md
296+ [ 10 ] : https://github.com/openshift/installer/blob/master/docs/user/metal/install_ipi.md
297+ [ 11 ] : https://github.com/openshift/installer/blob/master/docs/design/baremetal/networking-infrastructure.md
0 commit comments