From 5841e87a8a211f5f41e0e8cdfffd63ab6ca88a80 Mon Sep 17 00:00:00 2001 From: Benn Simon Date: Fri, 24 Sep 2021 11:39:01 +0300 Subject: [PATCH] Add multimedia pvc (#36) * add pvc for multimedia storage * make selector optional * add doc on multimedia storage * fix variable naming --- charts/opensrp-server-web/Chart.yaml | 2 +- charts/opensrp-server-web/README.md | 30 +++++++++++++++++++ .../templates/deployment.yaml | 15 ++++++++++ charts/opensrp-server-web/templates/pvc.yaml | 21 +++++++++++++ charts/opensrp-server-web/values.yaml | 23 ++++++++++++++ 5 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 charts/opensrp-server-web/templates/pvc.yaml diff --git a/charts/opensrp-server-web/Chart.yaml b/charts/opensrp-server-web/Chart.yaml index 6f7dcb7..f11a73a 100644 --- a/charts/opensrp-server-web/Chart.yaml +++ b/charts/opensrp-server-web/Chart.yaml @@ -18,7 +18,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.0 +version: 0.2.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/charts/opensrp-server-web/README.md b/charts/opensrp-server-web/README.md index 469e540..bc5b286 100644 --- a/charts/opensrp-server-web/README.md +++ b/charts/opensrp-server-web/README.md @@ -317,3 +317,33 @@ The following table lists the configurable parameters of the Opensrp-server-web | `sentry.minimumEventLevel` | | `"error"` | | `sentry.minimumBreadcrumbLevel` | | `"info"` | | `sentry.tags` | | `{}` | +| `extraVolumeMounts` | | `null` | +| `extraVolumes` | | `null` | +| `multimediaPvc.enabled` | | `false` | +| `multimediaPvc.volumeMode` | | `"Filesystem"` | +| `multimediaPvc.storageClassName` | | `null` | +| `multimediaPvc.resources.requests.storage` | | `"2Gi"` | +| `multimediaPvc.accessModes` | | `["ReadWriteOnce"]` | +| `multimediaPvc.selector` | | `{}` | + +## Multimedia Storage +By default, multimedia (patient images, csv import files, e.t.c) collected on the opensrp server are stored on an S3 bucket. The S3 credentials have the following configurations: +````yaml +object_storage: + access_key_id: dummy + secret_access_key: dummy + region: dummy + bucket_name: dummy + bucket_folder_path: dummy +```` +If S3 storage is not available one can volumes instead. The configurations are as follows: +1. Enable PVC mode. + - ````yaml + multimediaPvc: + enabled: true + ```` +2. Set multimedia file manager to FileSystem Manager. + - ````yaml + opensrp: + multimedia_file_manager: FileSystemMultimediaFileManager + ```` diff --git a/charts/opensrp-server-web/templates/deployment.yaml b/charts/opensrp-server-web/templates/deployment.yaml index b823144..7779043 100644 --- a/charts/opensrp-server-web/templates/deployment.yaml +++ b/charts/opensrp-server-web/templates/deployment.yaml @@ -41,6 +41,14 @@ spec: - name: opensrp-server-config-web configMap: name: {{ include "opensrp-server-web.fullname" . }} + {{- if .Values.multimediaPvc.enabled }} + - name: opensrp-server-multimedia-dir + persistentVolumeClaim: + claimName: {{ include "opensrp-server-web.fullname" . }} + {{- end }} + {{- if .Values.extraVolumes }} + {{- toYaml .Values.extraVolumes | nindent 8 -}} + {{- end }} initContainers: - name: {{ .Chart.Name }}-mybatis image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" @@ -69,6 +77,13 @@ spec: - name: opensrp-server-config-web mountPath: /usr/local/tomcat/webapps/opensrp/WEB-INF/web.xml subPath: opensrp.web.xml + {{- if .Values.multimediaPvc.enabled }} + - name: opensrp-server-multimedia-dir + mountPath: /opt/multimedia + {{- end }} + {{- if .Values.extraVolumeMounts }} + {{- toYaml .Values.extraVolumeMounts | nindent 12 }} + {{- end }} ports: - name: http containerPort: 8080 diff --git a/charts/opensrp-server-web/templates/pvc.yaml b/charts/opensrp-server-web/templates/pvc.yaml new file mode 100644 index 0000000..38b617f --- /dev/null +++ b/charts/opensrp-server-web/templates/pvc.yaml @@ -0,0 +1,21 @@ +{{- if .Values.multimediaPvc.enabled -}} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "opensrp-server-web.fullname" . }} + labels: + {{- include "opensrp-server-web.labels" . | nindent 4 }} +spec: + accessModes: + {{- toYaml .Values.multimediaPvc.accessModes | nindent 4 }} + volumeMode: {{ .Values.multimediaPvc.volumeMode }} + resources: + {{- toYaml .Values.multimediaPvc.resources | nindent 4 }} + {{- if .Values.multimediaPvc.storageClassName }} + storageClassName: {{ .Values.multimediaPvc.storageClassName }} + {{- end }} + {{- if .Values.multimediaPvc.selector }} + selector: + {{- toYaml .Values.multimediaPvc.selector | nindent 4 }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/charts/opensrp-server-web/values.yaml b/charts/opensrp-server-web/values.yaml index a946aa2..02bd89d 100644 --- a/charts/opensrp-server-web/values.yaml +++ b/charts/opensrp-server-web/values.yaml @@ -256,3 +256,26 @@ sentry: minimumEventLevel: "error" minimumBreadcrumbLevel: "info" tags: {} + +extraVolumeMounts: + +extraVolumes: + +# PVC for multimedia stored on the server disabled by default. +# To use this enable it and update the multimedia file manager like below +# ... +# opensrp: +# multimedia_file_manager: FileSystemMultimediaFileManager +# ... +# Default multimedia file manager is S3MultimediaFileManager +multimediaPvc: + enabled: false + volumeMode: Filesystem + storageClassName: + resources: + requests: + # update accordingly + storage: 2Gi + accessModes: + - ReadWriteOnce + selector: {}