diff --git a/deploy/helm/pargar/templates/servicemonitor.yaml b/deploy/helm/pargar/templates/servicemonitor.yaml new file mode 100644 index 0000000..3cd93a3 --- /dev/null +++ b/deploy/helm/pargar/templates/servicemonitor.yaml @@ -0,0 +1,29 @@ +{{- if .Values.backend.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "pargar.fullname" . }}-backend + labels: + {{- include "pargar.labels" . | nindent 4 }} + app.kubernetes.io/component: backend +spec: + selector: + matchLabels: + {{- include "pargar.selectorLabels" . | nindent 6 }} + app.kubernetes.io/component: backend + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + endpoints: + - port: http + path: /metrics + interval: {{ .Values.backend.metrics.serviceMonitor.interval | default "30s" }} + scheme: http + # /metrics answers 401 without it; Prometheus sends it as + # Authorization: Bearer . + authorization: + type: Bearer + credentials: + name: {{ include "pargar.appSecretName" . }} + key: metrics-token +{{- end }} diff --git a/deploy/helm/pargar/values.yaml b/deploy/helm/pargar/values.yaml index 1a6299c..12c7d25 100644 --- a/deploy/helm/pargar/values.yaml +++ b/deploy/helm/pargar/values.yaml @@ -25,6 +25,13 @@ backend: pullPolicy: IfNotPresent service: port: 8080 + metrics: + # Prometheus Operator ServiceMonitor. /metrics is bearer-protected by + # METRICS_TOKEN, so the endpoint carries authorization credentials + # (pargar-app secret) instead of scraping anonymously. + serviceMonitor: + enabled: false + interval: 30s resources: requests: cpu: 50m