-
Notifications
You must be signed in to change notification settings - Fork 31
Add bootc build and deployment guide #150
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Add comprehensive documentation for building EDPM bootc container images and QCOW2 disk images, including: - Step-by-step build instructions for bootc containers - QCOW2 image generation and packaging - Usage with OpenStackDataPlaneNodeSet resources - Configuration examples for baremetal deployment - Field descriptions for osImage and osContainerImageUrl 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> Jira: OSPRH-20326 Signed-off-by: James Slagle <jslagle@redhat.com>
Add comprehensive documentation for the USER_PACKAGES build argument: - Environment variable configuration - Usage in build commands - Multiple practical examples (debugging, storage, network, development tools) - Important notes about package availability and image size impact - Integration with existing build process 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: James Slagle <jslagle@redhat.com>
bootc.md
Outdated
|
|
||
| If you need a QCOW2 disk image for bare metal deployment: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As a nit, I would frame this as a "deployment image" in general. Because your likely not going direct to a VM with the container either.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sounds good, i can make that change
|
|
||
| - **`baremetalSetTemplate.osImage`**: The filename of the QCOW2 image that will be extracted from the container. This should match the filename inside your QCOW2 container image (typically `edpm-bootc.qcow2`). | ||
|
|
||
| - **`baremetalSetTemplate.osContainerImageUrl`**: The full URL to your QCOW2 container image that was built and pushed in the previous steps. This is the image tagged with `-qcow2` suffix (e.g., `your-registry.example.com/edpm-bootc:latest-qcow2`). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A note for other reviewers in terms of long term context:
When Metal3 natively supports invoking Ironic's bootc deploy interface, this will need to change to only be an OCI URL. The osImage value would no longer apply because we won't need images anymore to deploy the workload.
bootc.md
Outdated
| target bootc container image using the following ansible variable: | ||
|
|
||
| ```yaml | ||
| edpm_bootc_os_container_image: "your-registry.example.com/edpm-bootc:updated-version" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question, This is being done with tags in the OCI registry. Tags can be changed/moved as time goes on.
Have we tested with a shadigest url for absolute matching to a specific manifest, i.e. skipping the tag match.
Furthermore, Do we want to create a pattern of changing/retargetting the tag? Presumably operators could just update the tag reference in the registry and not actually have to change this value, but we likely need to validate if it works happily or not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tested bootc switch (which is how this variable gets used) using an image reference by sha256, and that worked fine.
I think we default to using images by sha256 in the product, so if that's the case, we ought to do the same for this image.
|
Overall, I think this is in really good shape to merge. I'd prefer a little more reviewer activity and I have noted other items in the docs but I don't think they require this PR to be updated to merge it as is. |
b191664 to
25df836
Compare
bootc.md
Outdated
| sudo podman push ${EDPM_QCOW2_IMAGE} | ||
| ``` | ||
|
|
||
| ## Step 8: Extract QCOW2 from Container (Usage) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This isn't really a step is it? It is just for if they want to examine the qcow2 for some reason
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe move this to a ### section in Image Contents?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
|
Overall this looks good to me. I do wonder though if it is time we published upstream centos edpm-bootc:[version] and edpm-bootc:[version]-qcow2 images. Then these docs can be reworked around customisation of these "base" images. |
The images are being built and pushed to quay on edpm-image-builder commits (or can be triggered on demand). https://quay.io/repository/openstack-k8s-operators/edpm-bootc?tab=tags I could add something to the docs to describe customizing that, but until we get it shipped downstream as well, we'd still need the build steps. |
jistr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
|
|
||
| 2. **Build updated bootc image**: If needed, rebuild your bootc image with the newer `openstack-selinux` version | ||
|
|
||
| 3. Create `edpm-update-system-selinux.yaml` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense if it's desired to deploy minimal changes that allow to update OpenStack. I'd guess many customers would take the approach "if i'm already rebooting, i might as well update the whole OS image". So i'm not sure how often would it come to updating selective packages like this, but +1 to have this approach spelled out.
Add comprehensive EDPM update documentation for bootc nodes: 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: James Slagle <jslagle@redhat.com>
|
There's no automated merge with tide on this repo. Given the previous acks, going to merge this one. |
Add comprehensive documentation for building EDPM bootc container images
and QCOW2 disk images, including:
🤖 Generated with Claude Code
Jira: OSPRH-20326
Co-Authored-By: Claude noreply@anthropic.com
Signed-off-by: James Slagle jslagle@redhat.com