From d1c28fa57a0319879dc516ade77c5ec0d90500e9 Mon Sep 17 00:00:00 2001 From: Mike Vollman Date: Fri, 11 Oct 2024 10:20:34 -0400 Subject: [PATCH] helm: Support setting annotations for nodePlugin and provisioner Adding annotation support to both the CephFS and RBD charts. Support setting the DaemonSet and Pod level annotations for the nodeplugin. Support setting the Deployment and Pod level annotations for the provisioner. Signed-off-by: Mike Vollman --- .pre-commit-config.yaml | 1 + PendingReleaseNotes.md | 1 + charts/ceph-csi-cephfs/README.md | 4 ++++ .../ceph-csi-cephfs/templates/nodeplugin-daemonset.yaml | 8 ++++++++ .../ceph-csi-cephfs/templates/provisioner-deployment.yaml | 8 ++++++++ charts/ceph-csi-cephfs/values.yaml | 8 ++++++++ charts/ceph-csi-rbd/README.md | 4 ++++ charts/ceph-csi-rbd/templates/nodeplugin-daemonset.yaml | 8 ++++++++ charts/ceph-csi-rbd/templates/provisioner-deployment.yaml | 8 ++++++++ charts/ceph-csi-rbd/values.yaml | 8 ++++++++ 10 files changed, 58 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 776e3959f..9679e3c6b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,6 +20,7 @@ repos: - id: check-json - id: check-yaml args: [--multi] + exclude: ^charts/ceph-csi-(cephfs|rbd)/templates/ # Makes sure that files end in a new line. - id: end-of-file-fixer diff --git a/PendingReleaseNotes.md b/PendingReleaseNotes.md index 5ec3bc04e..368257832 100644 --- a/PendingReleaseNotes.md +++ b/PendingReleaseNotes.md @@ -9,5 +9,6 @@ - CSI metrics for sidecars are now exposed at `POD_IP`:`SIDECAR_ENDPOINT`/`metrics` path. Check sidecar container spec for `SIDECAR_ENDPOINT` value [PR](https://github.com/ceph/ceph-csi/pull/4887) +- helm: Support setting nodepluigin and provisioner annotations ## NOTE diff --git a/charts/ceph-csi-cephfs/README.md b/charts/ceph-csi-cephfs/README.md index edb3b0a1d..1fdca5b29 100644 --- a/charts/ceph-csi-cephfs/README.md +++ b/charts/ceph-csi-cephfs/README.md @@ -131,6 +131,8 @@ charts and their default values. | `nodeplugin.plugin.image.tag` | Image tag | `canary` | | `nodeplugin.plugin.image.pullPolicy` | Image pull policy | `IfNotPresent` | | `nodeplugin.podSecurityContext` | Specifies pod-level security context. | `{}` | +| `nodeplugin.annotations` | Specifies DaemonSet level annotations. | `{}` | +| `nodeplugin.podAnnotations` | Specifies pod-level annotations. | `{}` | | `nodeplugin.nodeSelector` | Kubernetes `nodeSelector` to add to the Daemonset | `{}` | | `nodeplugin.tolerations` | List of Kubernetes `tolerations` to add to the Daemonset | `{}` | | `nodeplugin.forcecephkernelclient` | Set to true to enable Ceph Kernel clients on kernel < 4.17 which support quotas | `true` | @@ -167,6 +169,8 @@ charts and their default values. | `provisioner.tolerations` | Specifies the tolerations for provisioner deployment | `{}` | | `provisioner.affinity` | Specifies the affinity for provisioner deployment | `{}` | | `provisioner.podSecurityContext` | Specifies pod-level security context. | `{}` | +| `provisioner.annotations` | Specifies Deployment level annotations. | `{}` | +| `provisioner.podAnnotations` | Specifies pod-level annotations. | `{}` | | `provisionerSocketFile` | The filename of the provisioner socket | `csi-provisioner.sock` | | `pluginSocketFile` | The filename of the plugin socket | `csi.sock` | | `readAffinity.enabled` | Enable read affinity for CephFS subvolumes. Recommended to set to true if running kernel 5.8 or newer. | `false` | diff --git a/charts/ceph-csi-cephfs/templates/nodeplugin-daemonset.yaml b/charts/ceph-csi-cephfs/templates/nodeplugin-daemonset.yaml index 5be463279..3d3bc6308 100644 --- a/charts/ceph-csi-cephfs/templates/nodeplugin-daemonset.yaml +++ b/charts/ceph-csi-cephfs/templates/nodeplugin-daemonset.yaml @@ -10,6 +10,10 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 4 }}{{- end }} +{{- if .Values.nodeplugin.annotations }} + annotations: + {{- toYaml .Values.nodeplugin.annotations | nindent 4 -}} +{{- end }} spec: selector: matchLabels: @@ -27,6 +31,10 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 8 }}{{- end }} + {{- if .Values.nodeplugin.podAnnotations }} + annotations: + {{- toYaml .Values.nodeplugin.podAnnotations | nindent 8 -}} + {{- end }} spec: securityContext: {{ toYaml .Values.nodeplugin.podSecurityContext | nindent 8 }} serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.nodeplugin" . }} diff --git a/charts/ceph-csi-cephfs/templates/provisioner-deployment.yaml b/charts/ceph-csi-cephfs/templates/provisioner-deployment.yaml index 17e2fb809..e68dd03e2 100644 --- a/charts/ceph-csi-cephfs/templates/provisioner-deployment.yaml +++ b/charts/ceph-csi-cephfs/templates/provisioner-deployment.yaml @@ -10,6 +10,10 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 4 }}{{- end }} +{{- if .Values.provisioner.annotations }} + annotations: + {{- toYaml .Values.provisioner.annotations | nindent 4 -}} +{{- end }} spec: replicas: {{ .Values.provisioner.replicaCount }} strategy: @@ -32,6 +36,10 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 8 }}{{- end }} + {{- if .Values.provisioner.podAnnotations }} + annotations: + {{- toYaml .Values.provisioner.podAnnotations | nindent 8 -}} + {{- end }} spec: {{- if gt (int .Values.provisioner.replicaCount) 1 }} affinity: diff --git a/charts/ceph-csi-cephfs/values.yaml b/charts/ceph-csi-cephfs/values.yaml index ec67204c6..18a9895a8 100644 --- a/charts/ceph-csi-cephfs/values.yaml +++ b/charts/ceph-csi-cephfs/values.yaml @@ -130,8 +130,12 @@ nodeplugin: affinity: {} + annotations: {} + podSecurityContext: {} + podAnnotations: {} + # Set to true to enable Ceph Kernel clients # on kernel < 4.17 which support quotas # forcecephkernelclient: true @@ -262,8 +266,12 @@ provisioner: affinity: {} + annotations: {} + podSecurityContext: {} + podAnnotations: {} + # readAffinity: # Enable read affinity for CephFS subvolumes. Recommended to # set to true if running kernel 5.8 or newer. diff --git a/charts/ceph-csi-rbd/README.md b/charts/ceph-csi-rbd/README.md index 504fa1718..4bf4694e7 100644 --- a/charts/ceph-csi-rbd/README.md +++ b/charts/ceph-csi-rbd/README.md @@ -133,6 +133,8 @@ charts and their default values. | `nodeplugin.plugin.image.tag` | Image tag | `canary` | | `nodeplugin.plugin.image.pullPolicy` | Image pull policy | `IfNotPresent` | | `nodeplugin.podSecurityContext` | Specifies pod-level security context. | `{}` | +| `nodeplugin.annotations` | Specifies DaemonSet level annotations. | `{}` | +| `nodeplugin.podAnnotations` | Specifies pod-level annotations. | `{}` | | `nodeplugin.nodeSelector` | Kubernetes `nodeSelector` to add to the Daemonset | `{}` | | `nodeplugin.tolerations` | List of Kubernetes `tolerations` to add to the Daemonset | `{}` | | `provisioner.name` | Specifies the name of provisioner | `provisioner` | @@ -157,6 +159,8 @@ charts and their default values. | `provisioner.provisioner.args.httpEndpointPort` | Specifies http server port for diagnostics, health checks and metrics | `""` | | `provisioner.provisioner.extraArgs` | Specifies extra arguments for the provisioner sidecar | `[]` | | `provisioner.podSecurityContext` | Specifies pod-level security context. | `{}` | +| `provisioner.annotations` | Specifies Deployment level annotations. | `{}` | +| `provisioner.podAnnotations` | Specifies pod-level annotations. | `{}` | | `provisioner.attacher.name` | Specifies the name of csi-attacher sidecar | `attacher` | | `provisioner.attacher.enabled` | Specifies whether attacher sidecar is enabled | `true` | | `provisioner.attacher.image.repository` | Specifies the csi-attacher image repository URL | `registry.k8s.io/sig-storage/csi-attacher` | diff --git a/charts/ceph-csi-rbd/templates/nodeplugin-daemonset.yaml b/charts/ceph-csi-rbd/templates/nodeplugin-daemonset.yaml index e640031b7..8763104f9 100644 --- a/charts/ceph-csi-rbd/templates/nodeplugin-daemonset.yaml +++ b/charts/ceph-csi-rbd/templates/nodeplugin-daemonset.yaml @@ -10,6 +10,10 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 4 }}{{- end }} +{{- if .Values.nodeplugin.annotations }} + annotations: + {{- toYaml .Values.nodeplugin.annotations | nindent 4 -}} +{{- end }} spec: selector: matchLabels: @@ -27,6 +31,10 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 8 }}{{- end }} + {{- if .Values.nodeplugin.podAnnotations }} + annotations: + {{- toYaml .Values.nodeplugin.podAnnotations | nindent 8 -}} + {{- end }} spec: securityContext: {{ toYaml .Values.nodeplugin.podSecurityContext | nindent 8 }} serviceAccountName: {{ include "ceph-csi-rbd.serviceAccountName.nodeplugin" . }} diff --git a/charts/ceph-csi-rbd/templates/provisioner-deployment.yaml b/charts/ceph-csi-rbd/templates/provisioner-deployment.yaml index 4a1679b73..a3fec164c 100644 --- a/charts/ceph-csi-rbd/templates/provisioner-deployment.yaml +++ b/charts/ceph-csi-rbd/templates/provisioner-deployment.yaml @@ -10,6 +10,10 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 4 }}{{- end }} +{{- if .Values.provisioner.annotations }} + annotations: + {{- toYaml .Values.provisioner.annotations | nindent 4 -}} +{{- end }} spec: replicas: {{ .Values.provisioner.replicaCount }} strategy: @@ -32,6 +36,10 @@ spec: release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 8 }}{{- end }} + {{- if .Values.provisioner.podAnnotations }} + annotations: + {{- toYaml .Values.provisioner.podAnnotations | nindent 8 -}} + {{- end }} spec: {{- if gt (int .Values.provisioner.replicaCount) 1 }} affinity: diff --git a/charts/ceph-csi-rbd/values.yaml b/charts/ceph-csi-rbd/values.yaml index b8d0c2cc2..16142e32d 100644 --- a/charts/ceph-csi-rbd/values.yaml +++ b/charts/ceph-csi-rbd/values.yaml @@ -159,8 +159,12 @@ nodeplugin: affinity: {} + annotations: {} + podSecurityContext: {} + podAnnotations: {} + provisioner: name: provisioner replicaCount: 3 @@ -318,8 +322,12 @@ provisioner: affinity: {} + annotations: {} + podSecurityContext: {} + podAnnotations: {} + topology: # domainLabels define which node labels to use as domains # for CSI nodeplugins to advertise their domains