rook-ceph
Renders Rook Ceph clusters, pools, filesystems, object stores, NFS, RBD mirrors and CephX clients from inventory parameters.
- Latest
- 1.0.2 ·
- License
- Apache-2.0
- Owners
- Moep90
- Source
- github.com/kadet-hub/generators · 0 repo stars, shared by 35 generators
- Thumbs up
- 👍 0 on GitHub Discussions
- Popularity
- 17 · 382 pulls
Request a feature Report a problem
Badge
Show the latest listed version in your README. shields.io draws the badge from this page's badge.json, which every catalog build updates; once no version is listed, it reads "not listed".
[](https://kadet-hub.org/generators/rook-ceph/)
rook-ceph Generator
Published on kadet-hub: pin a released version by digest from its catalog page.
Kapitan kadet generator for Rook Ceph resources (ceph.rook.io/v1). Built for Rook 1.21.0. It renders the custom resources the Rook operator reconciles into a Ceph cluster and its storage: CephCluster, CephBlockPool, CephFilesystem, CephObjectStore, CephObjectStoreUser, CephNFS, CephRBDMirror and CephClient. The operator itself, its CRDs and the CSI drivers come from Rook’s Helm chart or deploy/examples; StorageClasses and ObjectBucketClaims belong in the kubernetes generator.
Usage
Kapitan Configuration
parameters:
kapitan:
dependencies:
- type: oci
source: ghcr.io/kadet-hub/rook-ceph@sha256:<digest>
output_path: lib/rook-ceph
compile:
- output_path: manifests/rook-ceph/
input_type: kadet
output_type: yml
input_paths:
- lib/rook-cephInventory Contract
All keys live under parameters.generators.rook-ceph. Each entry becomes one resource named after its key, or after its name if set. The namespace resolves from the entry’s namespace, then parameters.generators.rook-ceph.namespace, then parameters.namespace, then default.
| Key | Kind | Output key |
|---|---|---|
clusters.<name> |
CephCluster | <namespace>/<name>-cephcluster |
block_pools.<name> |
CephBlockPool | <namespace>/<name>-blockpool |
filesystems.<name> |
CephFilesystem | <namespace>/<name>-cephfs |
object_stores.<name> |
CephObjectStore | <namespace>/<name>-objectstore |
object_store_users.<name> |
CephObjectStoreUser | <namespace>/<name>-objectuser |
nfs.<name> |
CephNFS | <namespace>/<name>-nfs |
rbd_mirrors.<name> |
CephRBDMirror | <namespace>/<name>-rbdmirror |
clients.<name> |
CephClient | <namespace>/<name>-client |
Every entry accepts labels, annotations and spec; the label name is always added. spec is the raw CRD spec for fields without a flat key. Precedence is generator defaults, then spec, then flat keys; a flat key replaces the whole spec field of the same name and logs a warning.
Flat keys are the snake_case spelling of top-level CRD spec fields; their values pass through unchanged, in CRD camelCase:
| Kind | Flat keys |
|---|---|
| CephCluster | ceph_version, data_dir_host_path, mon, mgr, osd, storage, network, resources, placement, dashboard, monitoring, external, remove_osds_if_out_and_safe_to_remove, cleanup_policy, disruption_management, security, health_check, log_collector, priority_class_names, upgrade_policy, csi, wait_timeout_for_healthy_osd_in_minutes |
| CephBlockPool | failure_domain, replicated, erasure_coded, parameters, application |
| CephFilesystem | metadata_pool, data_pools, metadata_server, status_check, mirroring |
| CephObjectStore | metadata_pool, data_pool, gateway, zone, hosting, auth, security |
| CephObjectStoreUser | store, display_name, capabilities, quotas |
| CephNFS | server, security |
| CephRBDMirror | count, peers, resources, placement, priority_class_name |
| CephClient | caps, client_name |
Two flat keys do more than rename. On CephCluster, encrypted_device: true sets spec.storage.config.encryptedDevice: "true", the string Rook reads for dmcrypt OSDs; it applies to host-based OSDs only, OSDs on PVCs are encrypted with encrypted: true on their storageClassDeviceSets entry. On CephClient, name sets both metadata.name and spec.name (the CephX client name); client_name sets spec.name alone and wins over name.
A CephCluster without ceph_version.image (or spec.cephVersion.image) fails the compile unless external.enable is set, so a generator update never changes the Ceph version. Rook 1.21.0 ships quay.io/ceph/ceph:v20.2.4 in its example; multisite object stores need RGW settings applied before upgrading to that release (ceph-upgrade.md). storage.useAllNodes with useAllDevices lets Rook claim every empty raw disk on every node.
New CephNFS installs on Rook 1.21 declare a CephBlockPool with spec.name: .nfs themselves, since the operator no longer creates it (release notes); deleting that CR deletes the pool and the NFS exports in it.
Defaults
The generator fills these only where the inventory leaves them unset:
| Kind | Default | Why |
|---|---|---|
| CephCluster | dataDirHostPath: /var/lib/rook |
The CRD makes it optional, but Rook’s example marks it “Must be specified”; without it the daemons keep mon data in an emptyDir (cluster.yaml, spec.go). |
| CephFilesystem | metadataServer: {activeCount: 1, activeStandby: true} |
metadataServer.activeCount is required by the CRD; values from filesystem.yaml. |
| CephNFS | server.active: 1 |
Required by the CRD; nfs.yaml. |
| CephRBDMirror | count: 1 |
Required by the CRD; rbdmirror.yaml. |
Mon and mgr counts, the msgr2 requirement and other settings the operator defaults are not emitted. CephClient caps has no default, since it grants access to the cluster; an entry without it fails schema validation. Rook’s example also sets security.cephx.csi.keyType: aes for nodes with a Linux kernel older than 7.0; the generator leaves it to the inventory because it depends on the node kernel.
Example
parameters:
generators:
rook-ceph:
namespace: rook-ceph
clusters:
rook-ceph:
ceph_version:
image: quay.io/ceph/ceph:v20.2.4
mon:
count: 3
allowMultiplePerNode: false
dashboard:
enabled: true
ssl: true
spec:
storage:
useAllNodes: true
useAllDevices: true
block_pools:
replicapool:
failure_domain: host
replicated:
size: 3
builtin-nfs:
failure_domain: host
replicated:
size: 3
spec:
name: .nfs
filesystems:
myfs:
metadata_pool:
replicated:
size: 3
data_pools:
- name: replicated
replicated:
size: 3
object_stores:
my-store:
metadata_pool:
replicated:
size: 3
data_pool:
erasureCoded:
dataChunks: 2
codingChunks: 1
gateway:
port: 80
instances: 1
object_store_users:
my-user:
store: my-store
display_name: my-user
nfs:
my-nfs: {}
clients:
rbd-app:
client_name: app
caps:
mon: profile rbd
osd: profile rbd pool=replicapoolrook-ceph gets /var/lib/rook, myfs one active MDS with a standby, and my-nfs one server.
Output Files
| Output key | Kind |
|---|---|
<namespace>/<name>-cephcluster |
ceph.rook.io/v1 CephCluster |
<namespace>/<name>-blockpool |
ceph.rook.io/v1 CephBlockPool |
<namespace>/<name>-cephfs |
ceph.rook.io/v1 CephFilesystem |
<namespace>/<name>-objectstore |
ceph.rook.io/v1 CephObjectStore |
<namespace>/<name>-objectuser |
ceph.rook.io/v1 CephObjectStoreUser |
<namespace>/<name>-nfs |
ceph.rook.io/v1 CephNFS |
<namespace>/<name>-rbdmirror |
ceph.rook.io/v1 CephRBDMirror |
<namespace>/<name>-client |
ceph.rook.io/v1 CephClient |
v1 is the served storage version of every kind at Rook 1.21.0; none is deprecated. The compiled output is validated against the upstream CRD schemas in schemas/ceph.rook.io/.
Versions
Add a version's inventory entry, then compile with the consumer workflow, which verifies the artifact and runs Kapitan in the sandbox.
Free of charge, as is and on a best-effort basis: use at your own risk, and review the compiled output before you apply it. Terms
This catalog was built from index serial 47. Set index_serial: 47 in .kapitan-sandbox.yaml and the consumer workflow refuses any older index, so a rolled-back index cannot bring back a yanked version.
Checks find known patterns; they do not prove a generator safe. What a listing covers
| Version | Built for (schema-checked) |
|---|---|
| 1.0.2 | Rook 1.21.0 |
| 1.0.1 | Rook 1.21.0 |
| 1.0.0 | Rook 1.21.0 |
1.0.2#
Inventory
parameters:
kapitan:
dependencies:
- type: oci
source: ghcr.io/kadet-hub/rook-ceph:1.0.2@sha256:603c7cc747164e55e873508a4f11cc9a7a99d648773f6a0119535349d552ad28
output_path: lib/rook-ceph
Verify
gh attestation verify \
oci://ghcr.io/kadet-hub/rook-ceph@sha256:603c7cc747164e55e873508a4f11cc9a7a99d648773f6a0119535349d552ad28 \
--owner kadet-hub \
--cert-identity https://github.com/kadet-hub/registry/.github/workflows/release.yml@refs/heads/main
Transparency log: Rekor entry 3250470601, in Sigstore's public, append-only log, so the attestation stays checkable independent of this site.
- Kapitan declared
- >=0.36.3,<0.37
- Kapitan checked
- 0.36.3
- Backends checked
- not recorded
- With --cache
- not recorded
- krab
- compatible
- Built for (schema-checked)
- Rook 1.21.0
- Source
- rook-ceph-v1.0.2 ·
e4891e8fd85ca0a19ebf361e8b54fd6473fd8a2f· rook-ceph - Binaries
- none
- Output capabilities
- none
- Digest
sha256:603c7cc747164e55e873508a4f11cc9a7a99d648773f6a0119535349d552ad28
Checks
Checked by the release run on , gate at daf634a691aa.
- Secrets gitleaks 8.30.1
No secret matched the marketplace's gitleaks rules. - Malware ClamAV 1.5.4
No file matched a ClamAV signature. - Malicious package heuristics GuardDog 3.2.0
No GuardDog threat rule matched. - Dangerous code Semgrep 1.180.0
No marketplace Semgrep rule matched, such as eval, subprocess or network calls. - Python errors Ruff 0.17.0
No syntax error or undefined name (Ruff, error rules only). - File tree tree_check.py
No symlink, executable or banned file; imports within the allowlist. - Sandboxed compile gVisor 20261005, Kapitan 0.36.3
The fixture compiled without network, with decoy credentials; no undeclared program ran, no decoy was read. - Output capabilities Conftest 0.71.1
The compiled output uses only the capabilities the manifest declares. - CI detection Kapitan 0.36.3
The output is the same with CI variables set.
Output diff
No output diff recorded: this version was published before the release run recorded one.
1.0.1#
Inventory
parameters:
kapitan:
dependencies:
- type: oci
source: ghcr.io/kadet-hub/rook-ceph:1.0.1@sha256:9be1a1eb19bd74512aa72bfe883300d8c6f0a831272ff93febb2a44c78b82f80
output_path: lib/rook-ceph
Verify
gh attestation verify \
oci://ghcr.io/kadet-hub/rook-ceph@sha256:9be1a1eb19bd74512aa72bfe883300d8c6f0a831272ff93febb2a44c78b82f80 \
--owner kadet-hub \
--cert-identity https://github.com/kadet-hub/registry/.github/workflows/release.yml@refs/heads/main
Transparency log: Rekor entry 3244181912, in Sigstore's public, append-only log, so the attestation stays checkable independent of this site.
- Kapitan declared
- >=0.36.3,<0.37
- Kapitan checked
- 0.36.3
- Backends checked
- not recorded
- With --cache
- not recorded
- krab
- compatible
- Built for (schema-checked)
- Rook 1.21.0
- Source
- rook-ceph-v1.0.1 ·
9166cb30e0ae4874bc8f229c6a6823eff7451d04· rook-ceph - Binaries
- none
- Output capabilities
- none
- Digest
sha256:9be1a1eb19bd74512aa72bfe883300d8c6f0a831272ff93febb2a44c78b82f80
Checks
Checked by the release run on , gate at 529dab245f19.
- Secrets gitleaks 8.30.1
No secret matched the marketplace's gitleaks rules. - Malware ClamAV 1.5.4
No file matched a ClamAV signature. - Malicious package heuristics GuardDog 3.2.0
No GuardDog threat rule matched. - Dangerous code Semgrep 1.180.0
No marketplace Semgrep rule matched, such as eval, subprocess or network calls. - Python errors Ruff 0.17.0
No syntax error or undefined name (Ruff, error rules only). - File tree tree_check.py
No symlink, executable or banned file; imports within the allowlist. - Sandboxed compile gVisor 20261005, Kapitan 0.36.3
The fixture compiled without network, with decoy credentials; no undeclared program ran, no decoy was read. - Output capabilities Conftest 0.71.1
The compiled output uses only the capabilities the manifest declares. - CI detection Kapitan 0.36.3
The output is the same with CI variables set.
Output diff
No output diff recorded: this version was published before the release run recorded one.
1.0.0#
Inventory
parameters:
kapitan:
dependencies:
- type: oci
source: ghcr.io/kadet-hub/rook-ceph:1.0.0@sha256:6152fb118bb89ff3f9f4c8b758d0d4c95b11c03b85091765f08b2183b56e152c
output_path: lib/rook-ceph
Verify
gh attestation verify \
oci://ghcr.io/kadet-hub/rook-ceph@sha256:6152fb118bb89ff3f9f4c8b758d0d4c95b11c03b85091765f08b2183b56e152c \
--owner kadet-hub \
--cert-identity https://github.com/kadet-hub/registry/.github/workflows/release.yml@refs/heads/main
Transparency log: Rekor entry 3225185913, in Sigstore's public, append-only log, so the attestation stays checkable independent of this site.
- Kapitan declared
- >=0.36.3,<0.37
- Kapitan checked
- 0.36.3
- Backends checked
- not recorded
- With --cache
- not recorded
- krab
- compatible
- Built for (schema-checked)
- Rook 1.21.0
- Source
- rook-ceph-v1.0.0 ·
7a038f33c6f1db027e03b1c2be3ddfecac00b9b3· rook-ceph - Binaries
- none
- Output capabilities
- none
- Digest
sha256:6152fb118bb89ff3f9f4c8b758d0d4c95b11c03b85091765f08b2183b56e152c
Checks
Checked by the release run on , gate at d11b5023d0a0.
- Secrets gitleaks 8.30.1
No secret matched the marketplace's gitleaks rules. - Malware ClamAV 1.5.4
No file matched a ClamAV signature. - Malicious package heuristics GuardDog 3.2.0
No GuardDog threat rule matched. - Dangerous code Semgrep 1.180.0
No marketplace Semgrep rule matched, such as eval, subprocess or network calls. - Python errors Ruff 0.17.0
No syntax error or undefined name (Ruff, error rules only). - File tree tree_check.py
No symlink, executable or banned file; imports within the allowlist. - Sandboxed compile gVisor 20261005, Kapitan 0.36.3
The fixture compiled without network, with decoy credentials; no undeclared program ran, no decoy was read. - Output capabilities Conftest 0.71.1
The compiled output uses only the capabilities the manifest declares. - CI detection Kapitan 0.36.3
The output is the same with CI variables set.
Output diff
No output diff recorded: this version was published before the release run recorded one.