123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- {{- 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 -}}
|