From 6a35d2507051e0f0fca298c274277ff709fb0dd0 Mon Sep 17 00:00:00 2001 From: Chris Doan Date: Sun, 22 Mar 2026 14:47:25 -0500 Subject: [PATCH] ROSAENG-133 - feat: add extraVolumes and extraVolumeMounts support to Helm chart Adds configuration options to inject custom volumes and volume mounts into the Sentinel deployment, enabling users to mount additional ConfigMaps, Secrets, or other volume types as needed. Co-Authored-By: Claude Sonnet 4.5 --- charts/README.md | 3 ++- charts/templates/deployment.yaml | 6 ++++++ charts/values.yaml | 13 ++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/charts/README.md b/charts/README.md index 6a6a7cd..0c82f7b 100644 --- a/charts/README.md +++ b/charts/README.md @@ -50,7 +50,8 @@ helm install hyperfleet-sentinel oci://REGISTRY/hyperfleet-sentinel \ | nodeSelector | object | `{}` | Node selector constraints for pod scheduling | | tolerations | list | `[]` | Tolerations for pod scheduling | | affinity | object | `{}` | Affinity rules for pod scheduling | -| podDisruptionBudget | object | `{"enabled":true,"maxUnavailable":1}` | PodDisruptionBudget configuration | +| extraVolumes | list | `[]` | | +| extraVolumeMounts | list | `[]` | | | podDisruptionBudget.enabled | bool | `true` | Enable the PDB | | podDisruptionBudget.maxUnavailable | int | `1` | Maximum number of pods that can be unavailable during disruption | | config | object | `{"clients":{"hyperfleetApi":{"baseUrl":"http://hyperfleet-api:8000","timeout":"10s","version":"v1"}},"debugConfig":false,"log":{"format":"json","level":"info","output":"stdout"},"messageData":{"generation":"resource.generation","href":"resource.href","id":"resource.id","kind":"resource.kind"},"messageDecision":{"params":[{"expr":"condition(\"Reconciled\").last_updated_time","name":"ref_time"},{"expr":"condition(\"Reconciled\").status == \"True\"","name":"is_reconciled"},{"expr":"ref_time != \"\"","name":"has_ref_time"},{"expr":"!is_reconciled && resource.generation == 1","name":"is_new_resource"},{"expr":"resource.generation > condition(\"Reconciled\").observed_generation","name":"generation_mismatch"},{"expr":"is_reconciled && has_ref_time && now - timestamp(ref_time) > duration(\"30m\")","name":"reconciled_and_stale"},{"expr":"!is_reconciled && has_ref_time && now - timestamp(ref_time) > duration(\"10s\")","name":"not_reconciled_and_debounced"}],"result":"is_new_resource || generation_mismatch || reconciled_and_stale || not_reconciled_and_debounced"},"pollInterval":"5s","resourceSelector":[{"label":"shard","value":"1"}],"resourceType":"clusters","sentinel":{"name":"hyperfleet-sentinel-{{ .Values.config.resourceType }}"}}` | Sentinel application configuration. All settings in this section generate the ConfigMap consumed by the sentinel. | diff --git a/charts/templates/deployment.yaml b/charts/templates/deployment.yaml index 133b185..f36f6e7 100644 --- a/charts/templates/deployment.yaml +++ b/charts/templates/deployment.yaml @@ -108,6 +108,9 @@ spec: mountPath: /etc/hyperfleet/broker.yaml subPath: broker.yaml readOnly: true + {{- with .Values.extraVolumeMounts }} + {{- toYaml . | nindent 10 }} + {{- end }} resources: {{- toYaml .Values.resources | nindent 12 }} volumes: @@ -117,6 +120,9 @@ spec: - name: broker-config configMap: name: {{ include "sentinel.fullname" . }}-broker-config + {{- with .Values.extraVolumes }} + {{- toYaml . | nindent 8 }} + {{- end }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/charts/values.yaml b/charts/values.yaml index 476548d..40f1328 100644 --- a/charts/values.yaml +++ b/charts/values.yaml @@ -76,7 +76,18 @@ tolerations: [] # -- Affinity rules for pod scheduling affinity: {} -# -- PodDisruptionBudget configuration +# Extra volumes to add to the pod +extraVolumes: [] +# - name: example-volume +# emptyDir: {} + +# Extra volume mounts to add to the container +extraVolumeMounts: [] +# - name: example-volume +# mountPath: /example + +# PodDisruptionBudget configuration +# See: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget podDisruptionBudget: # -- Enable the PDB enabled: true