|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- {{- if .Values.haproxy.enabled }}
- kind: Deployment
- apiVersion: apps/v1
- metadata:
- name: {{ template "redis-ha.fullname" . }}-haproxy
- namespace: {{ .Release.Namespace }}
- labels:
- {{ include "labels.standard" . | indent 4 }}
- spec:
- strategy:
- type: RollingUpdate
- revisionHistoryLimit: 1
- replicas: {{ .Values.haproxy.replicas }}
- selector:
- matchLabels:
- app: {{ template "redis-ha.name" . }}-haproxy
- release: {{ .Release.Name }}
- template:
- metadata:
- name: {{ template "redis-ha.fullname" . }}-haproxy
- labels:
- app: {{ template "redis-ha.name" . }}-haproxy
- release: {{ .Release.Name }}
- annotations:
- {{- if .Values.haproxy.metrics.enabled }}
- prometheus.io/port: "{{ .Values.haproxy.metrics.port }}"
- prometheus.io/scrape: "true"
- prometheus.io/path: "{{ .Values.haproxy.metrics.scrapePath }}"
- {{- end }}
- checksum/config: {{ print (include "config-haproxy.cfg" .) (include "config-haproxy_init.sh" .) | sha256sum }}
- {{- if .Values.haproxy.annotations }}
- {{ toYaml .Values.haproxy.annotations | indent 8 }}
- {{- end }}
- spec:
- # Needed when using unmodified rbac-setup.yml
- {{ if .Values.haproxy.serviceAccount.create }}
- serviceAccountName: {{ template "redis-ha.serviceAccountName" . }}-haproxy
- {{ end }}
- nodeSelector:
- {{ toYaml .Values.nodeSeletor | indent 8 }}
- tolerations:
- {{ toYaml .Values.tolerations | indent 8 }}
- affinity:
- {{- if .Values.haproxy.affinity }}
- {{- with .Values.haproxy.affinity }}
- {{ tpl . $ | indent 8 }}
- {{- end }}
- {{- else }}
- {{- if .Values.haproxy.additionalAffinities }}
- {{ toYaml .Values.haproxy.additionalAffinities | indent 8 }}
- {{- end }}
- podAntiAffinity:
- {{- if .Values.haproxy.hardAntiAffinity }}
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app: {{ template "redis-ha.name" . }}-haproxy
- release: {{ .Release.Name }}
- topologyKey: kubernetes.io/hostname
- {{- else }}
- preferredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app: {{ template "redis-ha.name" . }}-haproxy
- release: {{ .Release.Name }}
- topologyKey: kubernetes.io/hostname
- {{- end }}
- preferredDuringSchedulingIgnoredDuringExecution:
- - weight: 100
- podAffinityTerm:
- labelSelector:
- matchLabels:
- app: {{ template "redis-ha.name" . }}-haproxy
- release: {{ .Release.Name }}
- topologyKey: failure-domain.beta.kubernetes.io/zone
- {{- end }}
- initContainers:
- - name: config-init
- image: {{ .Values.haproxy.image.repository }}:{{ .Values.haproxy.image.tag }}
- imagePullPolicy: {{ .Values.haproxy.image.pullPolicy }}
- resources:
- {{ toYaml .Values.haproxy.init.resources | indent 10 }}
- command:
- - sh
- args:
- - /readonly/haproxy_init.sh
- {{- if .Values.auth }}
- env:
- - name: AUTH
- valueFrom:
- secretKeyRef:
- {{- if .Values.existingSecret }}
- name: {{ .Values.existingSecret }}
- {{- else }}
- name: {{ template "redis-ha.fullname" . }}
- {{- end }}
- key: {{ .Values.authKey }}
- {{- end }}
- volumeMounts:
- - name: config-volume
- mountPath: /readonly
- readOnly: true
- - name: data
- mountPath: /data
- {{- if .Values.haproxy.imagePullSecrets }}
- imagePullSecrets: {{ toYaml .Values.haproxy.imagePullSecrets | nindent 8 }}
- {{- end }}
- securityContext:
- {{ toYaml .Values.haproxy.securityContext | indent 8 }}
- containers:
- - name: haproxy
- image: {{ .Values.haproxy.image.repository }}:{{ .Values.haproxy.image.tag }}
- imagePullPolicy: {{ .Values.haproxy.image.pullPolicy }}
- livenessProbe:
- httpGet:
- path: /healthz
- port: 8888
- initialDelaySeconds: 5
- periodSeconds: 3
- ports:
- - name: redis
- containerPort: {{ default "6379" .Values.redis.port }}
- {{- if .Values.haproxy.readOnly.enabled }}
- - name: readonlyport
- containerPort: {{ default "6380" .Values.haproxy.readOnly.port }}
- {{- end }}
- {{- if .Values.haproxy.metrics.enabled }}
- - name: metrics-port
- containerPort: {{ default "9101" .Values.haproxy.metrics.port }}
- {{- end }}
- resources:
- {{ toYaml .Values.haproxy.resources | indent 10 }}
- volumeMounts:
- - name: data
- mountPath: /usr/local/etc/haproxy
- - name: shared-socket
- mountPath: /run/haproxy
- {{- if .Values.haproxy.priorityClassName }}
- priorityClassName: {{ .Values.haproxy.priorityClassName }}
- {{- end }}
- volumes:
- - name: config-volume
- configMap:
- name: {{ template "redis-ha.fullname" . }}-configmap
- - name: shared-socket
- emptyDir:
- {{ toYaml .Values.haproxy.emptyDir | indent 10 }}
- - name: data
- emptyDir:
- {{ toYaml .Values.haproxy.emptyDir | indent 10 }}
- {{- end }}
|