From 82c0c058271d23c5ee01ed70c1709b2919bcbb0a Mon Sep 17 00:00:00 2001 From: Tarun Gupta Akirala Date: Thu, 2 Jan 2025 16:33:09 -0800 Subject: [PATCH 1/2] feat: add cosi bucket helm chart Signed-off-by: Tarun Gupta Akirala --- stable/cosi-bucket-kit/Chart.yaml | 14 +++++ stable/cosi-bucket-kit/README.md | 27 ++++++++++ .../templates/bucketaccessclasses.yaml | 14 +++++ .../templates/bucketaccesses.yaml | 12 +++++ .../templates/bucketclaims.yaml | 13 +++++ .../templates/bucketclasses.yaml | 14 +++++ .../templates/ceph-provider.yaml | 23 ++++++++ stable/cosi-bucket-kit/values.yaml | 52 +++++++++++++++++++ 8 files changed, 169 insertions(+) create mode 100644 stable/cosi-bucket-kit/Chart.yaml create mode 100644 stable/cosi-bucket-kit/README.md create mode 100644 stable/cosi-bucket-kit/templates/bucketaccessclasses.yaml create mode 100644 stable/cosi-bucket-kit/templates/bucketaccesses.yaml create mode 100644 stable/cosi-bucket-kit/templates/bucketclaims.yaml create mode 100644 stable/cosi-bucket-kit/templates/bucketclasses.yaml create mode 100644 stable/cosi-bucket-kit/templates/ceph-provider.yaml create mode 100644 stable/cosi-bucket-kit/values.yaml diff --git a/stable/cosi-bucket-kit/Chart.yaml b/stable/cosi-bucket-kit/Chart.yaml new file mode 100644 index 000000000..4706a854e --- /dev/null +++ b/stable/cosi-bucket-kit/Chart.yaml @@ -0,0 +1,14 @@ +apiVersion: v2 +name: cosi-bucket-kit +description: A Helm chart for COSI BucketClaim(s) to be consumed by other applications. +home: https://github.com/mesosphere/charts +keywords: + - kubernetes + - cosi + - bucket + - storage + - ceph +version: 0.0.1-alpha.0 +appVersion: 0.0.1-alpha.0 +maintainers: + - name: takirala diff --git a/stable/cosi-bucket-kit/README.md b/stable/cosi-bucket-kit/README.md new file mode 100644 index 000000000..a46b94fad --- /dev/null +++ b/stable/cosi-bucket-kit/README.md @@ -0,0 +1,27 @@ +## README.md + +# COSI Bucket Collection Helm Chart + +This Helm chart facilitates the creation and management of multiple COSI resources, including: + +- **BucketClass** +- **BucketAccessClass** +- **BucketClaim** (multiple) +- **BucketAccess** (multiple) + +### Features +- Seamless deployment of multiple bucket-related resources. +- Customizable parameters for fine-grained control over resource creation. + +### Prerequisites +- Kubernetes 1.23+ +- Helm 3.0+ +- A deployed COSI driver compatible with your storage backend. + +### Installation + +```bash +helm repo add mesosphere-stable https://mesosphere.github.io/charts/stable +helm repo update +helm install cosi-buckets mesosphere-stable/cosi-bucket-kit +``` diff --git a/stable/cosi-bucket-kit/templates/bucketaccessclasses.yaml b/stable/cosi-bucket-kit/templates/bucketaccessclasses.yaml new file mode 100644 index 000000000..0a9be671a --- /dev/null +++ b/stable/cosi-bucket-kit/templates/bucketaccessclasses.yaml @@ -0,0 +1,14 @@ +{{- range .Values.bucketAccessClasses }} +apiVersion: objectstorage.k8s.io/v1alpha1 +kind: BucketAccessClass +metadata: + name: {{ .name }} +driverName: {{ .driverName }} +authenticationType: {{ .authenticationType }} +{{- if .parameters }} +parameters: + {{- range $key, $value := .parameters }} + {{ $key }}: {{ $value }} + {{- end }} +{{- end }} +{{- end }} diff --git a/stable/cosi-bucket-kit/templates/bucketaccesses.yaml b/stable/cosi-bucket-kit/templates/bucketaccesses.yaml new file mode 100644 index 000000000..8f7fd9696 --- /dev/null +++ b/stable/cosi-bucket-kit/templates/bucketaccesses.yaml @@ -0,0 +1,12 @@ +{{- range .Values.bucketAccesses }} +apiVersion: objectstorage.k8s.io/v1alpha1 +kind: BucketAccess +metadata: + name: {{ .name }} + namespace: {{ .namespace }} +spec: + bucketAccessClassName: {{ .bucketAccessClassName }} + bucketClaimName: {{ .bucketClaimName }} + protocol: {{ .protocol }} + credentialsSecretName: {{ .credentialsSecretName }} +{{- end }} diff --git a/stable/cosi-bucket-kit/templates/bucketclaims.yaml b/stable/cosi-bucket-kit/templates/bucketclaims.yaml new file mode 100644 index 000000000..a98383aae --- /dev/null +++ b/stable/cosi-bucket-kit/templates/bucketclaims.yaml @@ -0,0 +1,13 @@ +{{- range .Values.bucketClaims }} +apiVersion: objectstorage.k8s.io/v1alpha1 +kind: BucketClaim +metadata: + name: {{ .name }} + namespace: {{ .namespace }} +spec: + bucketClassName: {{ .bucketClassName }} + protocols: + {{- range .protocols }} + - {{ . }} + {{- end }} +{{- end }} diff --git a/stable/cosi-bucket-kit/templates/bucketclasses.yaml b/stable/cosi-bucket-kit/templates/bucketclasses.yaml new file mode 100644 index 000000000..998480cb1 --- /dev/null +++ b/stable/cosi-bucket-kit/templates/bucketclasses.yaml @@ -0,0 +1,14 @@ +{{- range .Values.bucketClasses }} +apiVersion: objectstorage.k8s.io/v1alpha1 +kind: BucketClass +metadata: + name: {{ .name }} +driverName: {{ .driverName }} +deletionPolicy: {{ .deletionPolicy }} +{{- if .parameters }} +parameters: + {{- range $key, $value := .parameters }} + {{ $key }}: {{ $value }} + {{- end }} +{{- end }} +{{- end }} diff --git a/stable/cosi-bucket-kit/templates/ceph-provider.yaml b/stable/cosi-bucket-kit/templates/ceph-provider.yaml new file mode 100644 index 000000000..a32ffffce --- /dev/null +++ b/stable/cosi-bucket-kit/templates/ceph-provider.yaml @@ -0,0 +1,23 @@ +{{- if .Values.cosiProviders }} +{{- with .Values.cosiProviders.ceph }} +{{- if .driver.enabled }} +apiVersion: ceph.rook.io/v1 +kind: CephCOSIDriver +metadata: + name: {{ .driver.name }} + namespace: {{ .driver.namespace }} +spec: +{{ toYaml .driver.spec | indent 2 }} +{{- end }} +--- +{{- if .adminuser.enabled }} +apiVersion: ceph.rook.io/v1 +kind: CephObjectStoreUser +metadata: + name: {{ .adminuser.name }} + namespace: {{ .adminuser.namespace }} +spec: +{{ toYaml .adminuser.spec | indent 2 }} +{{- end }} +{{- end }} +{{- end }} diff --git a/stable/cosi-bucket-kit/values.yaml b/stable/cosi-bucket-kit/values.yaml new file mode 100644 index 000000000..1464c7221 --- /dev/null +++ b/stable/cosi-bucket-kit/values.yaml @@ -0,0 +1,52 @@ +# # Cluster scoped resources +# bucketClasses: +# - name: example-bucket-class +# driverName: example.driver.com +# deletionPolicy: Delete +# parameters: +# param1: value1 +# param2: value2 + +# bucketAccessClasses: +# - name: example-bucket-class +# driverName: example.driver.com +# authenticationType: KEY # KEY or IAM (Implicit). +# parameters: +# param1: value1 +# param2: value2 + +# # Namespace scoped resources +# bucketClaims: +# - name: example-bucket-claim +# namespace: default +# bucketClassName: example-bucket-class +# protocols: # 1 or more of S3, Azure, GCS +# - s3 + +# bucketAccesses: +# - name: example-bucket-access +# namespace: default +# bucketAccessClassName: example-bucket-access-class +# bucketClaimName: example-bucket-claim +# protocol: s3 # Or azure or gcs +# credentialsSecretName: example-credentials-secret + +# cosiProviders: +# # Add more supported COSI providers here +# ceph: +# driver: +# enabled: true +# name: ceph-cosi-driver +# namespace: kommander +# spec: +# deploymentStrategy: Auto +# adminuser: +# enabled: true +# name: cosi-admin +# namespace: kommander +# spec: +# displayName: "ceph cosi admin" +# store: dkp-object-store # name of the CephObjectStore +# capabilities: +# bucket: "*" +# user: "*" From 30754a95921e1e7ee0ca5b8673572605b33d623c Mon Sep 17 00:00:00 2001 From: Tarun Gupta Akirala Date: Fri, 3 Jan 2025 08:48:20 -0800 Subject: [PATCH 2/2] chore: use .toYaml in templates Signed-off-by: Tarun Gupta Akirala --- stable/cosi-bucket-kit/README.md | 20 ++++++++++--------- .../templates/bucketaccessclasses.yaml | 4 +--- .../templates/bucketclasses.yaml | 4 +--- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/stable/cosi-bucket-kit/README.md b/stable/cosi-bucket-kit/README.md index a46b94fad..448e2b52a 100644 --- a/stable/cosi-bucket-kit/README.md +++ b/stable/cosi-bucket-kit/README.md @@ -1,13 +1,15 @@ -## README.md +## COSI Bucket Kit Helm Chart -# COSI Bucket Collection Helm Chart +This is a utility helm chart that has an implicit dependency against cosi CRDs and +can be deployed multiple times. -This Helm chart facilitates the creation and management of multiple COSI resources, including: +Facilitates the creation and management of multiple COSI resources, including: -- **BucketClass** -- **BucketAccessClass** -- **BucketClaim** (multiple) -- **BucketAccess** (multiple) +- zero or more BucketClass resources +- zero or more BucketAccessClass resources +- zero or more BucketClaim resources +- zero or more BucketAccess resources +- an optional ceph COSI driver ### Features - Seamless deployment of multiple bucket-related resources. @@ -16,12 +18,12 @@ This Helm chart facilitates the creation and management of multiple COSI resourc ### Prerequisites - Kubernetes 1.23+ - Helm 3.0+ -- A deployed COSI driver compatible with your storage backend. +- A deployed COSI controller and relevant COSI driver prerequisites if enabled. ### Installation ```bash helm repo add mesosphere-stable https://mesosphere.github.io/charts/stable helm repo update -helm install cosi-buckets mesosphere-stable/cosi-bucket-kit +helm install cosi-buckets mesosphere-stable/cosi-bucket-kit -f values.yaml ``` diff --git a/stable/cosi-bucket-kit/templates/bucketaccessclasses.yaml b/stable/cosi-bucket-kit/templates/bucketaccessclasses.yaml index 0a9be671a..bae03c70a 100644 --- a/stable/cosi-bucket-kit/templates/bucketaccessclasses.yaml +++ b/stable/cosi-bucket-kit/templates/bucketaccessclasses.yaml @@ -7,8 +7,6 @@ driverName: {{ .driverName }} authenticationType: {{ .authenticationType }} {{- if .parameters }} parameters: - {{- range $key, $value := .parameters }} - {{ $key }}: {{ $value }} - {{- end }} +{{ toYaml .parameters | indent 2 }} {{- end }} {{- end }} diff --git a/stable/cosi-bucket-kit/templates/bucketclasses.yaml b/stable/cosi-bucket-kit/templates/bucketclasses.yaml index 998480cb1..c3b340480 100644 --- a/stable/cosi-bucket-kit/templates/bucketclasses.yaml +++ b/stable/cosi-bucket-kit/templates/bucketclasses.yaml @@ -7,8 +7,6 @@ driverName: {{ .driverName }} deletionPolicy: {{ .deletionPolicy }} {{- if .parameters }} parameters: - {{- range $key, $value := .parameters }} - {{ $key }}: {{ $value }} - {{- end }} +{{ toYaml .parameters | indent 2 }} {{- end }} {{- end }}