Skip to content

Commit d327d21

Browse files
Merge pull request #435 from russellb/pr-102-followup
baremetal: Address comments on #102
2 parents 7203cf1 + 31077bc commit d327d21

File tree

1 file changed

+51
-37
lines changed

1 file changed

+51
-37
lines changed

enhancements/baremetal/baremetal.md

Lines changed: 51 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ below.
4040

4141
Baremetal IPI deployments enable OpenShift to enroll baremetal servers to become
4242
Nodes 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
4444
dependencies) run in their own pod called "metal3". This pod is deployed by the
4545
Machine API Operator when the Platform type is `BareMetal`. The OpenShift
4646
Installer is responsble for providing all the necessary configs required for
@@ -88,9 +88,9 @@ with the right configuration.
8888
With the addition of features described in this and other enhancements
8989
detailed in this current directory, OpenShift can be used to bring up
9090
a 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
9494
servers.
9595

9696
1. 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.
104104
Metal3.io is a set of Kubernetes controllers that wrap the OpenStack Ironic
105105
project to provide Kubernetes native APIs for managing deployment and
106106
monitoring of physical hosts.
107107

108108
The 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

118119
Control Plane Deployment
119120

121+
Details about DNS and load balancer automation for this platform are documented
122+
[here][11].
123+
120124
1. A minimin Baremetal IPI deployment consists of 4 hosts, one to be used
121125
first as a provisioning host and later potentially re-purposed as a worker.
122126
The 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

125130
2. Installation can be kicked off by downloading and running
126131
"openshift-baremetal-install". This image differs from the "openshift-install"
127132
binary only because libvirt is needs to be always linked for the baremetal
128133
install. Removing a bootstrap node would remove the dependency on libvirt
129134
and 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

132139
3. The installer starts a bootstrap VM on the provisioning host. With other
133140
platform 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
140147
provisioning network needs to be provided to the installer.
141148

142149
5. 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

145154
6. The installer user Ironic in the bootstrap VM to provision each host that
146155
makes up the control plane. The installer uses terraform to invoke Ironic API
147156
that configures each host to boot over the provisioning network using DHCP
148157
and 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

154165
8. After the Ironic Agent on the host boots and runs from its ramdisk image, it
155166
looks 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

196207
2. The user adds hosts to the available inventory for their cluster by creating
197208
BareMetalHost 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

200211
3. The cluster-api-provider-baremetal (CAPBM) controller finds an unassigned/free
201212
BareMetalHost 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

231242
True 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
233244
help of some developer scripts.
234245

235246
Unit tests have been added to MAO and the Installer to test additions
236247
made 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

242253
Metal3 integration is currently missing an important piece to information on
243254
the baremetal servers and ther provisioning environment. Without this, true
244255
end 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
249260
a user to specify the baremetal server details and its provisioning setup. It
250261
is really not usable in this state without the help of external scripts that
251262
provied 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

269281
The 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].
272284
Implementation 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

Comments
 (0)