Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions charts/templates/servicemonitor.yaml
Original file line number Diff line number Diff line change
@@ -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 }}
16 changes: 16 additions & 0 deletions charts/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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: []
Expand Down
33 changes: 32 additions & 1 deletion docs/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -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` |
Expand Down Expand Up @@ -342,7 +347,33 @@ Enable autoscaling via Helm values (`autoscaling.enabled=true`).

Prometheus metrics available at `http://<service>: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

Expand Down