Files
chart/library/ix-dev/community/webdav/templates/_webdav.tpl
2023-05-15 14:12:32 +03:00

192 lines
5.9 KiB
Smarty

{{- define "webdav.workload" -}}
workload:
webdav:
enabled: true
primary: true
type: Deployment
podSpec:
hostNetwork: {{ .Values.webdavNetwork.hostNetwork }}
securityContext:
fsGroup: {{ .Values.webdavRunAs.group }}
containers:
webdav:
enabled: true
primary: true
imageSelector: image
securityContext:
runAsUser: {{ .Values.webdavRunAs.user }}
runAsGroup: {{ .Values.webdavRunAs.group }}
envList:
{{ with .Values.webdavConfig.additionalEnvs }}
{{ range $env := . }}
- name: {{ $env.name }}
value: {{ $env.value }}
{{ end }}
{{ end }}
{{ $port := .Values.webdavNetwork.httpPort }}
{{ $scheme := "http" }}
{{ if not .Values.webdavNetwork.http }}
{{ $port = .Values.webdavNetwork.httpsPort }}
{{ $scheme = "https" }}
{{ end }}
probes:
liveness:
enabled: true
type: {{ $scheme }}
path: /health
port: {{ $port }}
{{ if eq .Values.webdavConfig.authType "basic" }}
httpHeaders:
Authorization: Basic {{ (printf "%s:%s" .Values.webdavConfig.username .Values.webdavConfig.password) | b64enc }}
{{ end }}
readiness:
enabled: true
type: {{ $scheme }}
path: /health
port: {{ $port }}
{{ if eq .Values.webdavConfig.authType "basic" }}
httpHeaders:
Authorization: Basic {{ (printf "%s:%s" .Values.webdavConfig.username .Values.webdavConfig.password) | b64enc }}
{{ end }}
startup:
enabled: true
type: {{ $scheme }}
path: /health
port: {{ $port }}
{{ if eq .Values.webdavConfig.authType "basic" }}
httpHeaders:
Authorization: Basic {{ (printf "%s:%s" .Values.webdavConfig.username .Values.webdavConfig.password) | b64enc }}
{{ end }}
initContainers:
{{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions"
"UID" .Values.webdavRunAs.user
"GID" .Values.webdavRunAs.group
"mode" "check"
"type" "init") | nindent 8 }}
{{/* Service */}}
service:
webdav:
enabled: true
primary: true
type: NodePort
targetSelector: webdav
ports:
http:
enabled: {{ .Values.webdavNetwork.http }}
primary: true
port: {{ .Values.webdavNetwork.httpPort }}
nodePort: {{ .Values.webdavNetwork.httpPort }}
targetSelector: webdav
https:
enabled: {{ .Values.webdavNetwork.https }}
primary: {{ not .Values.webdavNetwork.http }}
port: {{ .Values.webdavNetwork.httpsPort }}
nodePort: {{ .Values.webdavNetwork.httpsPort }}
targetSelector: webdav
{{/* Persistence */}}
persistence:
httpd-conf:
enabled: true
type: configmap
objectName: config
targetSelector:
webdav:
webdav:
mountPath: /usr/local/apache2/conf/httpd.conf
subPath: httpd.conf
readOnly: true
webdav-conf:
# Mount config only if http is enabled
enabled: {{ .Values.webdavNetwork.http }}
type: configmap
objectName: config
targetSelector:
webdav:
webdav:
mountPath: /usr/local/apache2/conf/Includes/webdav.conf
readOnly: true
subPath: webdav.conf
webdav-ssl-conf:
# Mount config only if https is enabled
enabled: {{ .Values.webdavNetwork.https }}
type: configmap
objectName: config
targetSelector:
webdav:
webdav:
mountPath: /usr/local/apache2/conf/Includes/webdav-ssl.conf
subPath: webdav-ssl.conf
readOnly: true
htauth:
# Mount config only if auth is enabled
enabled: {{ ne .Values.webdavConfig.authType "none" }}
type: secret
objectName: htauth
targetSelector:
webdav:
webdav:
mountPath: /etc/apache2/webdavht{{ .Values.webdavConfig.authType }}
subPath: htauth
readOnly: true
apachelock:
# Stores PID file and DavLockDB file
enabled: true
type: emptyDir
medium: Memory
#TODO: Is this enough?
size: 100Mi
targetSelector:
webdav:
webdav:
mountPath: /usr/local/apache2/var
{{ range $idx, $storage := .Values.webdavStorage.shares }}
{{ printf "webdav-%v" (int $idx) }}:
enabled: {{ $storage.enabled }}
type: hostPath
hostPath: {{ $storage.hostPath }}
targetSelector:
webdav:
webdav:
# This path is used in the Alias directive in the webdav.conf
mountPath: /{{ include "webdav.shares.prefix" $ }}/{{ $storage.name }}
readOnly: {{ $storage.readOnly }}
{{ if $storage.fixPermissions }}
01-permissions:
mountPath: /mnt/directories/{{ $storage.name }}
readOnly: false
{{ end }}
{{ end }}
{{ if .Values.webdavNetwork.certificateID }}
{{/* Mount Certificate */}}
tls-crt:
enabled: true
type: secret
objectName: webdav-cert
defaultMode: "0600"
targetSelector:
webdav:
webdav:
mountPath: {{ include "webdav.path.cert.crt" $ }}
subPath: tls.crt
readOnly: true
tls-key:
enabled: true
type: secret
objectName: webdav-cert
defaultMode: "0600"
targetSelector:
webdav:
webdav:
mountPath: {{ include "webdav.path.cert.key" $ }}
subPath: tls.key
readOnly: true
{{/* Certificate Secret */}}
scaleCertificate:
webdav-cert:
enabled: true
id: {{ .Values.webdavNetwork.certificateID }}
{{ end }}
{{- end -}}