Skip to content

Conversation

@lentzi90
Copy link
Member

@lentzi90 lentzi90 commented Oct 14, 2025

The guide has been broken by upstream changes, and is a bit outdated
anyway. This is a quite substantial refresh of it that also introduces IrSO.

  • Bump k8s to v1.34.1
  • Deploy Ironic using IrSO
  • Switch to UEFI boot mode

Fixes #567

@metal3-io-bot
Copy link
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@metal3-io-bot metal3-io-bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Oct 14, 2025
@metal3-io-bot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign zaneb for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@metal3-io-bot metal3-io-bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Oct 14, 2025
@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch from 652b112 to 7a946d2 Compare October 16, 2025 11:37
@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch from 7a946d2 to 60ffb94 Compare October 16, 2025 13:41
@metal3-io-bot metal3-io-bot added the needs-rebase Indicates that a PR cannot be merged because it has merge conflicts with HEAD. label Oct 27, 2025
@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch from 60ffb94 to 857c22e Compare October 29, 2025 11:58
@metal3-io-bot metal3-io-bot removed the needs-rebase Indicates that a PR cannot be merged because it has merge conflicts with HEAD. label Oct 29, 2025
@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch from 857c22e to 3f96712 Compare October 30, 2025 13:44
@metal3-io-bot metal3-io-bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Oct 30, 2025
@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch 3 times, most recently from e15486f to 321edf9 Compare November 10, 2025 09:40
@lentzi90 lentzi90 marked this pull request as ready for review November 10, 2025 09:41
@metal3-io-bot metal3-io-bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Nov 10, 2025
@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch from 321edf9 to f39bc48 Compare November 10, 2025 10:59
@metal3-io-bot metal3-io-bot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Nov 10, 2025
@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch from f39bc48 to 00b71ba Compare November 10, 2025 11:01
Comment on lines +4 to +9
# This is the kustomization that we build on. You can download it and change
# the URL to a relative path if you do not want to access it over the network.
# Note that the ref=main specifies the version to use.
# We use main here simply because the integration with IrSO is not included in a release yet.
resources:
- https://github.com/metal3-io/baremetal-operator/config/use-irso?ref=main
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: After next BMO release, pin to release instead of main.

Comment on lines 16 to 32
patches:
- target:
kind: Deployment
name: ironic-standalone-operator-controller-manager
patch: |-
apiVersion: apps/v1
kind: Deployment
metadata:
name: ironic-standalone-operator
spec:
template:
spec:
containers:
- name: manager
envFrom:
- configMapRef:
name: ironic-operator-config
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This patch is no longer needed in IrSO v0.7. Then we have a predictable name for the configmap that we can reuse instead. See metal3-io/ironic-standalone-operator#405

Comment on lines +15 to +17
export CTLPLANE_KUBEADM_EXTRA_CONFIG="
preKubeadmCommands:
- systemctl enable --now crio
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: Fix node images so that crio is enabled. We should not need preKubeadmCommands for stuff like this.

Comment on lines 11 to 31
kubectl -n ironic-standalone-operator-system wait --for=condition=Available deploy/ironic-standalone-operator-controller-manager

# Now we can deploy Ironic and BMO
kubectl create ns baremetal-operator-system
# Apply Ironic with retry logic (up to 5 attempts with 10 second delays).
# The IrSO webhoook is not guaranteed to be ready when the IrSO deployment is,
# so some retries may be needed.
MAX_RETRIES=5
RETRY_DELAY=10
RETRY_COUNT=0
echo "Applying Ironic configuration..."
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
if kubectl apply -k ironic; then
echo "Successfully applied Ironic configuration"
break
else
RETRY_COUNT=$((RETRY_COUNT + 1))
echo "Failed to apply Ironic configuration. Retrying in ${RETRY_DELAY} seconds... (Attempt $RETRY_COUNT/$MAX_RETRIES)"
sleep $RETRY_DELAY
fi
done
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used this for easy testing. Not sure if we should actually include the retry in the guide or just say "wait for IrSO, then deploy Ironic". What do you think?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would want vbmctl to take care of all of this eventually.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is copied from https://github.com/metal3-io/baremetal-operator/blob/main/test/e2e/sushy-tools/sushy-emulator.conf for easy testing. I think not all the settings here are needed so we could minimize it a bit more. We could also avoid having a copy in this repo and just use it directly from BMO.

