Skip to content

Add "Why Rook?" Information#33

Open
zdover23 wants to merge 2 commits into
cobaltcore-dev:mainfrom
zdover23:docs-2026-05-21-rook-ceph-install-why-rook
Open

Add "Why Rook?" Information#33
zdover23 wants to merge 2 commits into
cobaltcore-dev:mainfrom
zdover23:docs-2026-05-21-rook-ceph-install-why-rook

Conversation

@zdover23
Copy link
Copy Markdown
Contributor

@zdover23 zdover23 commented May 21, 2026

Add a short paragraph explaining why SAP has chosen Rook as its
Kubernetes operator.

This material was co-authored by Senol Colak. (Really, Senol deserves
the lion's share of the credit.)

Signed-off-by: Zac Dover zac.dover@proton.me

Summary by CodeRabbit

Documentation

  • Added comprehensive Rook-Ceph installation guides covering architecture design and step-by-step deployment procedures for Kubernetes environments
  • Includes prerequisites, operator and cluster deployment steps, verification commands, configuration options for storage/resources/networking/dashboard access
  • Provides storage class creation examples, functional verification workflows, troubleshooting guidance, and cleanup procedures

Review Change Stack

zdover23 added 2 commits May 20, 2026 16:33
$TITLE

Signed-off-by: Zac Dover <zac.dover@clyso.com>
Add a short paragraph explaining why SAP has chosen Rook as its
Kubernetes operator.

This material was co-authored by Senol Colak. (Really, Senol deserves
the lion's share of the credit.)

Signed-off-by: Zac Dover <zac.dover@proton.me>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 21, 2026

📝 Walkthrough

Walkthrough

This PR adds comprehensive Rook-Ceph installation and operational documentation. The architecture index is updated to link a new detailed guide, and both architecture and usage documentation pages are introduced, covering prerequisites, deployment, configuration, storage class provisioning, verification, troubleshooting, and cleanup procedures.

Changes

Rook-Ceph Documentation

Layer / File(s) Summary
Architecture index and installation foundation
docs/architecture/index.md, docs/architecture/rook-ceph-install.md (lines 1–160)
Index entry added to link Rook-Ceph installation guide. Architecture guide introduces the topic, lists prerequisites (Kubernetes cluster, storage, network, system), and documents the step-by-step deployment sequence: repository cloning, CRD/common/operator manifest deployment, operator readiness verification, cluster creation, pod monitoring, and toolbox-based health validation.
Configuration and storage provisioning
docs/architecture/rook-ceph-install.md (lines 160–305)
Configuration customization guide covering storage device selection patterns, resource limits for daemon classes, network provider setup, and dashboard access. Storage class creation and provisioning workflows documented for three storage types: RBD (block), CephFS (filesystem), and RGW (object).
Verification, troubleshooting, operations, and usage guide
docs/architecture/rook-ceph-install.md (lines 305–432), docs/usage/rook-ceph-install.md (lines 1–437)
Verification workflows to validate storage component health and functionality. Troubleshooting section with targeted kubectl commands for common issues (operator, OSDs, cluster health). Cleanup procedures including node data-wipe caution and manifests removal. Next steps for monitoring, backup, quotas, and advanced operations. Complete parallel usage guide replicating end-to-end installation and validation steps.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • cobaltcore-dev/docs#13: Both PRs add Ceph/Rook-Ceph documentation pages describing block storage (RBD) usage and deployment context.

Suggested reviewers

  • senolcolak

Poem

🐰 Hop into storage with Rook and Ceph,
Block, file, and object—deploy with a prep!
Prerequisites clear, and configs so keen,
Troubleshooting guides for troubles not seen.
From setup to cleanup, the docs pave the way! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The PR title 'Add "Why Rook?" Information' does not match the actual primary changes, which are extensive Rook-Ceph installation documentation (432+ and 437+ lines added across two files), not just 'Why Rook?' content. Revise the title to reflect the primary change: e.g., 'Add Rook-Ceph installation guides and rationale documentation' or 'Add comprehensive Rook-Ceph deployment documentation and why Rook overview'.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
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

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

@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: 7

🤖 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/architecture/rook-ceph-install.md`:
- Around line 92-95: The fenced code block showing the pod status lacks a
language tag (triggering MD040); update the block in rook-ceph-install.md that
contains the lines starting with "NAME                                  READY  
STATUS    RESTARTS   AGE" / "rook-ceph-operator-<pod-id>" to use a language
identifier (e.g., add ```text at the opening fence) so the snippet is fenced as
```text ... ``` as suggested.
- Around line 61-67: Update the git clone example so the branch placeholder is
explicit: change the --branch value shown as `release-` to a clear placeholder
token like `<rook-release-tag>` in the git clone command (the line containing
"git clone --single-branch --branch release- https://github.com/rook/rook.git")
and update the surrounding note to instruct users to replace
`<rook-release-tag>` with the desired Rook release tag.
- Around line 149-158: The fenced code block showing the Ceph cluster example
(the block starting with "cluster:" and the lines "id:     <cluster-id>" and
"health: HEALTH_OK") lacks a language tag and triggers MD040; add a language
identifier (e.g., "text" or "yaml") after the opening backticks so the block
becomes ```text (or ```yaml) to satisfy the linter.

