238 lines
7.5 KiB
Smarty
238 lines
7.5 KiB
Smarty
{{/* vim: set filetype=mustache: */}}
|
|
{{/*
|
|
Expand the name of the chart.
|
|
*/}}
|
|
{{- define "prometheus.name" -}}
|
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Create chart name and version as used by the chart label.
|
|
*/}}
|
|
{{- define "prometheus.chart" -}}
|
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Create labels for prometheus
|
|
*/}}
|
|
{{- define "prometheus.common.matchLabels" -}}
|
|
app.kubernetes.io/name: {{ include "prometheus.name" . }}
|
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Create unified labels for prometheus components
|
|
*/}}
|
|
{{- define "prometheus.common.metaLabels" -}}
|
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
helm.sh/chart: {{ include "prometheus.chart" . }}
|
|
app.kubernetes.io/part-of: {{ include "prometheus.name" . }}
|
|
{{- with .Values.commonMetaLabels}}
|
|
{{ toYaml . }}
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{- define "prometheus.server.labels" -}}
|
|
{{ include "prometheus.server.matchLabels" . }}
|
|
{{ include "prometheus.common.metaLabels" . }}
|
|
{{- end -}}
|
|
|
|
{{- define "prometheus.server.matchLabels" -}}
|
|
app.kubernetes.io/component: {{ .Values.server.name }}
|
|
{{ include "prometheus.common.matchLabels" . }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Create a default fully qualified app name.
|
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
*/}}
|
|
{{- define "prometheus.fullname" -}}
|
|
{{- if .Values.fullnameOverride -}}
|
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
{{- else -}}
|
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
{{- if contains $name .Release.Name -}}
|
|
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
|
{{- else -}}
|
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Create a fully qualified ClusterRole name.
|
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
*/}}
|
|
{{- define "prometheus.clusterRoleName" -}}
|
|
{{- if .Values.server.clusterRoleNameOverride -}}
|
|
{{ .Values.server.clusterRoleNameOverride | trunc 63 | trimSuffix "-" }}
|
|
{{- else -}}
|
|
{{ include "prometheus.server.fullname" . }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Create a fully qualified alertmanager name for communicating and check to ensure that `alertmanager` exists before trying to use it with the user via NOTES.txt
|
|
*/}}
|
|
{{- define "prometheus.alertmanager.fullname" -}}
|
|
{{- if .Subcharts.alertmanager -}}
|
|
{{- template "alertmanager.fullname" .Subcharts.alertmanager -}}
|
|
{{- else -}}
|
|
{{- "alertmanager not found" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Create a fully qualified Prometheus server name.
|
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
*/}}
|
|
{{- define "prometheus.server.fullname" -}}
|
|
{{- if .Values.server.fullnameOverride -}}
|
|
{{- .Values.server.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
|
{{- else -}}
|
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
|
{{- if contains $name .Release.Name -}}
|
|
{{- printf "%s-%s" .Release.Name .Values.server.name | trunc 63 | trimSuffix "-" -}}
|
|
{{- else -}}
|
|
{{- printf "%s-%s-%s" .Release.Name $name .Values.server.name | trunc 63 | trimSuffix "-" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Get KubeVersion removing pre-release information.
|
|
*/}}
|
|
{{- define "prometheus.kubeVersion" -}}
|
|
{{- default .Capabilities.KubeVersion.Version (regexFind "v[0-9]+\\.[0-9]+\\.[0-9]+" .Capabilities.KubeVersion.Version) -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return the appropriate apiVersion for deployment.
|
|
*/}}
|
|
{{- define "prometheus.deployment.apiVersion" -}}
|
|
{{- print "apps/v1" -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return the appropriate apiVersion for networkpolicy.
|
|
*/}}
|
|
{{- define "prometheus.networkPolicy.apiVersion" -}}
|
|
{{- print "networking.k8s.io/v1" -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return the appropriate apiVersion for poddisruptionbudget.
|
|
*/}}
|
|
{{- define "prometheus.podDisruptionBudget.apiVersion" -}}
|
|
{{- if .Capabilities.APIVersions.Has "policy/v1" }}
|
|
{{- print "policy/v1" -}}
|
|
{{- else -}}
|
|
{{- print "policy/v1beta1" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return the appropriate apiVersion for rbac.
|
|
*/}}
|
|
{{- define "rbac.apiVersion" -}}
|
|
{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }}
|
|
{{- print "rbac.authorization.k8s.io/v1" -}}
|
|
{{- else -}}
|
|
{{- print "rbac.authorization.k8s.io/v1beta1" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return the appropriate apiVersion for ingress.
|
|
*/}}
|
|
{{- define "ingress.apiVersion" -}}
|
|
{{- if and (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19.x" (include "prometheus.kubeVersion" .)) -}}
|
|
{{- print "networking.k8s.io/v1" -}}
|
|
{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" -}}
|
|
{{- print "networking.k8s.io/v1beta1" -}}
|
|
{{- else -}}
|
|
{{- print "extensions/v1beta1" -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return if ingress is stable.
|
|
*/}}
|
|
{{- define "ingress.isStable" -}}
|
|
{{- eq (include "ingress.apiVersion" .) "networking.k8s.io/v1" -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return if ingress supports ingressClassName.
|
|
*/}}
|
|
{{- define "ingress.supportsIngressClassName" -}}
|
|
{{- or (eq (include "ingress.isStable" .) "true") (and (eq (include "ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18.x" (include "prometheus.kubeVersion" .))) -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Return if ingress supports pathType.
|
|
*/}}
|
|
{{- define "ingress.supportsPathType" -}}
|
|
{{- or (eq (include "ingress.isStable" .) "true") (and (eq (include "ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18.x" (include "prometheus.kubeVersion" .))) -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Create the name of the service account to use for the server component
|
|
*/}}
|
|
{{- define "prometheus.serviceAccountName.server" -}}
|
|
{{- if .Values.serviceAccounts.server.create -}}
|
|
{{ default (include "prometheus.server.fullname" .) .Values.serviceAccounts.server.name }}
|
|
{{- else -}}
|
|
{{ default "default" .Values.serviceAccounts.server.name }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Define the prometheus.namespace template if set with forceNamespace or .Release.Namespace is set
|
|
*/}}
|
|
{{- define "prometheus.namespace" -}}
|
|
{{- default .Release.Namespace .Values.forceNamespace -}}
|
|
{{- end }}
|
|
|
|
{{/*
|
|
Define template prometheus.namespaces producing a list of namespaces to monitor
|
|
*/}}
|
|
{{- define "prometheus.namespaces" -}}
|
|
{{- $namespaces := list }}
|
|
{{- if and .Values.rbac.create .Values.server.useExistingClusterRoleName }}
|
|
{{- if .Values.server.namespaces -}}
|
|
{{- range $ns := join "," .Values.server.namespaces | split "," }}
|
|
{{- $namespaces = append $namespaces (tpl $ns $) }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- if .Values.server.releaseNamespace -}}
|
|
{{- $namespaces = append $namespaces (include "prometheus.namespace" .) }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{ mustToJson $namespaces }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Define prometheus.server.remoteWrite producing a list of remoteWrite configurations with URL templating
|
|
*/}}
|
|
{{- define "prometheus.server.remoteWrite" -}}
|
|
{{- $remoteWrites := list }}
|
|
{{- range $remoteWrite := .Values.server.remoteWrite }}
|
|
{{- $remoteWrites = tpl $remoteWrite.url $ | set $remoteWrite "url" | append $remoteWrites }}
|
|
{{- end -}}
|
|
{{ toYaml $remoteWrites }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Define prometheus.server.remoteRead producing a list of remoteRead configurations with URL templating
|
|
*/}}
|
|
{{- define "prometheus.server.remoteRead" -}}
|
|
{{- $remoteReads := list }}
|
|
{{- range $remoteRead := .Values.server.remoteRead }}
|
|
{{- $remoteReads = tpl $remoteRead.url $ | set $remoteRead "url" | append $remoteReads }}
|
|
{{- end -}}
|
|
{{ toYaml $remoteReads }}
|
|
{{- end -}}
|
|
|