Clawith/helm/clawith/templates/backend.yaml

142 lines
5.2 KiB
YAML

{{- if .Values.backend.enabled }}
{{- if and .Values.backend.persistence.enabled (not .Values.backend.persistence.existingClaim) }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "clawith.fullname" . }}-backend-data
namespace: {{ .Values.global.namespace }}
labels:
{{- include "clawith.labels" . | nindent 4 }}
app.kubernetes.io/component: backend
spec:
accessModes:
- {{ .Values.backend.persistence.accessMode }}
{{- if .Values.backend.persistence.storageClass }}
storageClassName: {{ .Values.backend.persistence.storageClass }}
{{- end }}
resources:
requests:
storage: {{ .Values.backend.persistence.size }}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "clawith.fullname" . }}-backend
namespace: {{ .Values.global.namespace }}
labels:
{{- include "clawith.labels" . | nindent 4 }}
app.kubernetes.io/component: backend
spec:
replicas: {{ .Values.backend.replicaCount }}
selector:
matchLabels:
{{- include "clawith.selectorLabels" . | nindent 6 }}
app.kubernetes.io/component: backend
template:
metadata:
labels:
{{- include "clawith.selectorLabels" . | nindent 8 }}
app.kubernetes.io/component: backend
spec:
containers:
- name: backend
image: "{{ .Values.global.imageRegistry }}/{{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag }}"
imagePullPolicy: {{ .Values.backend.image.pullPolicy }}
{{- if .Values.backend.hostCerts.enabled }}
lifecycle:
postStart:
exec:
command:
- /bin/sh
- '-c'
- >-
for i in `ls {{ .Values.backend.hostCerts.paths.shareCA }}/*.crt
{{ .Values.backend.hostCerts.paths.certs }}/*.crt 2>/dev/null || true`; do
[ -f "$i" ] && echo -e "`cat $i`\n" >> {{ .Values.backend.hostCerts.containerPaths.sslCertFile }}
done
{{- end }}
ports:
- containerPort: {{ .Values.backend.service.port }}
name: http
env:
- name: DATABASE_URL
value: "postgresql+asyncpg://{{ include "clawith.postgresql.username" . }}:{{ include "clawith.postgresql.password" . }}@{{ include "clawith.postgresql.host" . }}:{{ include "clawith.postgresql.port" . }}/{{ include "clawith.postgresql.database" . }}"
- name: REDIS_URL
value: "redis://{{ include "clawith.redis.host" . }}:{{ include "clawith.redis.port" . }}/{{ .Values.redis.external.database | default 0 }}"
- name: AGENT_DATA_DIR
value: {{ .Values.backend.env.agentDataDir | quote }}
- name: AGENT_TEMPLATE_DIR
value: {{ .Values.backend.env.agentTemplateDir | quote }}
{{- if .Values.backend.hostCerts.enabled }}
- name: SSL_CERT_FILE
value: {{ .Values.backend.hostCerts.containerPaths.sslCertFile | quote }}
- name: REQUESTS_CA_BUNDLE
value: {{ .Values.backend.hostCerts.containerPaths.requestsCaBundle | quote }}
- name: CURL_CA_BUNDLE
value: {{ .Values.backend.hostCerts.containerPaths.curlCaBundle | quote }}
{{- end }}
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: {{ include "clawith.secretName" . }}
key: secret-key
- name: JWT_SECRET_KEY
valueFrom:
secretKeyRef:
name: {{ include "clawith.secretName" . }}
key: jwt-secret-key
volumeMounts:
{{- if .Values.backend.persistence.enabled }}
- name: agent-data
mountPath: {{ .Values.backend.env.agentDataDir }}
{{- end }}
{{- if .Values.backend.hostCerts.enabled }}
- mountPath: {{ .Values.backend.hostCerts.paths.certs }}
name: clawithcerts
readOnly: true
- mountPath: {{ .Values.backend.hostCerts.paths.shareCA }}
name: clawithcerts-share
readOnly: true
{{- end }}
{{- with .Values.backend.resources }}
resources:
{{- toYaml . | nindent 10 }}
{{- end }}
volumes:
{{- if .Values.backend.persistence.enabled }}
- name: agent-data
persistentVolumeClaim:
claimName: {{ .Values.backend.persistence.existingClaim | default (printf "%s-backend-data" (include "clawith.fullname" .)) }}
{{- end }}
{{- if .Values.backend.hostCerts.enabled }}
- name: clawithcerts
hostPath:
path: {{ .Values.backend.hostCerts.paths.certs }}
type: Directory
- name: clawithcerts-share
hostPath:
path: {{ .Values.backend.hostCerts.paths.shareCA }}
type: Directory
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ include "clawith.fullname" . }}-backend
namespace: {{ .Values.global.namespace }}
labels:
{{- include "clawith.labels" . | nindent 4 }}
app.kubernetes.io/component: backend
spec:
type: {{ .Values.backend.service.type }}
selector:
{{- include "clawith.selectorLabels" . | nindent 4 }}
app.kubernetes.io/component: backend
ports:
- protocol: TCP
port: {{ .Values.backend.service.port }}
targetPort: http
name: http
{{- end }}