From a494c6bb4a3c1faedefbfcc3254f46721b01c1de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl?= Date: Wed, 18 Dec 2019 17:21:57 +0100 Subject: [PATCH] Add optional service replica selector (#19398) When using a replicaset for the server (for redundancy purposes), this allows to select which replica the service will talk to in order to have a consistent view of the data. Signed-off-by: rabadin --- stable/prometheus/Chart.yaml | 2 +- stable/prometheus/README.md | 2 ++ stable/prometheus/templates/server-service.yaml | 4 ++++ stable/prometheus/values.yaml | 7 +++++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/stable/prometheus/Chart.yaml b/stable/prometheus/Chart.yaml index 0250f4990c..b2d9f43cb8 100755 --- a/stable/prometheus/Chart.yaml +++ b/stable/prometheus/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: prometheus -version: 9.5.5 +version: 9.5.6 appVersion: 2.13.1 description: Prometheus is a monitoring system and time series database. home: https://prometheus.io/ diff --git a/stable/prometheus/README.md b/stable/prometheus/README.md index b4811c400b..952ec4cc1c 100644 --- a/stable/prometheus/README.md +++ b/stable/prometheus/README.md @@ -313,6 +313,8 @@ Parameter | Description | Default `server.service.servicePort` | Prometheus server service port | `80` `server.service.sessionAffinity` | Session Affinity for server service, can be `None` or `ClientIP` | `None` `server.service.type` | type of Prometheus server service to create | `ClusterIP` +`server.service.statefulsetReplica.enabled` | If true, send the traffic from the service to only one replica of the replicaset | `false` +`server.service.statefulsetReplica.replica` | Which replica to send the traffice to | `0` `server.sidecarContainers` | array of snippets with your sidecar containers for prometheus server | `""` `serviceAccounts.alertmanager.create` | If true, create the alertmanager service account | `true` `serviceAccounts.alertmanager.name` | name of the alertmanager service account to use or create | `{{ prometheus.alertmanager.fullname }}` diff --git a/stable/prometheus/templates/server-service.yaml b/stable/prometheus/templates/server-service.yaml index f837745119..a0c88eedd6 100644 --- a/stable/prometheus/templates/server-service.yaml +++ b/stable/prometheus/templates/server-service.yaml @@ -38,9 +38,13 @@ spec: nodePort: {{ .Values.server.service.nodePort }} {{- end }} selector: + {{- if and .Values.server.statefulSet.enabled .Values.server.service.statefulsetReplica.enabled }} + statefulset.kubernetes.io/pod-name: {{ .Release.Name }}-{{ .Values.server.name }}-{{ .Values.server.service.statefulsetReplica.replica }} + {{- else -}} {{- include "prometheus.server.matchLabels" . | nindent 4 }} {{- if .Values.server.service.sessionAffinity }} sessionAffinity: {{ .Values.server.service.sessionAffinity }} {{- end }} + {{- end }} type: "{{ .Values.server.service.type }}" {{- end -}} diff --git a/stable/prometheus/values.yaml b/stable/prometheus/values.yaml index 7fba509ece..51bcb7b6e6 100644 --- a/stable/prometheus/values.yaml +++ b/stable/prometheus/values.yaml @@ -858,6 +858,13 @@ server: sessionAffinity: None type: ClusterIP + ## If using a statefulSet (statefulSet.enabled=true), configure the + ## service to connect to a specific replica to have a consistent view + ## of the data. + statefulsetReplica: + enabled: false + replica: 0 + ## Prometheus server pod termination grace period ## terminationGracePeriodSeconds: 300