235 lines
8.9 KiB
YAML
235 lines
8.9 KiB
YAML
{{- $storageName := "tmpdata" }}
|
|
{{- $app := .Values }}
|
|
{{- $pvc := $app.persistentVolume }}
|
|
{{- $mode := $app.mode }}
|
|
{{- if and $mode (hasKey $app $mode) }}
|
|
{{- $modeOpts := index $app $mode }}
|
|
{{- $ctx := dict "helm" . }}
|
|
{{- $fullname := include "vm.plain.fullname" $ctx }}
|
|
{{- $ns := include "vm.namespace" $ctx }}
|
|
apiVersion: apps/v1
|
|
kind: {{ title $mode }}
|
|
metadata:
|
|
name: {{ $fullname }}
|
|
namespace: {{ $ns }}
|
|
{{- $_ := set $ctx "extraLabels" $app.extraLabels }}
|
|
labels: {{ include "vm.labels" $ctx | nindent 4 }}
|
|
{{- $_ := unset $ctx "extraLabels" }}
|
|
{{- with .Values.annotations }}
|
|
annotations: {{ toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
spec:
|
|
{{- with $modeOpts.spec }}
|
|
{{- toYaml . | nindent 2 }}
|
|
{{- end }}
|
|
{{- if and (not $app.horizontalPodAutoscaling.enabled) (ne $mode "daemonSet") }}
|
|
replicas: {{ $app.replicaCount }}
|
|
{{- end }}
|
|
{{- if eq $mode "statefulSet" }}
|
|
serviceName: {{ $fullname }}
|
|
{{- end }}
|
|
selector:
|
|
{{- $_ := set $ctx "extraLabels" .Values.selectorLabels }}
|
|
matchLabels: {{ include "vm.selectorLabels" $ctx | nindent 6 }}
|
|
{{- $_ := unset $ctx "extraLabels" }}
|
|
template:
|
|
metadata:
|
|
{{- $_ := set $ctx "extraLabels" $app.podLabels }}
|
|
labels: {{ include "vm.podLabels" $ctx | nindent 8 }}
|
|
{{- $_ := unset $ctx "extraLabels" }}
|
|
{{- $annotations := merge (dict "checksum/config" (include (print .Template.BasePath "/configmap.yaml") . | sha256sum)) (deepCopy $app.podAnnotations) }}
|
|
annotations: {{ toYaml $annotations | nindent 8 }}
|
|
spec:
|
|
{{- with $app.priorityClassName }}
|
|
priorityClassName: {{ . }}
|
|
{{- end }}
|
|
{{- with $app.schedulerName }}
|
|
schedulerName: {{ . }}
|
|
{{- end }}
|
|
{{- if or (.Values.serviceAccount).name (.Values.serviceAccount).create }}
|
|
serviceAccountName: {{ tpl ((.Values.serviceAccount).name | default $fullname) $ctx }}
|
|
automountServiceAccountToken: {{ .Values.serviceAccount.automountToken }}
|
|
{{- end }}
|
|
{{- if $app.podSecurityContext.enabled }}
|
|
securityContext: {{ include "vm.securityContext" (dict "securityContext" $app.podSecurityContext "helm" .) | nindent 8 }}
|
|
{{- end }}
|
|
{{- with $app.initContainers }}
|
|
initContainers: {{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with ($app.imagePullSecrets | default .Values.global.imagePullSecrets) }}
|
|
imagePullSecrets: {{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with $app.hostAliases }}
|
|
hostAliases: {{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
containers:
|
|
- name: vmagent
|
|
{{- if $app.securityContext.enabled }}
|
|
securityContext: {{ include "vm.securityContext" (dict "securityContext" $app.securityContext "helm" .) | nindent 12 }}
|
|
{{- end }}
|
|
{{- $_ := set $ctx "app" $app }}
|
|
image: {{ include "vm.image" $ctx }}
|
|
imagePullPolicy: {{ $app.image.pullPolicy }}
|
|
{{- with $app.containerWorkingDir }}
|
|
workingDir: {{ . }}
|
|
{{- end }}
|
|
args: {{ include "vmagent.args" $ctx | nindent 12 }}
|
|
{{- with $app.envFrom }}
|
|
envFrom: {{ toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
env:
|
|
- name: POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
{{- with $app.env }}
|
|
{{ toYaml .| nindent 12 }}
|
|
{{- end }}
|
|
ports:
|
|
- name: http
|
|
containerPort: {{ include "vm.port.from.flag" (dict "flag" $app.extraArgs.httpListenAddr "default" "8429") }}
|
|
{{- with $app.extraArgs.graphiteListenAddr }}
|
|
- name: graphite-tcp
|
|
protocol: TCP
|
|
containerPort: {{ include "vm.port.from.flag" (dict "flag" .) }}
|
|
- name: graphite-udp
|
|
protocol: UDP
|
|
containerPort: {{ include "vm.port.from.flag" (dict "flag" .) }}
|
|
{{- end }}
|
|
{{- with $app.extraArgs.influxListenAddr }}
|
|
- name: influx-tcp
|
|
protocol: TCP
|
|
containerPort: {{ include "vm.port.from.flag" (dict "flag" .) }}
|
|
- name: influx-udp
|
|
protocol: UDP
|
|
containerPort: {{ include "vm.port.from.flag" (dict "flag" .) }}
|
|
{{- end }}
|
|
{{- with $app.extraArgs.opentsdbHTTPListenAddr }}
|
|
- name: opentsdbhttp
|
|
protocol: TCP
|
|
containerPort: {{ include "vm.port.from.flag" (dict "flag" .) }}
|
|
{{- end }}
|
|
{{- with $app.extraArgs.opentsdbListenAddr }}
|
|
- name: opentsdb-tcp
|
|
protocol: TCP
|
|
containerPort: {{ include "vm.port.from.flag" (dict "flag" .) }}
|
|
- name: opentsdb-udp
|
|
protocol: UDP
|
|
containerPort: {{ include "vm.port.from.flag" (dict "flag" .) }}
|
|
{{- end }}
|
|
{{- with (fromYaml (include "vm.probe" (dict "app" $app "type" "readiness"))) }}
|
|
readinessProbe: {{ toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
{{- with (fromYaml (include "vm.probe" (dict "app" $app "type" "liveness"))) }}
|
|
livenessProbe: {{ toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
{{- with (fromYaml (include "vm.probe" (dict "app" $app "type" "startup"))) }}
|
|
startupProbe: {{ toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
{{- with $app.resources }}
|
|
resources: {{ toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
volumeMounts:
|
|
- name: {{ $storageName }}
|
|
mountPath: /tmpData
|
|
- name: scrape-config
|
|
mountPath: /config/scrape
|
|
{{- with (include "vmagent.rw.config" .) }}
|
|
- name: rw-config
|
|
mountPath: /config/rw
|
|
{{- end }}
|
|
{{- range $app.extraHostPathMounts }}
|
|
- name: {{ .name }}
|
|
mountPath: {{ .mountPath }}
|
|
{{- with .subPath }}
|
|
subPath: {{ . }}
|
|
{{- end }}
|
|
{{- with .readOnly }}
|
|
readOnly: {{ . }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- with $app.extraVolumeMounts }}
|
|
{{- toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
{{- include "vm.license.mount" . | nindent 12 }}
|
|
{{- with $app.extraContainers }}
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with $app.nodeSelector }}
|
|
nodeSelector: {{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with $app.affinity }}
|
|
affinity: {{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with $app.tolerations }}
|
|
tolerations: {{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- if and ($app.hostNetwork) (eq $mode "daemonSet") }}
|
|
hostNetwork: true
|
|
{{- end }}
|
|
{{- with $app.topologySpreadConstraints }}
|
|
topologySpreadConstraints:
|
|
{{- range $constraint := . }}
|
|
- {{ toYaml $constraint | nindent 10 | trim }}
|
|
{{- if not $constraint.labelSelector }}
|
|
labelSelector:
|
|
matchLabels: {{ include "vm.selectorLabels" $ctx | nindent 14 }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
volumes:
|
|
{{- if or (eq $mode "deployment") (not $pvc.enabled) $pvc.existingClaim }}
|
|
- name: {{ $storageName }}
|
|
{{- if or (and (eq $mode "deployment") $pvc.enabled) $pvc.existingClaim }}
|
|
persistentVolumeClaim:
|
|
claimName: {{ tpl ($pvc.existingClaim | default $pvc.name | default $fullname) $ctx }}
|
|
{{- else }}
|
|
emptyDir: {{ toYaml $app.emptyDir | nindent 12 }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- with (include "vmagent.rw.config" .) }}
|
|
- name: rw-config
|
|
configMap:
|
|
name: {{ $fullname -}}-rw
|
|
{{- end }}
|
|
- name: scrape-config
|
|
configMap:
|
|
name: {{ include "vmagent.scrape.config.name" $ctx }}
|
|
{{- range $app.extraHostPathMounts }}
|
|
- name: {{ .name }}
|
|
hostPath:
|
|
path: {{ .hostPath }}
|
|
{{- end }}
|
|
{{- with $app.extraVolumes }}
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- include "vm.license.volume" . | nindent 8 }}
|
|
{{- if and (eq $mode "statefulSet") $pvc.enabled (not $pvc.existingClaim) }}
|
|
volumeClaimTemplates:
|
|
- apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: {{ tpl ($pvc.name | default $storageName) $ctx }}
|
|
{{- with $pvc.extraLabels }}
|
|
labels: {{ toYaml . | nindent 10 }}
|
|
{{- end }}
|
|
{{- with $pvc.annotations }}
|
|
annotations: {{ toYaml . | nindent 10 }}
|
|
{{- end }}
|
|
spec:
|
|
{{- with $pvc.accessModes }}
|
|
accessModes: {{ toYaml . | nindent 10 }}
|
|
{{- end }}
|
|
{{- with $pvc.storageClassName }}
|
|
storageClassName: {{ . }}
|
|
{{- end }}
|
|
{{- with $pvc.matchLabels }}
|
|
selector:
|
|
matchLabels: {{ toYaml . | nindent 12 }}
|
|
{{- end }}
|
|
resources:
|
|
requests:
|
|
storage: {{ $pvc.size }}
|
|
{{- end }}
|
|
{{- end }}
|