In `@docs/usage/rook-ceph-install.md`:
- Around line 154-163: The fenced code block that begins with ``` and contains
the YAML-like keys cluster: and services: is missing a language tag and triggers
MD040; fix it by adding an appropriate language identifier (e.g., "yaml") after
the opening ``` so the block becomes ```yaml, keeping the existing content
(cluster:, id:, health:, services:, mon:, mgr:, osd:) intact.
- Around line 97-100: The fenced code block showing the kubectl output (the
lines starting with "NAME                                  READY   STATUS   
RESTARTS   AGE" and the "rook-ceph-operator-<pod-id>…" line) needs a language
label to satisfy MD040; update the opening backticks from ``` to include a
language token such as "console", "bash", or "text" (e.g. ```console) so the
block is properly annotated.
- Around line 58-62: Remove the malformed emphasis markers around the paragraph
that starts with "Rook is the unique Kubernetes operator for managing Ceph
workloads" so it becomes a normal paragraph (no asterisks or surrounding italic
markup); ensure there are no spaces inside emphasis markers and replace the
entire emphasized block with a plain paragraph preserving the existing wording
about Rook, Kubernetes, and SAP cloud infrastructure.
- Around line 66-72: Update the git clone instruction that currently uses the
literal branch token 'git clone --single-branch --branch release-
https://github.com/rook/rook.git' to use an explicit placeholder (for example
'--branch <release-version>' or '--branch release-x.y') so readers cannot
accidentally copy a non-functional literal; change the command text to: git
clone --single-branch --branch <release-version>
https://github.com/rook/rook.git and update the surrounding note to reference
the <release-version> placeholder.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2c9f5039-20b4-417f-bdd9-07d7e9eb2f37

📥 Commits

Reviewing files that changed from the base of the PR and between 5e605d9 and 7631441.

📒 Files selected for processing (3)
  • docs/architecture/index.md
  • docs/architecture/rook-ceph-install.md
  • docs/usage/rook-ceph-install.md

Comment on lines +61 to +67
git clone --single-branch --branch release- https://github.com/rook/rook.git
cd rook/deploy/examples
```

**Note:** Replace `release-` with the desired Rook version. Check the Rook
releases page for the latest stable version, and verify it is compatible with
your Kubernetes version before proceeding.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Make the branch placeholder explicit to avoid copy-paste failures.

--branch release- looks executable but fails unless edited. Use a clear placeholder token directly in the command (for example <rook-release-tag>).

Suggested doc tweak
-git clone --single-branch --branch release- https://github.com/rook/rook.git
+git clone --single-branch --branch <rook-release-tag> https://github.com/rook/rook.git
 cd rook/deploy/examples
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
git clone --single-branch --branch release- https://github.com/rook/rook.git
cd rook/deploy/examples
```
**Note:** Replace `release-` with the desired Rook version. Check the Rook
releases page for the latest stable version, and verify it is compatible with
your Kubernetes version before proceeding.
git clone --single-branch --branch <rook-release-tag> https://github.com/rook/rook.git
cd rook/deploy/examples
🤖 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/architecture/rook-ceph-install.md` around lines 61 - 67, Update the git
clone example so the branch placeholder is explicit: change the --branch value
shown as `release-` to a clear placeholder token like `<rook-release-tag>` in
the git clone command (the line containing "git clone --single-branch --branch
release- https://github.com/rook/rook.git") and update the surrounding note to
instruct users to replace `<rook-release-tag>` with the desired Rook release
tag.

Comment on lines +92 to +95
```
NAME                                  READY   STATUS    RESTARTS   AGE
rook-ceph-operator-<pod-id>           1/1     Running   0          30s
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language to this fenced code block.

This currently triggers MD040.

Suggested lint fix
-```
+```text
 NAME                                  READY   STATUS    RESTARTS   AGE
 rook-ceph-operator-<pod-id>           1/1     Running   0          30s
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

[warning] 92-92: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

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/architecture/rook-ceph-install.md around lines 92 - 95, The fenced code
block showing the pod status lacks a language tag (triggering MD040); update the
block in rook-ceph-install.md that contains the lines starting with
"NAME                                  READY   STATUS    RESTARTS   AGE" /
"rook-ceph-operator-" to use a language identifier (e.g., add text at the opening fence) so the snippet is fenced as text ... ``` as suggested.


</details>

<!-- fingerprinting:phantom:triton:hawk -->

<!-- This is an auto-generated comment by CodeRabbit -->

Comment on lines +149 to +158
```
cluster:
  id:     <cluster-id>
  health: HEALTH_OK

services:
  mon: 3 daemons, quorum a,b,c
  mgr: a(active), standbys: b
  osd: X osds: X up, X in
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language to this fenced code block.

This currently triggers MD040.

Suggested lint fix
-```
+```text
 cluster:
   id:     <cluster-id>
   health: HEALTH_OK
@@
   mgr: a(active), standbys: b
   osd: X osds: X up, X in
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

[warning] 149-149: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

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/architecture/rook-ceph-install.md around lines 149 - 158, The fenced
code block showing the Ceph cluster example (the block starting with "cluster:"
and the lines "id: " and "health: HEALTH_OK") lacks a language
tag and triggers MD040; add a language identifier (e.g., "text" or "yaml") after
the opening backticks so the block becomes text (or yaml) to satisfy the
linter.


</details>

<!-- fingerprinting:phantom:triton:hawk -->

<!-- This is an auto-generated comment by CodeRabbit -->

Comment on lines +58 to +62
*Rook is the unique Kubernetes operator for managing Ceph workloads, which is
why cloud-storage uses Rook. The SAP cloud infrastructure is built on top of
Kubernetes, and the automation and foundation stack is Kubernetes. Because
Rook is the Kubernetes operator, SAP has chosen it for managing Ceph workloads. *

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix malformed emphasis and keep this as normal paragraph text.

The current italic markup has spaces inside emphasis markers (MD037) and hurts readability.

Suggested rewrite
-*Rook is the unique Kubernetes operator for managing Ceph workloads, which is
-why cloud-storage uses Rook. The SAP cloud infrastructure is built on top of
-Kubernetes, and the automation and foundation stack is Kubernetes. Because
-Rook is the Kubernetes operator, SAP has chosen it for managing Ceph workloads. *
+Rook is the Kubernetes operator used to manage Ceph workloads. SAP cloud
+infrastructure is built on Kubernetes, and this alignment is why SAP chose
+Rook for Ceph lifecycle management.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
*Rook is the unique Kubernetes operator for managing Ceph workloads, which is
why cloud-storage uses Rook. The SAP cloud infrastructure is built on top of
Kubernetes, and the automation and foundation stack is Kubernetes. Because
Rook is the Kubernetes operator, SAP has chosen it for managing Ceph workloads. *
Rook is the Kubernetes operator used to manage Ceph workloads. SAP cloud
infrastructure is built on Kubernetes, and this alignment is why SAP chose
Rook for Ceph lifecycle management.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 61-61: Spaces inside emphasis markers

(MD037, no-space-in-emphasis)

🤖 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/usage/rook-ceph-install.md` around lines 58 - 62, Remove the malformed
emphasis markers around the paragraph that starts with "Rook is the unique
Kubernetes operator for managing Ceph workloads" so it becomes a normal
paragraph (no asterisks or surrounding italic markup); ensure there are no
spaces inside emphasis markers and replace the entire emphasized block with a
plain paragraph preserving the existing wording about Rook, Kubernetes, and SAP
cloud infrastructure.

Comment on lines +66 to +72
git clone --single-branch --branch release- https://github.com/rook/rook.git
cd rook/deploy/examples
```

**Note:** Replace `release-` with the desired Rook version. Check the Rook
releases page for the latest stable version, and verify it is compatible with
your Kubernetes version before proceeding.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use an explicit branch placeholder in the clone command.

release- is easy to copy verbatim and fail; use a placeholder token in the command itself.

Suggested doc tweak
-git clone --single-branch --branch release- https://github.com/rook/rook.git
+git clone --single-branch --branch <rook-release-tag> https://github.com/rook/rook.git
 cd rook/deploy/examples
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
git clone --single-branch --branch release- https://github.com/rook/rook.git
cd rook/deploy/examples
```
**Note:** Replace `release-` with the desired Rook version. Check the Rook
releases page for the latest stable version, and verify it is compatible with
your Kubernetes version before proceeding.
git clone --single-branch --branch <rook-release-tag> https://github.com/rook/rook.git
cd rook/deploy/examples
🤖 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/usage/rook-ceph-install.md` around lines 66 - 72, Update the git clone
instruction that currently uses the literal branch token 'git clone
--single-branch --branch release- https://github.com/rook/rook.git' to use an
explicit placeholder (for example '--branch <release-version>' or '--branch
release-x.y') so readers cannot accidentally copy a non-functional literal;
change the command text to: git clone --single-branch --branch <release-version>
https://github.com/rook/rook.git and update the surrounding note to reference
the <release-version> placeholder.

Comment on lines +97 to +100
```
NAME                                  READY   STATUS    RESTARTS   AGE
rook-ceph-operator-<pod-id>           1/1     Running   0          30s
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language to this fenced code block.

This currently triggers MD040.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 97-97: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 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/usage/rook-ceph-install.md` around lines 97 - 100, The fenced code block
showing the kubectl output (the lines starting with
"NAME                                  READY   STATUS    RESTARTS   AGE" and the
"rook-ceph-operator-<pod-id>…" line) needs a language label to satisfy MD040;
update the opening backticks from ``` to include a language token such as
"console", "bash", or "text" (e.g. ```console) so the block is properly
annotated.

Comment on lines +154 to +163
```
cluster:
  id:     <cluster-id>
  health: HEALTH_OK

services:
  mon: 3 daemons, quorum a,b,c
  mgr: a(active), standbys: b
  osd: X osds: X up, X in
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language to this fenced code block.

This currently triggers MD040.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 154-154: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 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/usage/rook-ceph-install.md` around lines 154 - 163, The fenced code
block that begins with ``` and contains the YAML-like keys cluster: and
services: is missing a language tag and triggers MD040; fix it by adding an
appropriate language identifier (e.g., "yaml") after the opening ``` so the
block becomes ```yaml, keeping the existing content (cluster:, id:, health:,
services:, mon:, mgr:, osd:) intact.

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