How to update the docs
OpenKubes documentation is open source and Git-driven. Every public change starts with a reviewed pull request. The website is built using MkDocs Material; Cloudflare hosts the preview, and GitHub Pages hosts production.
Find the source of the page
Not every page is authored in the same repository. Edit the original source, not the generated .mkdocs-staging/ or .mkdocs-site/ output.
| Website content | Source of truth |
|---|---|
| Getting Started | openkubes/openkubes/docs/getting-started/README.md |
| OK AI and Community | openkubes/openkubes/website/pages/ |
| Blog and older technical articles | openkubes/openkubes/docs/ |
| OpenKubes Local tutorials | openkubes/ok-local/docs/ |
| Cluster-specific documentation | openkubes/ok-cluster/docs/ |
Important: External tutorials are imported selectively at pinned revisions. A change in ok-local or ok-cluster does not automatically appear on this website. A separate website PR must update the pinned revision or imported page list, as appropriate.
1. Propose a documentation change
You can use GitHub's file editor or your local clone:
git clone https://github.com/openkubes/openkubes.git
cd openkubes
git switch -c docs/update-my-page
# Edit the source Markdown file
git add path/to/your-file.md
git diff --cached --check
git commit -m "docs: improve documentation"
git push -u origin docs/update-my-page
gh pr create --base main --fill
If you do not have write access, fork the repository and submit a pull request from your fork instead. For docs owned by another OpenKubes repository, submit the PR there.
Reviewers check correctness, links, formatting and security. Never include secrets, private endpoints, customer data or unredacted operational evidence.
2. Review and merge
A maintainer reviews the PR. After approval, merge to main. The website does not publish unreviewed local changes or feature-branch drafts.
To change the left navigation, update mkdocs.yml. For a new website page, add the Markdown source under website/pages/ and ensure website/scripts/stage-legacy.py stages it before linking from the navigation.
3. Preview changes
An authorized contributor with push access to the preview branch can run:
make website-preview
make website-status
Preview: preview.openkubes.org
The publishing script works from the reviewed remote main revision through a temporary Git worktree. Local uncommitted edits are not included, and there is no need to stash them.
4. Release to production
For maintainers with release permissions:
make website-release
The command updates preview, verifies the exact deployed commit, runs a GitHub Pages dry run and then asks:
Type OK to continue:
Enter OK to approve the production stage. The workflow retains its internal revision, repository-variable and GitHub Pages environment protections. Typing OK is not a substitute for the required GitHub permissions or environment approval.
Production: openkubes.org
You may also use make website-publish for an already verified preview. Contributors without production privileges should request a release from a maintainer rather than attempting to change repository release gates.
Need help?
Open an issue, start a discussion, or join Kubernauts Open Hours.
See also the publishing workflow documentation.