Skip to content

docs: improve standalone bootc installation documentation#841

Open
mangelajo wants to merge 1 commit into
mainfrom
fix-bootc-docs
Open

docs: improve standalone bootc installation documentation#841
mangelajo wants to merge 1 commit into
mainfrom
fix-bootc-docs

Conversation

@mangelajo

Copy link
Copy Markdown
Member

Summary

Restructured the standalone installation guide to better serve both end users and developers by separating concerns and fixing several issues.

User-focused improvements

  • ✅ Simplified installation section with two clear methods:
    1. Kickstart ISO creation (for fresh installs)
    2. system-reinstall-bootc (for existing systems)
  • ✅ Fixed curl commands to properly download and save files with -o flags
  • ✅ Fixed typo: system-reintall-bootcsystem-reinstall-bootc
  • ✅ Fixed URL example formatting (removed extra backtick)
  • ✅ Improved clarity: "you will get a banner" → "the system displays a banner"
  • ✅ Added consistent terminology using {term}\operator``

Developer-focused additions

  • ✅ New comprehensive Development section covering:
    • Building bootc images (single and multi-arch)
    • Testing in containers with make bootc-run
    • Creating bootable QCOW2 and ISO images
    • Kickstart ISO generation with ARM64 support
    • Fast iteration workflow with make bootc-reload-app
    • Troubleshooting common LVM, MicroShift, and config service issues
    • Cleanup procedures
    • Image customization
    • Registry publishing (single and multi-arch)

Before/After

Before: Mixed user and developer content, broken commands, unclear workflow

After: Clear separation - users get simple installation methods, developers get complete build/test/publish workflow

Test plan

  • Verified curl commands download files correctly
  • Verified all Makefile targets referenced exist in the actual Makefile
  • Checked markdown syntax and RST directives render correctly
  • Confirmed command examples are copy-pastable

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The standalone installation guide was reorganized into install, setup, development, bootable artifact, workflow, troubleshooting, cleanup, customization, and registry push sections. It replaces earlier guidance with revised commands and steps for ISO installation, bootc images, container testing, and registry publishing.

Changes

Standalone installation guide rewrite

Layer / File(s) Summary
Install and setup basics
python/docs/source/getting-started/installation/service/standalone.md
The guide adds prerequisites, ISO-based installation, system-reinstall-bootc, and initial banner, password, network, and security setup sections.
Development and service access
python/docs/source/getting-started/installation/service/standalone.md
The development section adds prerequisites, bootc image build commands, container testing steps, and web UI, API, and pod monitoring access notes.
Bootable artifacts
python/docs/source/getting-started/installation/service/standalone.md
The document adds bootable image and kickstart ISO build instructions, including ARM64 variants and the LVM conflict note.
Development workflow and shell access
python/docs/source/getting-started/installation/service/standalone.md
The guide adds a config-service reload step and make bootc-sh shell access.
Troubleshooting and cleanup
python/docs/source/getting-started/installation/service/standalone.md
The guide groups LVM, MicroShift, and config-service troubleshooting with cleanup instructions.
Customization and registry push
python/docs/source/getting-started/installation/service/standalone.md
The guide adds image tag customization, manifest inclusion via kustomization.yaml, and single-architecture and multi-architecture registry push commands.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

A rabbit hopped through install lore,
Then bootc banners bloomed some more.
With kicks, reloads, and registry trails,
My whiskers twitch through docs and rails. 🐇

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: improving the standalone bootc installation documentation.
Description check ✅ Passed The description is directly about the documented installation and development workflow changes in this PR.
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 fix-bootc-docs

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 markdownlint-cli2 (0.22.1)
python/docs/source/getting-started/installation/service/standalone.md

markdownlint-cli2 v0.22.1 (markdownlint v0.40.0)
Error: Unable to use configuration file '/coderabbit-0.markdownlint-cli2.jsonc'; ENOENT: no such file or directory, open '/coderabbit-0.markdownlint-cli2.jsonc'
at throwForConfigurationFile (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:48:9)
at readOptionsOrConfig (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:169:5)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:927:21)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
[cause]: Error: ENOENT: no such file or directory, open '/coderabbit-0.markdownlint-cli2.jsonc'
at async open (node:internal/fs/promises:640:25)
at async Object.readFile (node:internal/fs/promises:1287:14)
at async readOptionsOrConfig (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:141:17)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:927:21)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/coderabbit-0.markdownlint-cli2.jsonc'
}
}


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.

Restructured the standalone installation guide to better serve both
end users and developers:

**User-focused improvements:**
- Simplified installation section with two clear methods:
  1. Kickstart ISO creation (for fresh installs)
  2. system-reinstall-bootc (for existing systems)
- Fixed curl commands to properly download and save files
- Fixed typo: system-reintall-bootc → system-reinstall-bootc
- Improved clarity and formatting throughout
- Added consistent terminology using {term}`operator`

**Developer-focused additions:**
- New comprehensive Development section covering:
  - Building bootc images (single and multi-arch)
  - Testing in containers with make bootc-run
  - Creating bootable QCOW2 and ISO images
  - Kickstart ISO generation with ARM64 support
  - Fast iteration workflow with bootc-reload-app
  - Troubleshooting common issues
  - Cleanup procedures
  - Registry publishing

