diff --git a/stable/traefik/Chart.yaml b/stable/traefik/Chart.yaml index aa12f4ec1b..f9eb05605c 100644 --- a/stable/traefik/Chart.yaml +++ b/stable/traefik/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: traefik -version: 1.75.1 +version: 1.76.0 appVersion: 1.7.12 description: A Traefik based Kubernetes ingress controller with Let's Encrypt support keywords: diff --git a/stable/traefik/README.md b/stable/traefik/README.md index 5537f2b29c..785b74fcb9 100644 --- a/stable/traefik/README.md +++ b/stable/traefik/README.md @@ -204,6 +204,7 @@ The following table lists the configurable parameters of the Traefik chart and t | `metrics.prometheus.enabled` | Whether to enable the `/metrics` endpoint for metric collection by Prometheus. | `false` | | `metrics.prometheus.restrictAccess` | Whether to limit access to the metrics port (8080) to the dashboard service. When `false`, it is accessible on the main Traefik service as well. | `false` | | `metrics.prometheus.buckets` | A list of response times (in seconds) - for each list element, Traefik will report all response times less than the element. | `[0.1,0.3,1.2,5]` | +| `metrics.serviceMonitor.enabled` | Whether to enable servicemonitor for Prometheus. | `false` | | `metrics.datadog.enabled` | Whether to enable pushing metrics to Datadog. | `false` | | `metrics.datadog.address` | Datadog host in the format : | `localhost:8125` | | `metrics.datadog.pushInterval` | How often to push metrics to Datadog. | `10s` | diff --git a/stable/traefik/templates/servicemonitor.yaml b/stable/traefik/templates/servicemonitor.yaml new file mode 100644 index 0000000000..925680824c --- /dev/null +++ b/stable/traefik/templates/servicemonitor.yaml @@ -0,0 +1,30 @@ +{{- if ( .Values.metrics.serviceMonitor ) }} +{{- if and ( .Values.metrics.serviceMonitor.enabled ) ( .Values.metrics.prometheus.enabled ) }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: +{{- if .Values.metrics.serviceMonitor.labels }} + labels: +{{ toYaml .Values.metrics.serviceMonitor.labels | indent 4}} +{{- end }} + name: {{ template "traefik.fullname" . }}-prometheus-exporter +{{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} +{{- end }} +spec: + endpoints: + - targetPort: metrics + path: /metrics +{{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} +{{- end }} + jobLabel: {{ template "traefik.fullname" . }}-prometheus-exporter + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + selector: + matchLabels: + app: {{ template "traefik.name" . }} + release: {{ .Release.Name | quote }} +{{- end }} +{{- end }} diff --git a/stable/traefik/values.yaml b/stable/traefik/values.yaml index c313c27174..572c411d02 100644 --- a/stable/traefik/values.yaml +++ b/stable/traefik/values.yaml @@ -408,6 +408,15 @@ metrics: ## it to the dashboard service only restrictAccess: false # buckets: [0.1,0.3,1.2,5] + # serviceMonitor: + # When set true and if Prometheus Operator is installed then use a ServiceMonitor to configure scraping + # enabled: false + # Set the namespace the ServiceMonitor should be deployed + # namespace: monitoring + # Set how frequently Prometheus should scrape + # interval: 30s + # Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator + # labels: datadog: enabled: false # address: localhost:8125