-
Epic
-
Resolution: Done
-
Normal
-
None
-
None
-
OCL Day 1 Support
-
False
-
-
False
-
Not Selected
-
Done
-
0% To Do, 0% In Progress, 100% Done
-
S
-
0
Done When the enhancement for install time support is written and reviewed by stake holders.
Some notes from discussions:
- Install-config.yaml has an option to enable OCL
- Bootstrap MCO can parse MOSC yamls for master and worker nodes
- An image is built for each pool and then rolled out onto the nodes
Installer Process:
- First step: Installer (openshift-install) generates manifests
- Runs on local machine and generates items needed to start the installation process
- Second step: Bootstrap node comes up and parses generated manifest
- Content and objects needed to create master nodes is processed during this step
- Bootstrap MCO process runs on any MCO objects existing in the installation directory
- Third step: Master nodes create content and objects needed to spin up worker nodes
What needs to be done for OCL:
- Field in the install-config.yaml to manage enabling OCL
- MOSC yaml created in the installation directory
- In future, generate an MOSC when one is not provided
- Bootstrap MCO will parse this
- Should contain all secrets, containerfiles, and specs needed for image build
- 2 yamls should be created, one each for the master and worker pools
- For now, require users to create an MOSC when OCL is enabled in the install-config.yaml
- In future, generate an MOSC when one is not provided
- Bootstrap MCO parses the master MOSC yaml
- This process will be started after the first rendered MachineConfig is created
- Run a registry on the bootstrap node to host the build master mcp image
- Given we will host the registry on the node, what image pushspec will be used in the MOSC?
- Maybe, it is something we generate and keep track of
- Build pod to build the image is created
- Should MOSB be created here?
- Need to see if current process can just be used for bootstrap node
- Once build is done, image is pushed to registry running on bootstrap node
- Once the master nodes are up with current version of RHCOS, do a bootc switch or rpm-ostree rebase to boot into the built image
- Bootstrap node cannot communicate with worker nodes
- Bootstrap node created the master nodes
- The master nodes then create the worker nodes
- Communication is only possible between bootstrap and master nodes and between master and worker nodes
- Does the bootstrap node or installer create the master nodes?
- Master nodes parse the worker MOSC yaml
- Can use external registry here for build image or imagestream (while it is still available)
- MOSB generated and build job created
- Once build is done, image is pushed to registry
- Once the worker nodes are up with current version of RHCOS, do a bootc switch or rpm-ostree rebase to boot into the built image
- Build and rollout failures
-
- Handle failures the same way we handle any installation failures today
- The installation has to be cleared out and started again
- Gather more data into the install log bundle related to the OCL process
- Handle failures the same way we handle any installation failures today
Questions:
- Do we want to make the bootstrap be able to install itself via a container image eventually?
- Do we want to be able to boot into the container image built directly instead of having to do a switch or rebase?
- Do we want to make image mode the only path and remove ignition completely?
- Consider how this would hook into hypershift
Relevant code paths:
- https://github.com/openshift/installer/blob/main/data/data/bootstrap/files/usr/local/bin/bootkube.sh.template
- https://github.com/openshift/installer/blob/main/pkg/asset/ignition/bootstrap/bootstrap.go
- https://github.com/openshift/machine-config-operator/blob/master/pkg/operator/bootstrap.go
- https://github.com/openshift/machine-config-operator/blob/master/pkg/controller/bootstrap/bootstrap.go#L124-L159
T-shirt size:
- Enhancement: S
- Implementation: L