Skip to content

docs(bare-metal): document the AIT-70186 baremetal lifecycle#97

Open
wgkingk wants to merge 5 commits into
masterfrom
docs/baremetal-provider-lifecycle
Open

docs(bare-metal): document the AIT-70186 baremetal lifecycle#97
wgkingk wants to merge 5 commits into
masterfrom
docs/baremetal-provider-lifecycle

Conversation

@wgkingk
Copy link
Copy Markdown
Contributor

@wgkingk wgkingk commented May 25, 2026

Replace the "Planned" stubs with a full provider documentation set built from the cluster-api-provider-baremetal qa/AIT-70186-baremetal-lifecycle branch: pool/plan model, install flow, YAML cluster creation (with the hardened KubeadmControlPlane appendix), node management, Kubernetes upgrade via replacement, and per-CRD API pages. Flip every provider index from "📋 Planned" to "✅ Available (YAML only)" so the new pages are discoverable.

Summary by CodeRabbit

  • Documentation
    • Bare Metal provider now fully available (YAML-only) with a comprehensive provider overview and concepts
    • Added installation, cluster creation, node management, and upgrade guides with step-by-step workflows, verification, and troubleshooting
    • Added API reference and CRD documentation for BaremetalCluster, BaremetalMachine, BaremetalMachineTemplate, MachineInventoryPool, MachineInventory, MachineRegistration, SeedImage
    • Updated docs navigation and indexes to surface Bare Metal content

Review Change Stack

Replace the "Planned" stubs with a full provider documentation set built
from the cluster-api-provider-baremetal `qa/AIT-70186-baremetal-lifecycle`
branch: pool/plan model, install flow, YAML cluster creation (with the
hardened KubeadmControlPlane appendix), node management, Kubernetes
upgrade via replacement, and per-CRD API pages. Flip every provider
index from "📋 Planned" to "✅ Available (YAML only)" so the new pages
are discoverable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Warning

Review limit reached

@wgkingk, we couldn't start this review because you've used your available PR reviews for now.

Your plan includes 1 review of capacity. Refill in 2 minutes and 8 seconds.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more review capacity refills, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d84efa27-6e4c-406b-bdb1-98a039c27e90

📥 Commits

Reviewing files that changed from the base of the PR and between 9322e86 and 8dd8b32.

📒 Files selected for processing (5)
  • docs/en/create-cluster/bare-metal.mdx
  • docs/en/install/bare-metal.mdx
  • docs/en/manage-nodes/bare-metal.mdx
  • docs/en/upgrade-cluster/bare-metal.mdx
  • docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineinventories.yaml

Walkthrough

This PR replaces "Planned" placeholders with full bare-metal documentation: provider overview, API reference pages, CRD manifests, installation, cluster creation, worker node management, and Kubernetes upgrade procedures.

Changes

Bare Metal Provider Documentation Suite

