148 lines
5.7 KiB
YAML
148 lines
5.7 KiB
YAML
{{- $root := . -}}
|
|
{{- range $component, $settings := dict "web" .Values.web "worker" .Values.worker }}
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: {{ include "who-need-help.fullname" $root }}-{{ $component }}
|
|
labels:
|
|
{{- include "who-need-help.labels" $root | nindent 4 }}
|
|
app.kubernetes.io/component: {{ $component }}
|
|
spec:
|
|
replicas: {{ $settings.replicas }}
|
|
strategy:
|
|
type: RollingUpdate
|
|
rollingUpdate:
|
|
maxUnavailable: 0
|
|
maxSurge: 1
|
|
selector:
|
|
matchLabels:
|
|
{{- include "who-need-help.selectorLabels" $root | nindent 6 }}
|
|
app.kubernetes.io/component: {{ $component }}
|
|
template:
|
|
metadata:
|
|
{{- with $root.Values.podAnnotations }}
|
|
annotations:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
labels:
|
|
{{- include "who-need-help.selectorLabels" $root | nindent 8 }}
|
|
app.kubernetes.io/component: {{ $component }}
|
|
{{- with $root.Values.podLabels }}
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
spec:
|
|
subdomain: {{ include "who-need-help.fullname" $root }}-headless
|
|
securityContext:
|
|
runAsNonRoot: true
|
|
runAsUser: 65534
|
|
fsGroup: 65534
|
|
initContainers:
|
|
- name: await-migrations
|
|
image: "{{ $root.Values.image.repository }}:{{ $root.Values.image.tag }}"
|
|
imagePullPolicy: {{ $root.Values.image.pullPolicy }}
|
|
command: ["/app/bin/await_migrations"]
|
|
envFrom:
|
|
- secretRef:
|
|
name: {{ include "who-need-help.secretName" $root }}
|
|
env:
|
|
- name: APP_ROLE
|
|
value: migrate
|
|
- name: ERL_ZFLAGS
|
|
value: {{ printf "+Q %d" (int $root.Values.app.erlangPortLimit) | quote }}
|
|
- name: CLUSTER_INTERFACE
|
|
value: {{ $root.Values.app.clusterInterface | quote }}
|
|
- name: EMAIL_DELIVERY_PROVIDER
|
|
value: {{ $root.Values.app.emailDeliveryProvider | quote }}
|
|
- name: UNISENDER_GO_BASE_URL
|
|
value: {{ $root.Values.app.unisenderGoBaseUrl | quote }}
|
|
- name: UNISENDER_GO_SKIP_UNSUBSCRIBE
|
|
value: {{ $root.Values.app.unisenderGoSkipUnsubscribe | quote }}
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
readOnlyRootFilesystem: true
|
|
capabilities:
|
|
drop: ["ALL"]
|
|
containers:
|
|
- name: {{ $component }}
|
|
image: "{{ $root.Values.image.repository }}:{{ $root.Values.image.tag }}"
|
|
imagePullPolicy: {{ $root.Values.image.pullPolicy }}
|
|
{{- if eq $component "worker" }}
|
|
command: ["/app/bin/who_need_help", "start"]
|
|
{{- end }}
|
|
envFrom:
|
|
- secretRef:
|
|
name: {{ include "who-need-help.secretName" $root }}
|
|
env:
|
|
- name: APP_ROLE
|
|
value: {{ $component }}
|
|
- name: ERL_ZFLAGS
|
|
value: {{ printf "+Q %d" (int $root.Values.app.erlangPortLimit) | quote }}
|
|
- name: CLUSTER_INTERFACE
|
|
value: {{ $root.Values.app.clusterInterface | quote }}
|
|
- name: PHX_SERVER
|
|
value: {{ if eq $component "web" }}"true"{{ else }}"false"{{ end }}
|
|
- name: PHX_HOST
|
|
value: {{ $root.Values.app.host | quote }}
|
|
- name: PHX_SCHEME
|
|
value: {{ $root.Values.app.scheme | quote }}
|
|
- name: PHX_URL_PORT
|
|
value: {{ $root.Values.app.urlPort | quote }}
|
|
- name: PORT
|
|
value: {{ $root.Values.app.port | quote }}
|
|
- name: POOL_SIZE
|
|
value: {{ $settings.poolSize | quote }}
|
|
- name: OBAN_MAINTENANCE_CONCURRENCY
|
|
value: {{ $root.Values.worker.maintenanceConcurrency | quote }}
|
|
- name: OBAN_PUSH_CONCURRENCY
|
|
value: {{ $root.Values.worker.pushConcurrency | quote }}
|
|
- name: EMAIL_DELIVERY_PROVIDER
|
|
value: {{ $root.Values.app.emailDeliveryProvider | quote }}
|
|
- name: SMTP_RELAY
|
|
value: {{ $root.Values.app.smtpRelay | quote }}
|
|
- name: SMTP_PORT
|
|
value: {{ $root.Values.app.smtpPort | quote }}
|
|
- name: UNISENDER_GO_BASE_URL
|
|
value: {{ $root.Values.app.unisenderGoBaseUrl | quote }}
|
|
- name: UNISENDER_GO_SKIP_UNSUBSCRIBE
|
|
value: {{ $root.Values.app.unisenderGoSkipUnsubscribe | quote }}
|
|
- name: CODEX_SESSION_ID
|
|
value: {{ $root.Values.app.codexSessionId | quote }}
|
|
- name: RATE_LIMIT_POLICIES_JSON
|
|
value: {{ $root.Values.app.rateLimitPoliciesJson | quote }}
|
|
- name: MAP_TILE_URL
|
|
value: {{ $root.Values.app.mapTileUrl | quote }}
|
|
- name: DNS_CLUSTER_QUERY
|
|
value: "{{ include "who-need-help.fullname" $root }}-headless.{{ $root.Release.Namespace }}.svc.cluster.local"
|
|
ports:
|
|
- name: http
|
|
containerPort: 4000
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /healthz/ready
|
|
port: http
|
|
periodSeconds: 5
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /healthz/live
|
|
port: http
|
|
periodSeconds: 10
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
readOnlyRootFilesystem: true
|
|
capabilities:
|
|
drop: ["ALL"]
|
|
{{- with $root.Values.nodeSelector }}
|
|
nodeSelector:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with $root.Values.affinity }}
|
|
affinity:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with $root.Values.tolerations }}
|
|
tolerations:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
---
|
|
{{- end }}
|