kadet-hub logokadet-hub

rook-ceph

Renders Rook Ceph clusters, pools, filesystems, object stores, NFS, RBD mirrors and CephX clients from inventory parameters.

kubernetesoperators

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".

[![kadet-hub](https://img.shields.io/endpoint?url=https://kadet-hub.org/generators/rook-ceph/badge.json)](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-ceph

Inventory 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=replicapool

rook-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

VersionBuilt for (schema-checked)
1.0.2Rook 1.21.0
1.0.1Rook 1.21.0
1.0.0Rook 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.

SBOM (SPDX 2.3)

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.

SBOM (SPDX 2.3)

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.

SBOM (SPDX 2.3)

Output diff

No output diff recorded: this version was published before the release run recorded one.