From 2c686c30da14011adc0a1d74cebd5fd2e26b84db Mon Sep 17 00:00:00 2001 From: Travis Groth Date: Fri, 2 Aug 2019 08:41:51 -0400 Subject: [PATCH] [stable/pomerium] Add prometheus operator ServiceMonitor support (#16033) * Add ServiceMonitor template for Prometheus Operator Signed-off-by: Travis Groth * [stable/pomerium] Fix templating Signed-off-by: Travis Groth --- stable/pomerium/Chart.yaml | 2 +- stable/pomerium/README.md | 29 +++++++++++++++++++ .../templates/authenticate-service.yaml | 5 +++- .../pomerium/templates/authorize-service.yaml | 5 +++- stable/pomerium/templates/proxy-service.yaml | 5 +++- stable/pomerium/templates/servicemonitor.yaml | 24 +++++++++++++++ stable/pomerium/values.yaml | 6 ++++ 7 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 stable/pomerium/templates/servicemonitor.yaml diff --git a/stable/pomerium/Chart.yaml b/stable/pomerium/Chart.yaml index 7b765d1b3a..dc6d419398 100644 --- a/stable/pomerium/Chart.yaml +++ b/stable/pomerium/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: pomerium -version: 1.2.1 +version: 1.2.2 appVersion: 0.1.0 home: http://www.pomerium.io/ icon: https://www.pomerium.io/logo.svg diff --git a/stable/pomerium/README.md b/stable/pomerium/README.md index 24d9da664f..5cb3273fb2 100644 --- a/stable/pomerium/README.md +++ b/stable/pomerium/README.md @@ -75,6 +75,9 @@ Parameter | Description `service.annotations` | Service annotations | `{}` `service.externalPort` | Pomerium's port | `443` `service.type` | Service type (ClusterIP, NodePort or LoadBalancer) | `ClusterIP` +`serviceMonitor.enabled` | Create Prometheus Operator ServiceMonitor | `false` +`serviceMonitor.namespace` | Namespace to create the ServiceMonitor resource in | The namespace of the chart +`serviceMonitor.labels` | Additional labels to apply to the ServiceMonitor resource | `release: prometheus` `ingress.enabled` | Enables Ingress for pomerium | `false` `ingress.annotations` | Ingress annotations | `{}` `ingress.hosts` | Ingress accepted hostnames | `nil` @@ -84,6 +87,32 @@ Parameter | Description ## Metrics Discovery Configuration +This chart provices two ways to surface metrics for discovery. Under normal circumstances, you will only set up one method. + +### Prometheus Operator + +This chart assumes you have already installed the Prometheus Operator CRDs. + +Example chart values: + +```yaml +metrics: + enabled: true + port: 9090 # default +serviceMonitor: + enabled: true + labels: + release: prometheus # default + +``` + +Example ServiceMonitor configuration: + +```yaml + serviceMonitorSelector: + matchLabels: + release: prometheus # operator chart default +``` ### Prometheus kubernetes_sd_configs diff --git a/stable/pomerium/templates/authenticate-service.yaml b/stable/pomerium/templates/authenticate-service.yaml index 7db18db50f..180e0cc5cc 100644 --- a/stable/pomerium/templates/authenticate-service.yaml +++ b/stable/pomerium/templates/authenticate-service.yaml @@ -22,7 +22,10 @@ spec: targetPort: https protocol: TCP name: https - + - name: metrics + port: {{ .Values.metrics.port }} + protocol: TCP + targetPort: metrics {{- if hasKey .Values.service "nodePort" }} nodePort: {{ .Values.service.nodePort }} {{- end }} diff --git a/stable/pomerium/templates/authorize-service.yaml b/stable/pomerium/templates/authorize-service.yaml index bfd0b0fd9b..b28bd1b914 100644 --- a/stable/pomerium/templates/authorize-service.yaml +++ b/stable/pomerium/templates/authorize-service.yaml @@ -22,7 +22,10 @@ spec: targetPort: https protocol: TCP name: https - + - name: metrics + port: {{ .Values.metrics.port }} + protocol: TCP + targetPort: metrics {{- if hasKey .Values.service "nodePort" }} nodePort: {{ .Values.service.nodePort }} {{- end }} diff --git a/stable/pomerium/templates/proxy-service.yaml b/stable/pomerium/templates/proxy-service.yaml index a327b1dd49..b182142ab6 100644 --- a/stable/pomerium/templates/proxy-service.yaml +++ b/stable/pomerium/templates/proxy-service.yaml @@ -22,7 +22,10 @@ spec: targetPort: https protocol: TCP name: https - + - name: metrics + port: {{ .Values.metrics.port }} + protocol: TCP + targetPort: metrics {{- if hasKey .Values.service "nodePort" }} nodePort: {{ .Values.service.nodePort }} {{- end }} diff --git a/stable/pomerium/templates/servicemonitor.yaml b/stable/pomerium/templates/servicemonitor.yaml new file mode 100644 index 0000000000..3db254466b --- /dev/null +++ b/stable/pomerium/templates/servicemonitor.yaml @@ -0,0 +1,24 @@ +{{ if .Values.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "pomerium.fullname" . }} +{{- if .Values.serviceMonitor.namespace }} + namespace: {{ .Values.serviceMonitor.namespace }} +{{- end }} + labels: + helm.sh/chart: {{ template "pomerium.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/name: {{ template "pomerium.name" . }} +{{- if .Values.serviceMonitor.labels }} +{{ toYaml .Values.serviceMonitor.labels | indent 4 }} +{{- end }} +spec: + selector: + matchLabels: + helm.sh/chart: {{ template "pomerium.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + endpoints: + - port: metrics +{{ end }} \ No newline at end of file diff --git a/stable/pomerium/values.yaml b/stable/pomerium/values.yaml index 2edf79d8e6..ae0a9b9a91 100644 --- a/stable/pomerium/values.yaml +++ b/stable/pomerium/values.yaml @@ -121,3 +121,9 @@ image: metrics: enabled: false port: 9090 + +serviceMonitor: + enabled: false + namespace: "" + labels: + release: prometheus