{{/* vim: set filetype=mustache: */}} {{/* Expand the name of the chart. */}} {{- define "prometheus-pushgateway.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Namespace to set on the resources */}} {{- define "prometheus-pushgateway.namespace" -}} {{- if .Values.namespaceOverride -}} {{- .Values.namespaceOverride -}} {{- else -}} {{- .Release.Namespace -}} {{- end -}} {{- 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). If release name contains chart name it will be used as a full name. */}} {{- define "prometheus-pushgateway.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 chart name and version as used by the chart label. */}} {{- define "prometheus-pushgateway.chart" -}} {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Create the name of the service account to use */}} {{- define "prometheus-pushgateway.serviceAccountName" -}} {{- if .Values.serviceAccount.create }} {{- default (include "prometheus-pushgateway.fullname" .) .Values.serviceAccount.name }} {{- else }} {{- default "default" .Values.serviceAccount.name }} {{- end }} {{- end }} {{/* Create default labels */}} {{- define "prometheus-pushgateway.defaultLabels" -}} helm.sh/chart: {{ include "prometheus-pushgateway.chart" . }} {{ include "prometheus-pushgateway.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} app.kubernetes.io/managed-by: {{ .Release.Service }} {{- with .Values.podLabels }} {{ toYaml . }} {{- end }} {{- end }} {{/* Selector labels */}} {{- define "prometheus-pushgateway.selectorLabels" -}} app.kubernetes.io/name: {{ include "prometheus-pushgateway.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} {{/* Return the appropriate apiVersion for networkpolicy. */}} {{- define "prometheus-pushgateway.networkPolicy.apiVersion" -}} {{- if semverCompare ">=1.4-0, <1.7-0" .Capabilities.KubeVersion.GitVersion }} {{- print "extensions/v1beta1" }} {{- else if semverCompare "^1.7-0" .Capabilities.KubeVersion.GitVersion }} {{- print "networking.k8s.io/v1" }} {{- end }} {{- end }} {{/* Define PDB apiVersion */}} {{- define "prometheus-pushgateway.pdb.apiVersion" -}} {{- if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }} {{- print "policy/v1" }} {{- else }} {{- print "policy/v1beta1" }} {{- end }} {{- end }} {{/* Define Ingress apiVersion */}} {{- define "prometheus-pushgateway.ingress.apiVersion" -}} {{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion }} {{- print "networking.k8s.io/v1" }} {{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion }} {{- print "networking.k8s.io/v1beta1" }} {{- else }} {{- print "extensions/v1beta1" }} {{- end }} {{- end }} {{/* Define webConfiguration */}} {{- define "prometheus-pushgateway.webConfiguration" -}} basic_auth_users: {{- range $k, $v := .Values.webConfiguration.basicAuthUsers }} {{ $k }}: {{ htpasswd "" $v | trimPrefix ":"}} {{- end }} {{- end }} {{/* Define Authorization */}} {{- define "prometheus-pushgateway.Authorization" -}} {{- $users := keys .Values.webConfiguration.basicAuthUsers }} {{- $user := first $users }} {{- $password := index .Values.webConfiguration.basicAuthUsers $user }} {{- $user }}:{{ $password }} {{- end }} {{/* Returns pod spec */}} {{- define "prometheus-pushgateway.podSpec" -}} serviceAccountName: {{ include "prometheus-pushgateway.serviceAccountName" . }} automountServiceAccountToken: {{ .Values.automountServiceAccountToken }} {{- with .Values.priorityClassName }} priorityClassName: {{ . | quote }} {{- end }} {{- with .Values.hostAliases }} hostAliases: {{- toYaml . | nindent 2 }} {{- end }} {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 2 }} {{- end }} {{- with .Values.extraInitContainers }} initContainers: {{- toYaml . | nindent 2 }} {{- end }} containers: {{- with .Values.extraContainers }} {{- toYaml . | nindent 2 }} {{- end }} - name: pushgateway image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} {{- with .Values.extraVars }} env: {{- toYaml . | nindent 6 }} {{- end }} {{- if or .Values.extraArgs .Values.webConfiguration }} args: {{- with .Values.extraArgs }} {{- toYaml . | nindent 6 }} {{- end }} {{- if .Values.webConfiguration }} - --web.config.file=/etc/config/web-config.yaml {{- end }} {{- end }} ports: - name: metrics containerPort: 9091 protocol: TCP {{- if .Values.liveness.enabled }} {{- $livenessCommon := omit .Values.liveness.probe "httpGet" }} livenessProbe: {{- with .Values.liveness.probe }} httpGet: path: {{ .httpGet.path }} port: {{ .httpGet.port }} {{- if or .httpGet.httpHeaders $.Values.webConfiguration.basicAuthUsers }} httpHeaders: {{- if $.Values.webConfiguration.basicAuthUsers }} - name: Authorization value: Basic {{ include "prometheus-pushgateway.Authorization" $ | b64enc }} {{- end }} {{- with .httpGet.httpHeaders }} {{- toYaml . | nindent 10 }} {{- end }} {{- end }} {{- toYaml $livenessCommon | nindent 6 }} {{- end }} {{- end }} {{- if .Values.readiness.enabled }} {{- $readinessCommon := omit .Values.readiness.probe "httpGet" }} readinessProbe: {{- with .Values.readiness.probe }} httpGet: path: {{ .httpGet.path }} port: {{ .httpGet.port }} {{- if or .httpGet.httpHeaders $.Values.webConfiguration.basicAuthUsers }} httpHeaders: {{- if $.Values.webConfiguration.basicAuthUsers }} - name: Authorization value: Basic {{ include "prometheus-pushgateway.Authorization" $ | b64enc }} {{- end }} {{- with .httpGet.httpHeaders }} {{- toYaml . | nindent 10 }} {{- end }} {{- end }} {{- toYaml $readinessCommon | nindent 6 }} {{- end }} {{- end }} {{- with .Values.resources }} resources: {{- toYaml . | nindent 6 }} {{- end }} {{- with .Values.containerSecurityContext }} securityContext: {{- toYaml . | nindent 6 }} {{- end }} volumeMounts: - name: storage-volume mountPath: "{{ .Values.persistentVolume.mountPath }}" subPath: "{{ .Values.persistentVolume.subPath }}" {{- if .Values.webConfiguration }} - name: web-config mountPath: "/etc/config" {{- end }} {{- with .Values.extraVolumeMounts }} {{- toYaml . | nindent 6 }} {{- end }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 2 }} {{- end }} {{- with .Values.tolerations }} tolerations: {{- toYaml . | nindent 2 }} {{- end }} {{- if or .Values.podAntiAffinity .Values.affinity }} affinity: {{- end }} {{- with .Values.affinity }} {{- toYaml . | nindent 2 }} {{- end }} {{- if eq .Values.podAntiAffinity "hard" }} podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: {{ .Values.podAntiAffinityTopologyKey }} labelSelector: matchExpressions: - {key: app.kubernetes.io/name, operator: In, values: [{{ include "prometheus-pushgateway.name" . }}]} {{- else if eq .Values.podAntiAffinity "soft" }} podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: topologyKey: {{ .Values.podAntiAffinityTopologyKey }} labelSelector: matchExpressions: - {key: app.kubernetes.io/name, operator: In, values: [{{ include "prometheus-pushgateway.name" . }}]} {{- end }} {{- with .Values.topologySpreadConstraints }} topologySpreadConstraints: {{- toYaml . | nindent 2 }} {{- end }} {{- with .Values.securityContext }} securityContext: {{- toYaml . | nindent 2 }} {{- end }} volumes: {{- $storageVolumeAsPVCTemplate := and .Values.runAsStatefulSet .Values.persistentVolume.enabled -}} {{- if not $storageVolumeAsPVCTemplate }} - name: storage-volume {{- if .Values.persistentVolume.enabled }} persistentVolumeClaim: claimName: {{ if .Values.persistentVolume.existingClaim }}{{ .Values.persistentVolume.existingClaim }}{{- else }}{{ include "prometheus-pushgateway.fullname" . }}{{- end }} {{- else }} emptyDir: {} {{- end }} {{- if .Values.webConfiguration }} - name: web-config secret: secretName: {{ include "prometheus-pushgateway.fullname" . }} {{- end }} {{- end }} {{- if .Values.extraVolumes }} {{- toYaml .Values.extraVolumes | nindent 2 }} {{- else if $storageVolumeAsPVCTemplate }} {{- if .Values.webConfiguration }} - name: web-config secret: secretName: {{ include "prometheus-pushgateway.fullname" . }} {{- else }} [] {{- end }} {{- end }} {{- end }}