github.com/verrazzano/verrazzano@v1.7.0/platform-operator/thirdparty/charts/prometheus-community/kube-prometheus-stack/templates/_helpers.tpl (about) 1 {{/* vim: set filetype=mustache: */}} 2 {{/* Expand the name of the chart. This is suffixed with -alertmanager, which means subtract 13 from longest 63 available */}} 3 {{- define "kube-prometheus-stack.name" -}} 4 {{- default .Chart.Name .Values.nameOverride | trunc 50 | trimSuffix "-" -}} 5 {{- end }} 6 7 {{/* 8 Create a default fully qualified app name. 9 We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 10 If release name contains chart name it will be used as a full name. 11 The components in this chart create additional resources that expand the longest created name strings. 12 The longest name that gets created adds and extra 37 characters, so truncation should be 63-35=26. 13 */}} 14 {{- define "kube-prometheus-stack.fullname" -}} 15 {{- if .Values.fullnameOverride -}} 16 {{- .Values.fullnameOverride | trunc 26 | trimSuffix "-" -}} 17 {{- else -}} 18 {{- $name := default .Chart.Name .Values.nameOverride -}} 19 {{- if contains $name .Release.Name -}} 20 {{- .Release.Name | trunc 26 | trimSuffix "-" -}} 21 {{- else -}} 22 {{- printf "%s-%s" .Release.Name $name | trunc 26 | trimSuffix "-" -}} 23 {{- end -}} 24 {{- end -}} 25 {{- end -}} 26 27 {{/* Fullname suffixed with operator */}} 28 {{- define "kube-prometheus-stack.operator.fullname" -}} 29 {{- printf "%s-operator" (include "kube-prometheus-stack.fullname" .) -}} 30 {{- end }} 31 32 {{/* Prometheus custom resource instance name */}} 33 {{- define "kube-prometheus-stack.prometheus.crname" -}} 34 {{- if .Values.cleanPrometheusOperatorObjectNames }} 35 {{- include "kube-prometheus-stack.fullname" . }} 36 {{- else }} 37 {{- print (include "kube-prometheus-stack.fullname" .) "-prometheus" }} 38 {{- end }} 39 {{- end }} 40 41 {{/* Prometheus apiVersion for networkpolicy */}} 42 {{- define "kube-prometheus-stack.prometheus.networkPolicy.apiVersion" -}} 43 {{- print "networking.k8s.io/v1" -}} 44 {{- end }} 45 46 {{/* Alertmanager custom resource instance name */}} 47 {{- define "kube-prometheus-stack.alertmanager.crname" -}} 48 {{- if .Values.cleanPrometheusOperatorObjectNames }} 49 {{- include "kube-prometheus-stack.fullname" . }} 50 {{- else }} 51 {{- print (include "kube-prometheus-stack.fullname" .) "-alertmanager" -}} 52 {{- end }} 53 {{- end }} 54 55 {{/* Fullname suffixed with thanos-ruler */}} 56 {{- define "kube-prometheus-stack.thanosRuler.fullname" -}} 57 {{- printf "%s-thanos-ruler" (include "kube-prometheus-stack.fullname" .) -}} 58 {{- end }} 59 60 {{/* Shortened name suffixed with thanos-ruler */}} 61 {{- define "kube-prometheus-stack.thanosRuler.name" -}} 62 {{- default (printf "%s-thanos-ruler" (include "kube-prometheus-stack.name" .)) .Values.thanosRuler.name -}} 63 {{- end }} 64 65 66 {{/* Create chart name and version as used by the chart label. */}} 67 {{- define "kube-prometheus-stack.chartref" -}} 68 {{- replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name -}} 69 {{- end }} 70 71 {{/* Generate basic labels */}} 72 {{- define "kube-prometheus-stack.labels" }} 73 app.kubernetes.io/managed-by: {{ .Release.Service }} 74 app.kubernetes.io/instance: {{ .Release.Name }} 75 app.kubernetes.io/version: "{{ replace "+" "_" .Chart.Version }}" 76 app.kubernetes.io/part-of: {{ template "kube-prometheus-stack.name" . }} 77 chart: {{ template "kube-prometheus-stack.chartref" . }} 78 release: {{ $.Release.Name | quote }} 79 heritage: {{ $.Release.Service | quote }} 80 {{- if .Values.commonLabels}} 81 {{ toYaml .Values.commonLabels }} 82 {{- end }} 83 {{- end }} 84 85 {{/* Create the name of kube-prometheus-stack service account to use */}} 86 {{- define "kube-prometheus-stack.operator.serviceAccountName" -}} 87 {{- if .Values.prometheusOperator.serviceAccount.create -}} 88 {{ default (include "kube-prometheus-stack.operator.fullname" .) .Values.prometheusOperator.serviceAccount.name }} 89 {{- else -}} 90 {{ default "default" .Values.prometheusOperator.serviceAccount.name }} 91 {{- end -}} 92 {{- end -}} 93 94 {{/* Create the name of prometheus service account to use */}} 95 {{- define "kube-prometheus-stack.prometheus.serviceAccountName" -}} 96 {{- if .Values.prometheus.serviceAccount.create -}} 97 {{ default (print (include "kube-prometheus-stack.fullname" .) "-prometheus") .Values.prometheus.serviceAccount.name }} 98 {{- else -}} 99 {{ default "default" .Values.prometheus.serviceAccount.name }} 100 {{- end -}} 101 {{- end -}} 102 103 {{/* Create the name of alertmanager service account to use */}} 104 {{- define "kube-prometheus-stack.alertmanager.serviceAccountName" -}} 105 {{- if .Values.alertmanager.serviceAccount.create -}} 106 {{ default (print (include "kube-prometheus-stack.fullname" .) "-alertmanager") .Values.alertmanager.serviceAccount.name }} 107 {{- else -}} 108 {{ default "default" .Values.alertmanager.serviceAccount.name }} 109 {{- end -}} 110 {{- end -}} 111 112 {{/* Create the name of thanosRuler service account to use */}} 113 {{- define "kube-prometheus-stack.thanosRuler.serviceAccountName" -}} 114 {{- if .Values.thanosRuler.serviceAccount.create -}} 115 {{ default (include "kube-prometheus-stack.thanosRuler.name" .) .Values.thanosRuler.serviceAccount.name }} 116 {{- else -}} 117 {{ default "default" .Values.thanosRuler.serviceAccount.name }} 118 {{- end -}} 119 {{- end -}} 120 121 {{/* 122 Allow the release namespace to be overridden for multi-namespace deployments in combined charts 123 */}} 124 {{- define "kube-prometheus-stack.namespace" -}} 125 {{- if .Values.namespaceOverride -}} 126 {{- .Values.namespaceOverride -}} 127 {{- else -}} 128 {{- .Release.Namespace -}} 129 {{- end -}} 130 {{- end -}} 131 132 {{/* 133 Use the grafana namespace override for multi-namespace deployments in combined charts 134 */}} 135 {{- define "kube-prometheus-stack-grafana.namespace" -}} 136 {{- if .Values.grafana.namespaceOverride -}} 137 {{- .Values.grafana.namespaceOverride -}} 138 {{- else -}} 139 {{- .Release.Namespace -}} 140 {{- end -}} 141 {{- end -}} 142 143 {{/* 144 Use the kube-state-metrics namespace override for multi-namespace deployments in combined charts 145 */}} 146 {{- define "kube-prometheus-stack-kube-state-metrics.namespace" -}} 147 {{- if index .Values "kube-state-metrics" "namespaceOverride" -}} 148 {{- index .Values "kube-state-metrics" "namespaceOverride" -}} 149 {{- else -}} 150 {{- .Release.Namespace -}} 151 {{- end -}} 152 {{- end -}} 153 154 {{/* 155 Use the prometheus-node-exporter namespace override for multi-namespace deployments in combined charts 156 */}} 157 {{- define "kube-prometheus-stack-prometheus-node-exporter.namespace" -}} 158 {{- if index .Values "prometheus-node-exporter" "namespaceOverride" -}} 159 {{- index .Values "prometheus-node-exporter" "namespaceOverride" -}} 160 {{- else -}} 161 {{- .Release.Namespace -}} 162 {{- end -}} 163 {{- end -}} 164 165 {{/* Allow KubeVersion to be overridden. */}} 166 {{- define "kube-prometheus-stack.kubeVersion" -}} 167 {{- default .Capabilities.KubeVersion.Version .Values.kubeVersionOverride -}} 168 {{- end -}} 169 170 {{/* Get Ingress API Version */}} 171 {{- define "kube-prometheus-stack.ingress.apiVersion" -}} 172 {{- if and (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" (include "kube-prometheus-stack.kubeVersion" .)) -}} 173 {{- print "networking.k8s.io/v1" -}} 174 {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" -}} 175 {{- print "networking.k8s.io/v1beta1" -}} 176 {{- else -}} 177 {{- print "extensions/v1beta1" -}} 178 {{- end -}} 179 {{- end -}} 180 181 {{/* Check Ingress stability */}} 182 {{- define "kube-prometheus-stack.ingress.isStable" -}} 183 {{- eq (include "kube-prometheus-stack.ingress.apiVersion" .) "networking.k8s.io/v1" -}} 184 {{- end -}} 185 186 {{/* Check Ingress supports pathType */}} 187 {{/* pathType was added to networking.k8s.io/v1beta1 in Kubernetes 1.18 */}} 188 {{- define "kube-prometheus-stack.ingress.supportsPathType" -}} 189 {{- or (eq (include "kube-prometheus-stack.ingress.isStable" .) "true") (and (eq (include "kube-prometheus-stack.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" (include "kube-prometheus-stack.kubeVersion" .))) -}} 190 {{- end -}} 191 192 {{/* Get Policy API Version */}} 193 {{- define "kube-prometheus-stack.pdb.apiVersion" -}} 194 {{- if and (.Capabilities.APIVersions.Has "policy/v1") (semverCompare ">= 1.21-0" (include "kube-prometheus-stack.kubeVersion" .)) -}} 195 {{- print "policy/v1" -}} 196 {{- else -}} 197 {{- print "policy/v1beta1" -}} 198 {{- end -}} 199 {{- end -}} 200 201 {{/* Get value based on current Kubernetes version */}} 202 {{- define "kube-prometheus-stack.kubeVersionDefaultValue" -}} 203 {{- $values := index . 0 -}} 204 {{- $kubeVersion := index . 1 -}} 205 {{- $old := index . 2 -}} 206 {{- $new := index . 3 -}} 207 {{- $default := index . 4 -}} 208 {{- if kindIs "invalid" $default -}} 209 {{- if semverCompare $kubeVersion (include "kube-prometheus-stack.kubeVersion" $values) -}} 210 {{- print $new -}} 211 {{- else -}} 212 {{- print $old -}} 213 {{- end -}} 214 {{- else -}} 215 {{- print $default }} 216 {{- end -}} 217 {{- end -}} 218 219 {{/* Get value for kube-controller-manager depending on insecure scraping availability */}} 220 {{- define "kube-prometheus-stack.kubeControllerManager.insecureScrape" -}} 221 {{- $values := index . 0 -}} 222 {{- $insecure := index . 1 -}} 223 {{- $secure := index . 2 -}} 224 {{- $userValue := index . 3 -}} 225 {{- include "kube-prometheus-stack.kubeVersionDefaultValue" (list $values ">= 1.22-0" $insecure $secure $userValue) -}} 226 {{- end -}} 227 228 {{/* Get value for kube-scheduler depending on insecure scraping availability */}} 229 {{- define "kube-prometheus-stack.kubeScheduler.insecureScrape" -}} 230 {{- $values := index . 0 -}} 231 {{- $insecure := index . 1 -}} 232 {{- $secure := index . 2 -}} 233 {{- $userValue := index . 3 -}} 234 {{- include "kube-prometheus-stack.kubeVersionDefaultValue" (list $values ">= 1.23-0" $insecure $secure $userValue) -}} 235 {{- end -}} 236 237 {{/* Sets default scrape limits for servicemonitor */}} 238 {{- define "servicemonitor.scrapeLimits" -}} 239 {{- with .sampleLimit }} 240 sampleLimit: {{ . }} 241 {{- end }} 242 {{- with .targetLimit }} 243 targetLimit: {{ . }} 244 {{- end }} 245 {{- with .labelLimit }} 246 labelLimit: {{ . }} 247 {{- end }} 248 {{- with .labelNameLengthLimit }} 249 labelNameLengthLimit: {{ . }} 250 {{- end }} 251 {{- with .labelValueLengthLimit }} 252 labelValueLengthLimit: {{ . }} 253 {{- end }} 254 {{- end -}} 255 256 {{/* 257 To help compatibility with other charts which use global.imagePullSecrets. 258 Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style). 259 global: 260 imagePullSecrets: 261 - name: pullSecret1 262 - name: pullSecret2 263 264 or 265 266 global: 267 imagePullSecrets: 268 - pullSecret1 269 - pullSecret2 270 */}} 271 {{- define "kube-prometheus-stack.imagePullSecrets" -}} 272 {{- range .Values.global.imagePullSecrets }} 273 {{- if eq (typeOf .) "map[string]interface {}" }} 274 - {{ toYaml . | trim }} 275 {{- else }} 276 - name: {{ . }} 277 {{- end }} 278 {{- end }} 279 {{- end -}}