From 940962ecbfbdc6497fb887861336ba14ece1f0bc Mon Sep 17 00:00:00 2001 From: Alexander Olofsson Date: Sat, 18 May 2019 10:51:47 +0200 Subject: [PATCH] More work on Funkwhale --- charts/funkwhale/charts/redis-7.1.1.tgz | Bin 0 -> 24501 bytes charts/funkwhale/requirements.lock | 6 ++ charts/funkwhale/requirements.yaml | 4 ++ charts/funkwhale/templates/_helpers.tpl | 8 +++ .../funkwhale/templates/configmap-front.yaml | 2 +- charts/funkwhale/templates/configmap.yaml | 38 +++++----- .../funkwhale/templates/deployment-api.yaml | 6 +- .../templates/deployment-celerybeat.yaml | 2 +- .../templates/deployment-celeryworker.yaml | 28 ++++---- .../funkwhale/templates/deployment-front.yaml | 30 ++++---- charts/funkwhale/templates/ingress.yaml | 8 +-- charts/funkwhale/templates/pvc.yaml | 22 ++++++ charts/funkwhale/templates/secret.yaml | 8 ++- charts/funkwhale/values.yaml | 67 +++++++++++++----- 14 files changed, 150 insertions(+), 79 deletions(-) create mode 100644 charts/funkwhale/charts/redis-7.1.1.tgz create mode 100644 charts/funkwhale/requirements.lock create mode 100644 charts/funkwhale/requirements.yaml create mode 100644 charts/funkwhale/templates/pvc.yaml diff --git a/charts/funkwhale/charts/redis-7.1.1.tgz b/charts/funkwhale/charts/redis-7.1.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2efbd4733bf84a649ddd05dd8c720f7df28f9c93 GIT binary patch literal 24501 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 + {{- end }} diff --git a/charts/funkwhale/templates/deployment-celerybeat.yaml b/charts/funkwhale/templates/deployment-celerybeat.yaml index 880df89..eb6645b 100644 --- a/charts/funkwhale/templates/deployment-celerybeat.yaml +++ b/charts/funkwhale/templates/deployment-celerybeat.yaml @@ -22,7 +22,7 @@ spec: app.kubernetes.io/instance: {{ .Release.Name }} audio.funkwhale/component: celery-beat spec: - initContainers: + containers: - name: celery-beat image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} diff --git a/charts/funkwhale/templates/deployment-celeryworker.yaml b/charts/funkwhale/templates/deployment-celeryworker.yaml index 25de6c5..6704fcf 100644 --- a/charts/funkwhale/templates/deployment-celeryworker.yaml +++ b/charts/funkwhale/templates/deployment-celeryworker.yaml @@ -26,11 +26,11 @@ spec: - name: worker image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} - commands: + command: - sh - -c - | - celery -A funkwhale_api.taskapp worder -l INFO + celery -A funkwhale_api.taskapp worker -l INFO env: - name: C_FORCE_ROOT value: "true" @@ -56,15 +56,15 @@ spec: tolerations: {{- toYaml . | nindent 8 }} {{- end }} - volumes: - - name: data - persistentVolumeClaim: - claimName: {{ include "funkwhale.fullname" . }}-data - - name: config - configMap: - name: {{ include "funkwhale.fullname" . }}-front - {{- range .Values.celery.worker.extraVolumeMounts }} - - name: {{ .name }} - persistentVolumeClaim: - claimName: {{ .existingClaim }} - {{- end }} + volumes: + - name: data + persistentVolumeClaim: + claimName: {{ include "funkwhale.fullname" . }} + - name: config + configMap: + name: {{ include "funkwhale.fullname" . }}-front + {{- range .Values.celery.worker.extraVolumeMounts }} + - name: {{ .name }} + persistentVolumeClaim: + claimName: {{ .existingClaim }} + {{- end }} diff --git a/charts/funkwhale/templates/deployment-front.yaml b/charts/funkwhale/templates/deployment-front.yaml index 727f34f..26474fb 100644 --- a/charts/funkwhale/templates/deployment-front.yaml +++ b/charts/funkwhale/templates/deployment-front.yaml @@ -42,7 +42,7 @@ spec: - name: nginx image: "{{ .Values.front.image.repository }}:{{ .Values.front.image.tag }}" imagePullPolicy: {{ .Values.front.image.pullPolicy }} - commands: + command: - sh - -c - | @@ -86,17 +86,17 @@ spec: tolerations: {{- toYaml . | nindent 8 }} {{- end }} - volumes: - - name: frontend - emptyDir: {} - - name: data - persistentVolumeClaim: - claimName: {{ include "funkwhale.fullname" . }}-data - - name: config - configMap: - name: {{ include "funkwhale.fullname" . }}-front - {{- range .Values.front.extraVolumeMounts }} - - name: {{ .name }} - persistentVolumeClaim: - claimName: {{ .existingClaim }} - {{- end }} + volumes: + - name: frontend + emptyDir: {} + - name: data + persistentVolumeClaim: + claimName: {{ include "funkwhale.fullname" . }} + - name: config + configMap: + name: {{ include "funkwhale.fullname" . }}-front + {{- range .Values.front.extraVolumeMounts }} + - name: {{ .name }} + persistentVolumeClaim: + claimName: {{ .existingClaim }} + {{- end }} diff --git a/charts/funkwhale/templates/ingress.yaml b/charts/funkwhale/templates/ingress.yaml index fac7647..cee5848 100644 --- a/charts/funkwhale/templates/ingress.yaml +++ b/charts/funkwhale/templates/ingress.yaml @@ -25,15 +25,11 @@ spec: {{- end }} {{- end }} rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} + - host: {{ .Values.ingress.host | quote }} http: paths: - {{- range .paths }} - - path: {{ . }} + - path: backend: serviceName: {{ $fullName }}-front servicePort: http - {{- end }} - {{- end }} {{- end }} diff --git a/charts/funkwhale/templates/pvc.yaml b/charts/funkwhale/templates/pvc.yaml new file mode 100644 index 0000000..9b0bf41 --- /dev/null +++ b/charts/funkwhale/templates/pvc.yaml @@ -0,0 +1,22 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "funkwhale.fullname" . }} + labels: + app.kubernetes.io/name: {{ include "funkwhale.name" . }} + helm.sh/chart: {{ include "funkwhale.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} diff --git a/charts/funkwhale/templates/secret.yaml b/charts/funkwhale/templates/secret.yaml index f0e9905..eaab21e 100644 --- a/charts/funkwhale/templates/secret.yaml +++ b/charts/funkwhale/templates/secret.yaml @@ -8,6 +8,10 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} data: - CACHE_URL: {{ .Values.redisUrl | b64enc }} - DATABASE_URL: {{ .Values.dbUrl | b64enc }} + CACHE_URL: {{ include "funkwhale.redisUrl" . | b64enc }} + DATABASE_URL: {{ include "funkwhale.dbUrl" . | b64enc }} DJANGO_SECRET_KEY: {{ .Values.djangoSecret | b64enc }} + +{{- range $key, $val := .Values.extraSecret -}} + {{ $key }}: {{ $val | b64enc }} +{{- end -}} diff --git a/charts/funkwhale/values.yaml b/charts/funkwhale/values.yaml index 6805553..4a07328 100644 --- a/charts/funkwhale/values.yaml +++ b/charts/funkwhale/values.yaml @@ -16,7 +16,8 @@ service: ingress: enabled: false - annotations: {} + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 500m # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" host: chart-example.local @@ -27,19 +28,51 @@ ingress: # hosts: # - chart-example.local -dbUrl: '' -redisUrl: '' +database: + ## Database host + host: + + ## Database port + port: 5432 + + ## Database user + user: funkwhale + + ## Database password + password: + + ## Database name + database: funkwhale + +redis: + cluster: + enabled: false + master: + persistence: + enabled: false + slave: + persistence: + enabled: false + password: funkwhale + redisPort: 6379 + djangoSecret: '' -extraEnv: [] +extraEnv: {} # LDAP_ENABLED: "True" # LDAP_ROOT_DN: dc=example,dc=com # LDAP_SEARCH_FILTER: (|(uid={0})(mail={0})) # LDAP_SERVER_URI: ldaps://ldap.example.com # LDAP_START_TLS: "True" # MEDIA_ROOT: /srv/funkwhale/data/media - # MUSIC_DIRECTORY_PATH: /srv/funkwhale/data/music - # MUSIC_DIRECTORY_SERVE_PATH: /srv/funkwhale/data/music + +extraSecret: {} + # EMAIL_CONFIG: smtp:// + # DEFAULT_FROM_EMAIL: funkwhale@example.com + +persistence: + size: 1Gi + storageClass: "-" s3: enabled: false @@ -48,7 +81,7 @@ s3: accessKey: '' secretKey: '' bucket: funkwhale - # region: us-1 + # region: eu-west-2 # location: /funkwhale # url: http://s3.example.com @@ -113,17 +146,13 @@ front: celery: beat: - resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi + resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 10m + memory: 75Mi nodeSelector: {} @@ -132,7 +161,7 @@ celery: affinity: {} worker: - replicaCount: 1 + replicaCount: 2 # Additional mounts to add to the frontend pod extraVolumeMounts: []