The documentation now serves both audiences without confusion,
providing a clear path for users to deploy Jumpstarter and for
developers to modify and test the bootc image.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@python/docs/source/getting-started/installation/service/standalone.md`:
- Around line 54-60: The port table is inconsistent with the API example, since
the MicroShift API is shown on 443 in the table but referenced as 6443
elsewhere. Update the standalone installation docs table in the port listing so
the API Server entry and the HTTPS/MicroShift API description match the `:6443`
example, and keep the descriptions in sync with the surrounding installation
guidance.
- Around line 21-25: Method 1 in the standalone installation docs should match
the working build flow by handling the CentOS redirect and using elevated
permissions for ISO creation. Update the commands in this section so the first
curl invocation follows redirects for CENTOS_ISO, and run mkksiso with sudo to
mirror the repo target behavior; use the existing standalone install command
sequence as the reference point.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0178590a-8e0f-4b5a-81ed-5707f0d0cb69

📥 Commits

Reviewing files that changed from the base of the PR and between 9671082 and 5fd3c4a.

📒 Files selected for processing (1)
  • python/docs/source/getting-started/installation/service/standalone.md

Comment on lines +54 to +60
| Port | Service | Description |
|------|---------|-------------|
| 80 | HTTP | MicroShift ingress |
| 443 | HTTPS | MicroShift API and ingress |
| 8880 | Config UI | Web configuration interface |
| 6443 | API Server | Kubernetes API (internal) |

@coderabbitai coderabbitai Bot Jun 25, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Align the port table with the API example.
The table says 443 serves the MicroShift API, but the next section points readers to :6443 for that API. Please make these entries consistent so operators know which port to open.

🤖 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 `@python/docs/source/getting-started/installation/service/standalone.md` around
lines 54 - 60, The port table is inconsistent with the API example, since the
MicroShift API is shown on 443 in the table but referenced as 6443 elsewhere.
Update the standalone installation docs table in the port listing so the API
Server entry and the HTTPS/MicroShift API description match the `:6443` example,
and keep the descriptions in sync with the surrounding installation guidance.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

right 443 is ingress only

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@mangelajo Thanks for confirming — that matches the concern. 443 should be documented as ingress only, and 6443 should remain the Kubernetes API port so the table stays consistent with the example.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

♻️ Duplicate comments (2)
python/docs/source/getting-started/installation/service/standalone.md (2)

54-60: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Align the port table with the API example.

Line 57 still says 443 serves the MicroShift API and ingress, but the example below uses 6443 for the API. Please make one of them authoritative so operators open the right port.

Suggested fix
-| 443 | HTTPS | MicroShift API and ingress |
+| 443 | HTTPS | MicroShift ingress |
🤖 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 `@python/docs/source/getting-started/installation/service/standalone.md` around
lines 54 - 60, The port table and API example are inconsistent about which port
serves the MicroShift API. Update the standalone installation docs so the
entries in the port table and the later API example agree, using the same
authoritative port for the API; adjust the MicroShift ingress/API wording in the
table or example accordingly so readers open the correct port.

21-25: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Make the ISO build command match the working flow.

curl still omits -L, so the CentOS redirect can fail, and mkksiso is still run without sudo. That leaves this install path broken before the ISO is created.

Suggested fix
- curl -o "${CENTOS_ISO}" "https://mirrors.centos.org/mirrorlist?path=/10-stream/BaseOS/x86_64/iso/${CENTOS_ISO}&redirect=1&protocol=https"
+ curl -L -o "${CENTOS_ISO}" "https://mirrors.centos.org/mirrorlist?path=/10-stream/BaseOS/x86_64/iso/${CENTOS_ISO}&redirect=1&protocol=https"
...
- mkksiso kickstart.ks ${CENTOS_ISO} cs10-js-install.iso
+ sudo mkksiso kickstart.ks ${CENTOS_ISO} cs10-js-install.iso
🤖 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 `@python/docs/source/getting-started/installation/service/standalone.md` around
lines 21 - 25, The ISO build flow is still missing the redirect-following and
privilege handling needed to complete successfully. Update the standalone
install steps so the CentOS download command uses curl with redirect support,
and run the mkksiso invocation with sudo as in the working flow. Use the
standalone.md install snippet and the mkksiso/curl commands as the targets to
adjust.
🤖 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.

Duplicate comments:
In `@python/docs/source/getting-started/installation/service/standalone.md`:
- Around line 54-60: The port table and API example are inconsistent about which
port serves the MicroShift API. Update the standalone installation docs so the
entries in the port table and the later API example agree, using the same
authoritative port for the API; adjust the MicroShift ingress/API wording in the
table or example accordingly so readers open the correct port.
- Around line 21-25: The ISO build flow is still missing the redirect-following
and privilege handling needed to complete successfully. Update the standalone
install steps so the CentOS download command uses curl with redirect support,
and run the mkksiso invocation with sudo as in the working flow. Use the
standalone.md install snippet and the mkksiso/curl commands as the targets to
adjust.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ed3322d1-a26b-477d-86b5-ef66a3811a65

📥 Commits

Reviewing files that changed from the base of the PR and between 5fd3c4a and b48ec6c.

📒 Files selected for processing (1)
  • python/docs/source/getting-started/installation/service/standalone.md

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