From 71d1a1e5e0f80dd3d020900555339c6b03f34ffd Mon Sep 17 00:00:00 2001 From: Rafael Benevides Date: Mon, 2 Feb 2026 15:32:19 -0300 Subject: [PATCH 1/2] HYPERFLEET-581 - feat: Add ServiceMonitor to Helm chart for Prometheus Operator Add ServiceMonitor template to enable automatic Prometheus Operator scraping of metrics on port 9090. Configuration options in values.yaml: - serviceMonitor.enabled (default: false) - serviceMonitor.interval (default: 30s) - serviceMonitor.scrapeTimeout (default: 10s) - serviceMonitor.labels (for Prometheus selector matching) - serviceMonitor.namespace (optional override) --- charts/templates/servicemonitor.yaml | 28 ++++++++++++++++++++++++++++ charts/values.yaml | 16 ++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 charts/templates/servicemonitor.yaml diff --git a/charts/templates/servicemonitor.yaml b/charts/templates/servicemonitor.yaml new file mode 100644 index 0000000..f36e617 --- /dev/null +++ b/charts/templates/servicemonitor.yaml @@ -0,0 +1,28 @@ +{{- if .Values.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "hyperfleet-api.fullname" . }} + {{- if .Values.serviceMonitor.namespace }} + namespace: {{ .Values.serviceMonitor.namespace }} + {{- end }} + labels: + {{- include "hyperfleet-api.labels" . | nindent 4 }} + {{- with .Values.serviceMonitor.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: + {{- include "hyperfleet-api.selectorLabels" . | nindent 6 }} + {{- if .Values.serviceMonitor.namespace }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + {{- end }} + endpoints: + - port: metrics + path: /metrics + interval: {{ .Values.serviceMonitor.interval }} + scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }} +{{- end }} diff --git a/charts/values.yaml b/charts/values.yaml index b586bbf..0d62568 100644 --- a/charts/values.yaml +++ b/charts/values.yaml @@ -125,6 +125,22 @@ adapters: # Default: ["validation", "hypershift"] nodepool: [] +# ServiceMonitor for Prometheus Operator +# Enables automatic metrics discovery in clusters with Prometheus Operator +serviceMonitor: + # Enable ServiceMonitor creation + enabled: false + # Scrape interval + interval: 30s + # Scrape timeout (must be less than interval) + scrapeTimeout: 10s + # Additional labels for ServiceMonitor to match Prometheus selector + # Example: release: prometheus + labels: {} + # Override the namespace where ServiceMonitor is created + # If empty, uses the release namespace + namespace: "" + # Additional environment variables # You can override adapters by setting HYPERFLEET_*_ADAPTERS here env: [] From 65e4872f47a941e1ff02ef277354756985bd2d0f Mon Sep 17 00:00:00 2001 From: Rafael Benevides Date: Mon, 2 Feb 2026 15:35:32 -0300 Subject: [PATCH 2/2] HYPERFLEET-581 - docs: Document ServiceMonitor configuration Add ServiceMonitor options to Helm values table and expand Monitoring section with usage examples. --- docs/deployment.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/docs/deployment.md b/docs/deployment.md index 5e87731..af7a21c 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -215,6 +215,11 @@ helm uninstall hyperfleet-api --namespace hyperfleet-system | `database.postgresql.enabled` | Enable built-in PostgreSQL | `true` | | `database.external.enabled` | Use external database | `false` | | `database.external.secretName` | Secret containing database credentials | `hyperfleet-db-external` | +| `serviceMonitor.enabled` | Enable Prometheus Operator ServiceMonitor | `false` | +| `serviceMonitor.interval` | Metrics scrape interval | `30s` | +| `serviceMonitor.scrapeTimeout` | Metrics scrape timeout | `10s` | +| `serviceMonitor.labels` | Additional labels for Prometheus selector | `{}` | +| `serviceMonitor.namespace` | Namespace for ServiceMonitor (if different) | `""` | | `replicaCount` | Number of API replicas | `1` | | `resources.limits.cpu` | CPU limit | `500m` | | `resources.limits.memory` | Memory limit | `512Mi` | @@ -342,7 +347,33 @@ Enable autoscaling via Helm values (`autoscaling.enabled=true`). Prometheus metrics available at `http://:9090/metrics`. -For Prometheus Operator, enable ServiceMonitor via Helm values (`serviceMonitor.enabled=true`). +### Prometheus Operator Integration + +For clusters with Prometheus Operator, enable the ServiceMonitor to automatically discover and scrape metrics: + +```bash +helm install hyperfleet-api ./charts/ \ + --namespace hyperfleet-system \ + --set serviceMonitor.enabled=true +``` + +If your Prometheus requires specific labels for service discovery, add them: + +```bash +helm install hyperfleet-api ./charts/ \ + --namespace hyperfleet-system \ + --set serviceMonitor.enabled=true \ + --set serviceMonitor.labels.release=prometheus +``` + +To create the ServiceMonitor in a different namespace (e.g., `monitoring`): + +```bash +helm install hyperfleet-api ./charts/ \ + --namespace hyperfleet-system \ + --set serviceMonitor.enabled=true \ + --set serviceMonitor.namespace=monitoring +``` ## Production Best Practices