From 90a4b5ff6161629b1a63431516c9d02df4b57487 Mon Sep 17 00:00:00 2001 From: Shawn Tsai Date: Mon, 23 Mar 2026 11:17:56 +0800 Subject: [PATCH] feat: Change rook-ceph template from kustomize to helm chart --- config/modules/kustomization.yaml | 5 +- config/modules/rook-ceph/helmrepository.yaml | 8 ++ config/modules/rook-ceph/kustomization.yaml | 8 -- .../rook-ceph/moduletemplate-cluster.yaml | 77 +++++++++++++++++++ config/modules/rook-ceph/moduletemplate.yaml | 34 ++++++-- config/samples/module-rook-ceph-cluster.yaml | 6 ++ 6 files changed, 121 insertions(+), 17 deletions(-) create mode 100644 config/modules/rook-ceph/helmrepository.yaml delete mode 100644 config/modules/rook-ceph/kustomization.yaml create mode 100644 config/modules/rook-ceph/moduletemplate-cluster.yaml create mode 100644 config/samples/module-rook-ceph-cluster.yaml diff --git a/config/modules/kustomization.yaml b/config/modules/kustomization.yaml index 10ee2de..4243983 100644 --- a/config/modules/kustomization.yaml +++ b/config/modules/kustomization.yaml @@ -25,9 +25,12 @@ resources: - prometheus/helmrepository.yaml - prometheus/moduletemplate.yaml + - rook-ceph/helmrepository.yaml + - rook-ceph/moduletemplate.yaml + - rook-ceph/moduletemplate-cluster.yaml + # --- Kustomize-based ModuleTemplates --- - cdi/moduletemplate.yaml - gateway-api/moduletemplate.yaml - gateway-api-inference-extension/moduletemplate.yaml - kubevirt/moduletemplate.yaml - - rook-ceph/moduletemplate.yaml diff --git a/config/modules/rook-ceph/helmrepository.yaml b/config/modules/rook-ceph/helmrepository.yaml new file mode 100644 index 0000000..6ca4b3a --- /dev/null +++ b/config/modules/rook-ceph/helmrepository.yaml @@ -0,0 +1,8 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: rook-ceph + namespace: otterscale-system +spec: + interval: 24h + url: https://charts.rook.io/release diff --git a/config/modules/rook-ceph/kustomization.yaml b/config/modules/rook-ceph/kustomization.yaml deleted file mode 100644 index 1f459e6..0000000 --- a/config/modules/rook-ceph/kustomization.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# Rook-Ceph Operator v__ROOK_CEPH_VERSION__ — Phase 1: CRDs + Operator (no CephCluster) -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: - - https://raw.githubusercontent.com/rook/rook/v__ROOK_CEPH_VERSION__/deploy/examples/crds.yaml - - https://raw.githubusercontent.com/rook/rook/v__ROOK_CEPH_VERSION__/deploy/examples/common.yaml - - https://raw.githubusercontent.com/rook/rook/v__ROOK_CEPH_VERSION__/deploy/examples/operator.yaml diff --git a/config/modules/rook-ceph/moduletemplate-cluster.yaml b/config/modules/rook-ceph/moduletemplate-cluster.yaml new file mode 100644 index 0000000..da70752 --- /dev/null +++ b/config/modules/rook-ceph/moduletemplate-cluster.yaml @@ -0,0 +1,77 @@ +# ModuleTemplate — Rook-Ceph Cluster v__ROOK_CEPH_VERSION__ (Phase 2: CephCluster) +# +# Deploys CephCluster resources. Requires rook-ceph operator to be installed first. +# +# Apply order: rook-ceph → rook-ceph-cluster +apiVersion: module.otterscale.io/v1alpha1 +kind: ModuleTemplate +metadata: + name: rook-ceph-cluster +spec: + namespace: rook-ceph + + description: >- + Rook-Ceph Cluster v__ROOK_CEPH_VERSION__ — CephCluster resources. Requires rook-ceph operator. + + helmRelease: + interval: 30m + + dependsOn: + - name: rook-ceph + namespace: rook-ceph + + chart: + spec: + chart: rook-ceph-cluster + version: "__ROOK_CEPH_VERSION__" + sourceRef: + kind: HelmRepository + name: rook-ceph + namespace: otterscale-system + interval: 24h + + install: + remediation: + retries: 3 + + upgrade: + remediation: + retries: 3 + force: false + + timeout: 30m + + values: + operatorNamespace: rook-ceph + + cephClusterSpec: + mon: + count: 1 + allowMultiplePerNode: true + mgr: + count: 1 + allowMultiplePerNode: true + network: + provider: host + + cephObjectStores: + - name: ceph-objectstore + spec: + metadataPool: + failureDomain: host + replicated: + size: 3 + dataPool: + failureDomain: host + erasureCoded: + dataChunks: 2 + codingChunks: 1 + gateway: + port: 8080 + instances: 1 + priorityClassName: system-cluster-critical + storageClass: + enabled: true + name: ceph-bucket + reclaimPolicy: Delete + volumeBindingMode: Immediate diff --git a/config/modules/rook-ceph/moduletemplate.yaml b/config/modules/rook-ceph/moduletemplate.yaml index 3e193a9..89c8c3e 100644 --- a/config/modules/rook-ceph/moduletemplate.yaml +++ b/config/modules/rook-ceph/moduletemplate.yaml @@ -1,5 +1,8 @@ # ModuleTemplate — Rook-Ceph Operator v__ROOK_CEPH_VERSION__ (Phase 1: Operator only) -# Uses FluxCD Kustomization. Phase 2: Apply rook-ceph-cluster Module for CephCluster. +# +# Deploys Rook-Ceph Operator (CRDs, Operator Deployment). Create CephCluster separately via rook-ceph-cluster Module. +# +# Apply order: rook-ceph → rook-ceph-cluster apiVersion: module.otterscale.io/v1alpha1 kind: ModuleTemplate metadata: @@ -10,11 +13,26 @@ spec: description: >- Rook-Ceph Operator v__ROOK_CEPH_VERSION__ — CRDs, Operator Deployment. Create CephCluster separately via rook-ceph-cluster Module. - kustomization: + helmRelease: interval: 30m - prune: true - sourceRef: - kind: GitRepository - name: otterscale-module-operator - namespace: otterscale-system - path: config/modules/rook-ceph + + chart: + spec: + chart: rook-ceph + version: "__ROOK_CEPH_VERSION__" + sourceRef: + kind: HelmRepository + name: rook-ceph + namespace: otterscale-system + interval: 24h + + install: + remediation: + retries: 3 + + upgrade: + remediation: + retries: 3 + force: false + + timeout: 30m diff --git a/config/samples/module-rook-ceph-cluster.yaml b/config/samples/module-rook-ceph-cluster.yaml new file mode 100644 index 0000000..6c8ef59 --- /dev/null +++ b/config/samples/module-rook-ceph-cluster.yaml @@ -0,0 +1,6 @@ +apiVersion: module.otterscale.io/v1alpha1 +kind: Module +metadata: + name: rook-ceph-cluster +spec: + templateRef: rook-ceph-cluster