@lentzi90
Copy link
Member Author

Ok I think this is ready for review now. Note that there is a test commit that switches all the "embed" snippets to use this branch to make the netlify render correct. Otherwise they would show up empty since the content is not on main yet.
Putting hold to avoid accidental merge with test commit.
/hold

@metal3-io-bot metal3-io-bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Nov 10, 2025
Copy link
Member

@tuminoid tuminoid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nits

RETRY_DELAY=10
RETRY_COUNT=0
echo "Applying Ironic configuration..."
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
while [[ "${RETRY_COUNT}" -lt "${MAX_RETRIES}" ]]; do

@tuminoid tuminoid requested a review from Copilot November 12, 2025 17:39
Copilot finished reviewing on behalf of tuminoid November 12, 2025 17:42
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR modernizes the quick-start guide to reflect current upstream changes and best practices. The guide has been updated from Ubuntu 22.04 to 24.04, Kubernetes to v1.34.1, and introduces Ironic Standalone Operator (IrSO) for simplified deployment. The setup also switches from legacy to UEFI boot mode for better compatibility.

Key Changes

  • Introduces Ironic Standalone Operator (IrSO) for managing Ironic deployment, replacing manual kustomization setup
  • Updates base OS from Ubuntu 22.04 to 24.04 and Kubernetes version to v1.34.1
  • Switches to UEFI boot mode from legacy BIOS

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 15 comments.

Show a summary per file
File Description
docs/user-guide/src/quick-start.md Restructures guide to use IrSO, updates OS/k8s versions, simplifies deployment steps by removing manual DHCP and Ironic setup sections
docs/user-guide/examples/sushy-emulator.conf Adds sushy-tools configuration for virtual BMC simulation with UEFI boot support
docs/user-guide/examples/setup-virtual-lab.sh Creates virtualized lab environment with networking, VMs, and BMC emulation
docs/user-guide/examples/setup-bootstrap.sh Bootstraps management cluster with kind, cert-manager, IrSO, Ironic, and BMO
docs/user-guide/examples/net.xml Defines libvirt network with DHCP and PXE boot configuration
docs/user-guide/examples/kind.yaml Configures kind cluster with port forwarding for Ironic services
docs/user-guide/examples/ironic/kustomization.yaml Defines kustomization for Ironic and certificate resources
docs/user-guide/examples/ironic/ironic.yaml Configures Ironic instance via IrSO with DHCP and networking settings
docs/user-guide/examples/ironic/certificate.yaml Sets up TLS certificates for Ironic using cert-manager
docs/user-guide/examples/image-server.sh Downloads disk images and starts nginx server for image hosting
docs/user-guide/examples/cleanup-virtual-lab.sh Cleans up virtualized lab resources including VMs, networks, and network interfaces
docs/user-guide/examples/capm3-vars.sh Exports environment variables for CAPM3 deployment with updated image URLs and k8s version
docs/user-guide/examples/bmo/kustomization.yaml Simplifies BMO deployment using IrSO integration
docs/user-guide/examples/bmh-01.yaml Example BareMetalHost manifest for virtualized setup with UEFI boot
docs/user-guide/examples/bmh-01-provision.yaml Example BareMetalHost with image provisioning configuration
docs/user-guide/examples/bmc-secret.yaml Template for BMC credentials secret

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tuminoid
Copy link
Member

PTAL Copilot review, some legit minor findings at least.

@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch from 00b71ba to 0da3ee7 Compare November 13, 2025 09:19
The guide has been broken by upstream changes, and is a bit outdated
anyway. This is a quite substantial refresh of it that also introduces
IrSO.

- Bump k8s to v1.34.1
- Deploy Ironic using IrSO
- Switch to UEFI boot mode

Signed-off-by: Lennart Jern <[email protected]>
Signed-off-by: Lennart Jern <[email protected]>
@lentzi90 lentzi90 force-pushed the lentzi90/quick-revision branch from 0da3ee7 to 6ca6baf Compare November 13, 2025 13:06
@metal3-io-bot metal3-io-bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Nov 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IPA hasn't the correct ironic IP

3 participants