Layer / File(s) Summary
Provider Overview and Architecture
docs/en/overview/providers-bare-metal.mdx, docs/en/overview/providers/index.mdx
Comprehensive provider overview replaces placeholder with documented architecture (elemental-operator + cluster-api-provider-baremetal), workflow model (host install + plan-driven upgrade), key features, concepts, API resources, Kubernetes version support, and operational requirements. Provider index updated to reflect Available (YAML only) status and control-plane load-balancer mechanism.
API Reference Pages
docs/en/apis/providers/bare-metal/*
CRD reference pages added for BaremetalCluster, BaremetalMachine, BaremetalMachineTemplate, MachineInventoryPool, MachineInventory, MachineRegistration, and SeedImage with K8sCrd component renders. APIs index provides overview table of custom resources and related upstream Cluster API dependencies.
CRD Manifests
docs/shared/crds/providers/bare-metal/*
Added OpenAPI v3 CRD manifests for machineinventories.elemental.cattle.io, machineregistrations.elemental.cattle.io, seedimages.elemental.cattle.io, baremetalclusters.infrastructure.cluster.x-k8s.io, baremetalmachines.infrastructure.cluster.x-k8s.io, baremetalmachinetemplates.infrastructure.cluster.x-k8s.io, and machineinventorypools.infrastructure.cluster.x-k8s.io.
Installation and Setup
docs/en/install/bare-metal.mdx, docs/en/install/index.mdx
Complete installation guide replaces placeholder with prerequisites, plugin download/upload references, umbrella chart configuration options (platform URL, cluster name, TLS CA, image catalog mapping), CRD and elemental-image-catalog verification steps, and next-step links to cluster creation.
Cluster Provisioning Workflow
docs/en/create-cluster/bare-metal.mdx, docs/en/create-cluster/index.mdx
End-to-end cluster creation guide replaces placeholder with prerequisite overview, placeholder values reference table, three-step workflow (host registration/SeedImage, MachineInventoryPool creation, control-plane resources), detailed YAML examples, verification checks, common failure-mode troubleshooting, and KubeadmControlPlane template appendix.
Worker Node Operations and Scaling
docs/en/manage-nodes/bare-metal.mdx, docs/en/manage-nodes/index.mdx
Worker management guide replaces placeholder with prerequisites, resource overview, deployment procedure, scaling operations (up/down, removal modes), node recovery/replacement, BaremetalMachineTemplate swapping, bootstrap template rollouts, observability annotations, common failure modes, and next-step links.
Kubernetes Upgrade Procedures
docs/en/upgrade-cluster/bare-metal.mdx, docs/en/upgrade-cluster/index.mdx
Phase 2 upgrade guide replaces placeholder with upgrade mechanics (clean → reprovision), prerequisites (reachability, node health, catalog presence), image catalog update methods (chart override or ConfigMap patch), control-plane and worker upgrade sequences, cross-version staging, rollback procedure, verification and troubleshooting tables, and resource links.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • chinameok

Poem

I'm a rabbit in docs, nibbling text with cheer, 🐇
From "Planned" to "Ready" the pages now appear,
Install to upgrade, each step in its place—
I boxed up the guides with a hop and a pace. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly references the main objective of this PR: documenting the bare-metal provider lifecycle (sourced from AIT-70186). It clearly summarizes the primary change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/baremetal-provider-lifecycle

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/en/upgrade-cluster/bare-metal.mdx`:
- Line 44: The sentence stating that old and new nodes “coexist briefly” is
inconsistent with the documented delete-then-add replacement using maxSurge=0;
update the sentence referencing MachineInventory / clean plan / Machine to state
that the inventory released by a clean plan may not be the same one re-allocated
and that replacements are performed as delete-then-add (no overlap) when
maxSurge=0, so pool capacity sizing should not assume simultaneous coexistence
of old and new nodes during rollout.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0c65ce88-4750-4297-a1de-da3b4bce953c

📥 Commits

Reviewing files that changed from the base of the PR and between 3061de6 and 3e86975.

📒 Files selected for processing (15)
  • docs/en/apis/providers/bare-metal/baremetalcluster.mdx
  • docs/en/apis/providers/bare-metal/baremetalmachine.mdx
  • docs/en/apis/providers/bare-metal/baremetalmachinetemplate.mdx
  • docs/en/apis/providers/bare-metal/index.mdx
  • docs/en/apis/providers/bare-metal/machineinventorypool.mdx
  • docs/en/create-cluster/bare-metal.mdx
  • docs/en/create-cluster/index.mdx
  • docs/en/install/bare-metal.mdx
  • docs/en/install/index.mdx
  • docs/en/manage-nodes/bare-metal.mdx
  • docs/en/manage-nodes/index.mdx
  • docs/en/overview/providers/bare-metal.mdx
  • docs/en/overview/providers/index.mdx
  • docs/en/upgrade-cluster/bare-metal.mdx
  • docs/en/upgrade-cluster/index.mdx

Comment thread docs/en/upgrade-cluster/bare-metal.mdx Outdated
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 25, 2026

Deploying alauda-immutable-infra with  Cloudflare Pages  Cloudflare Pages

Latest commit: 8dd8b32
Status: ✅  Deploy successful!
Preview URL: https://9b07a6a5.alauda-immutable-infra.pages.dev
Branch Preview URL: https://docs-baremetal-provider-life.alauda-immutable-infra.pages.dev

View logs

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 1 file(s) based on 1 unresolved review comment.

Files modified:

  • docs/en/upgrade-cluster/bare-metal.mdx

Commit: 2e19e62214772628525f64c047bc76560fa2ec6b

The changes have been pushed to the docs/baremetal-provider-lifecycle branch.

Time taken: 2m 33s

coderabbitai Bot and others added 2 commits May 25, 2026 06:01
Fixed 1 file(s) based on 1 unresolved review comment.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
The 4 provider API pages referenced <K8sCrd> by name but the matching
CustomResourceDefinition YAMLs were never copied into
docs/shared/crds/providers/bare-metal/, so the schemas rendered empty.

- Add all 7 CRD sources (4 infrastructure.cluster.x-k8s.io + 3
  elemental.cattle.io), Helm-wrapper-stripped, validated as parseable.
- Add MachineRegistration / SeedImage / MachineInventory API pages so the
  elemental resources operators must author/inspect are documented, not
  just listed.
- Restructure the API index into Provider / Elemental / upstream CAPI
  sections with links to every page.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineinventories.yaml`:
- Around line 215-221: Fix the typo in the tpmHash field description: locate the
description for the tpmHash property (symbol "tpmHash") and change the word
"identifiy" to "identify" so the sentence reads "using TPM2 to identify nodes.";
keep rest of the text unchanged.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 108c139b-71af-4ce3-a05c-3e39eccaaae3

📥 Commits

Reviewing files that changed from the base of the PR and between 2e19e62 and 2a1d1ce.

📒 Files selected for processing (11)
  • docs/en/apis/providers/bare-metal/index.mdx
  • docs/en/apis/providers/bare-metal/machineinventory.mdx
  • docs/en/apis/providers/bare-metal/machineregistration.mdx
  • docs/en/apis/providers/bare-metal/seedimage.mdx
  • docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineinventories.yaml
  • docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineregistrations.yaml
  • docs/shared/crds/providers/bare-metal/elemental.cattle.io_seedimages.yaml
  • docs/shared/crds/providers/bare-metal/infrastructure.cluster.x-k8s.io_baremetalclusters.yaml
  • docs/shared/crds/providers/bare-metal/infrastructure.cluster.x-k8s.io_baremetalmachines.yaml
  • docs/shared/crds/providers/bare-metal/infrastructure.cluster.x-k8s.io_baremetalmachinetemplates.yaml
  • docs/shared/crds/providers/bare-metal/infrastructure.cluster.x-k8s.io_machineinventorypools.yaml
✅ Files skipped from review due to trivial changes (5)
  • docs/en/apis/providers/bare-metal/machineinventory.mdx
  • docs/en/apis/providers/bare-metal/seedimage.mdx
  • docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineregistrations.yaml
  • docs/en/apis/providers/bare-metal/machineregistration.mdx
  • docs/shared/crds/providers/bare-metal/infrastructure.cluster.x-k8s.io_baremetalclusters.yaml

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 1 file(s) based on 1 unresolved review comment.

Files modified:

  • docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineinventories.yaml

Commit: 9322e864cbb7d52eb83aa73d80de03090acc03e9

The changes have been pushed to the docs/baremetal-provider-lifecycle branch.

Time taken: 2m 5s

Fixed 1 file(s) based on 1 unresolved review comment.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineinventories.yaml (1)

112-113: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Description says "list" but schema defines a map.

The description states "IPAddressPools is a list of IPAddressPool," but the schema uses additionalProperties (lines 89-114), which defines a map, not an array. Consider updating the description to match, e.g., "IPAddressPools is a map of IPAddressPool objects associated to this machine."

📝 Proposed fix
-                description: IPAddressPools is a list of IPAddressPool associated
-                  to this machine.
+                description: IPAddressPools is a map of IPAddressPool objects associated
+                  to this machine.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineinventories.yaml`
around lines 112 - 113, The description for the IPAddressPools field is
inconsistent with the schema: the schema for IPAddressPools uses
additionalProperties (a map) but the description says "list"; update the
description for IPAddressPools to reflect a map structure (e.g., "IPAddressPools
is a map of IPAddressPool objects associated to this machine") so it matches the
schema definition (see IPAddressPools and the additionalProperties block).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In
`@docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineinventories.yaml`:
- Around line 112-113: The description for the IPAddressPools field is
inconsistent with the schema: the schema for IPAddressPools uses
additionalProperties (a map) but the description says "list"; update the
description for IPAddressPools to reflect a map structure (e.g., "IPAddressPools
is a map of IPAddressPool objects associated to this machine") so it matches the
schema definition (see IPAddressPools and the additionalProperties block).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3a0ff657-d3d9-4a10-a38c-160867a6d5dc

📥 Commits

Reviewing files that changed from the base of the PR and between 2a1d1ce and 9322e86.

📒 Files selected for processing (1)
  • docs/shared/crds/providers/bare-metal/elemental.cattle.io_machineinventories.yaml

Comment thread docs/en/install/bare-metal.mdx Outdated
Comment thread docs/en/install/bare-metal.mdx Outdated
Comment thread docs/en/install/bare-metal.mdx Outdated
Comment thread docs/en/create-cluster/bare-metal.mdx Outdated
Comment thread docs/en/create-cluster/bare-metal.mdx Outdated
Comment thread docs/en/create-cluster/bare-metal.mdx Outdated
Comment thread docs/en/create-cluster/bare-metal.mdx Outdated
Comment thread docs/en/manage-nodes/bare-metal.mdx Outdated
Comment thread docs/en/upgrade-cluster/bare-metal.mdx
Comment thread docs/en/upgrade-cluster/bare-metal.mdx Outdated
Address @wgkingk's review comments:
- install: drop internal chart values (platformUrl, registry address/TLS,
  image-catalog values table) so the page stays consistent with the other
  providers and does not expose internal knobs.
- create-cluster: remove the /etc/resolv.conf write_files example (the OS
  manages resolv.conf); reword "used in QA" to production guidance; drop the
  optional cpaas.io/registry-address annotation (the provider falls back to
  the platform registry-credential Secret) and fix the dependent prose;
  remove the single-control-plane layout — bare-metal requires >=3 CP nodes.
- manage-nodes: drop kubeletExtraArgs.cloud-provider=external (no
  cloud-provider on bare-metal).
- upgrade-cluster: clarify the image catalog is normally re-rendered by the
  plugin (operator just verifies); remove the rollback section (bare-metal
  rollback guidance is still "planned" per global/upgrade).

Also apply the open CodeRabbit finding: IPAddressPools description says
"list" but the schema is a map (additionalProperties) -> "map".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant