From d81c246b3519a7cd7f9add0ac1182e691d2d2c10 Mon Sep 17 00:00:00 2001 From: alexlebens Date: Fri, 19 Apr 2024 04:08:49 -0600 Subject: [PATCH] add kyoo --- charts/kyoo/Chart.yaml | 23 + charts/kyoo/README.md | 17 + charts/kyoo/templates/_helpers.tpl | 155 +++ .../kyoo/templates/deployment-autosync.yaml | 75 ++ charts/kyoo/templates/deployment-back.yaml | 185 ++++ charts/kyoo/templates/deployment-front.yaml | 90 ++ charts/kyoo/templates/deployment-matcher.yaml | 85 ++ .../kyoo/templates/deployment-migrations.yaml | 145 +++ charts/kyoo/templates/deployment-scanner.yaml | 101 ++ .../kyoo/templates/deployment-transcoder.yaml | 114 +++ charts/kyoo/templates/ingress.yaml | 44 + .../templates/persistent-volume-claim.yaml | 54 ++ charts/kyoo/templates/service-account.yaml | 20 + charts/kyoo/templates/service.yaml | 100 ++ charts/kyoo/values.yaml | 891 ++++++++++++++++++ 15 files changed, 2099 insertions(+) create mode 100644 charts/kyoo/Chart.yaml create mode 100644 charts/kyoo/README.md create mode 100644 charts/kyoo/templates/_helpers.tpl create mode 100644 charts/kyoo/templates/deployment-autosync.yaml create mode 100644 charts/kyoo/templates/deployment-back.yaml create mode 100644 charts/kyoo/templates/deployment-front.yaml create mode 100644 charts/kyoo/templates/deployment-matcher.yaml create mode 100644 charts/kyoo/templates/deployment-migrations.yaml create mode 100644 charts/kyoo/templates/deployment-scanner.yaml create mode 100644 charts/kyoo/templates/deployment-transcoder.yaml create mode 100644 charts/kyoo/templates/ingress.yaml create mode 100644 charts/kyoo/templates/persistent-volume-claim.yaml create mode 100644 charts/kyoo/templates/service-account.yaml create mode 100644 charts/kyoo/templates/service.yaml create mode 100644 charts/kyoo/values.yaml diff --git a/charts/kyoo/Chart.yaml b/charts/kyoo/Chart.yaml new file mode 100644 index 0000000..afc7a2e --- /dev/null +++ b/charts/kyoo/Chart.yaml @@ -0,0 +1,23 @@ +apiVersion: v2 +name: kyoo +version: 0.1.0 +description: Chart for Kyoo +keywords: + - media +sources: + - https://github.com/zoriya/Kyoo + - https://github.com/rabbitmq/rabbitmq-server + - https://github.com/bitnami/charts/tree/main/bitnami/rabbitmq + - https://github.com/meilisearch/meilisearch + - https://github.com/meilisearch/meilisearch-kubernetes/tree/main/charts/meilisearch +maintainers: + - name: alexlebens +icon: https://raw.githubusercontent.com/zoriya/Kyoo/master/icons/icon-256x256.png +dependencies: + - name: rabbitmq + version: 14.0.1 + repository: https://charts.bitnami.com/bitnami + - name: meilisearch + version: 0.6.1 + repository: https://meilisearch.github.io/meilisearch-kubernetes +appVersion: v4.4.0 diff --git a/charts/kyoo/README.md b/charts/kyoo/README.md new file mode 100644 index 0000000..f9cac27 --- /dev/null +++ b/charts/kyoo/README.md @@ -0,0 +1,17 @@ +## Introduction + +[Kyoo](https://github.com/zoriya/Kyoo) + +A portable and vast media library solution. + +This chart bootstraps a [Kyoo](https://github.com/zoriya/Kyoo) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + + +## Prerequisites + +- Kubernetes +- Helm + +## Parameters + +See the [values files](values.yaml). diff --git a/charts/kyoo/templates/_helpers.tpl b/charts/kyoo/templates/_helpers.tpl new file mode 100644 index 0000000..f98d42e --- /dev/null +++ b/charts/kyoo/templates/_helpers.tpl @@ -0,0 +1,155 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "kyoo.name" -}} + {{- default .Chart.Name .Values.global.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "kyoo.fullname" -}} + {{- if .Values.global.fullnameOverride -}} + {{- .Values.global.fullnameOverride | trunc 63 | trimSuffix "-" -}} + {{- else -}} + {{- $name := default .Chart.Name .Values.global.nameOverride -}} + {{- if contains $name .Release.Name -}} + {{- .Release.Name | trunc 63 | trimSuffix "-" -}} + {{- else -}} + {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label +*/}} +{{- define "kyoo.chart" -}} + {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common labels +*/}} +{{- define "kyoo.labels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }} +helm.sh/chart: {{ template "kyoo.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} + +{{/* +Common labels for specific components +*/}} +{{- define "kyoo.autosync.labels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-autosync +helm.sh/chart: {{ template "kyoo.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} +{{- define "kyoo.back.labels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-back +helm.sh/chart: {{ template "kyoo.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} +{{- define "kyoo.front.labels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-front +helm.sh/chart: {{ template "kyoo.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} +{{- define "kyoo.matcher.labels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-matcher +helm.sh/chart: {{ template "kyoo.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} +{{- define "kyoo.migrations.labels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-migrations +helm.sh/chart: {{ template "kyoo.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} +{{- define "kyoo.scanner.labels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-scanner +helm.sh/chart: {{ template "kyoo.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} +{{- define "kyoo.transcoder.labels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-transcoder +helm.sh/chart: {{ template "kyoo.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} + +{{/* +Labels to use on deploy.spec.selector.matchLabels and svc.spec.selector +*/}} +{{- define "kyoo.matchLabels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} +{{- define "kyoo.autosync.matchLabels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-autosync +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} +{{- define "kyoo.back.matchLabels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-back +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} +{{- define "kyoo.front.matchLabels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-front +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} +{{- define "kyoo.matcher.matchLabels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-matcher +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} +{{- define "kyoo.migrations.matchLabels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-migrations +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} +{{- define "kyoo.scanner.matchLabels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-scanner +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} +{{- define "kyoo.transcoder.matchLabels" -}} +app.kubernetes.io/name: {{ template "kyoo.name" . }}-transcoder +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "kyoo.serviceAccountName" -}} + {{- if .Values.serviceAccount.create -}} + {{ default (include "kyoo.fullname" .) .Values.serviceAccount.name }} + {{- else -}} + {{ default "default" .Values.serviceAccount.name }} + {{- end -}} +{{- end -}} + +{{/* +Create the name of the back persistent volume +*/}} +{{- define "kyoo.backVolumeName" -}} + {{- if .Values.persistence.back.existingClaim -}} + {{ .Values.persistence.back.existingClaim }} + {{- else -}} + {{ printf "%s-back" (include "kyoo.fullname" .) | trunc 63 | trimSuffix "-" }} + {{- end -}} +{{- end -}} + +{{/* +Create the name of the metadata persistent volume +*/}} +{{- define "kyoo.metadataVolumeName" -}} + {{- if .Values.persistence.metadata.existingClaim -}} + {{ .Values.persistence.metadata.existingClaim }} + {{- else -}} + {{ printf "%s-metadata" (include "kyoo.fullname" .) | trunc 63 | trimSuffix "-" }} + {{- end -}} +{{- end -}} diff --git a/charts/kyoo/templates/deployment-autosync.yaml b/charts/kyoo/templates/deployment-autosync.yaml new file mode 100644 index 0000000..bc23dc5 --- /dev/null +++ b/charts/kyoo/templates/deployment-autosync.yaml @@ -0,0 +1,75 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kyoo.fullname" . }}-autosync + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.autosync.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + revisionHistoryLimit: 3 + replicas: {{ .Values.autosync.replicas }} + strategy: + type: Recreate + selector: + matchLabels: + {{- include "kyoo.autosync.matchLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "kyoo.autosync.labels" . | nindent 8 }} + app.kubernetes.io/component: {{ template "kyoo.name" . }}-autosync + annotations: + {{- with .Values.autosync.podAnnotations }} + {{ toYaml . | nindent 8 }} + {{- end }} + spec: + affinity: + {{- with .Values.autosync.affinity }} + {{ toYaml . | nindent 8 }} + {{- end }} + nodeSelector: + {{- with .Values.autosync.nodeSelector }} + {{ toYaml . | nindent 8 }} + {{- end }} + tolerations: + {{- with .Values.autosync.tolerations }} + {{ toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ template "kyoo.serviceAccountName" . }} + securityContext: + {{- with .Values.autosync.securityContext }} + {{ toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ template "kyoo.fullname" . }}-autosync + image: "{{ .Values.autosync.image.repository }}:{{ .Values.autosync.image.tag }}" + imagePullPolicy: {{ .Values.autosync.image.pullPolicy }} + resources: + {{ toYaml .Values.autosync.resources | nindent 12 }} + env: + - name: RABBITMQ_HOST + value: {{ template "kyoo.fullname" . }}-rabbitmq + - name: RABBITMQ_DEFAULT_USER + value: "{{ .Values.rabbitmq.auth.username }}" + - name: RABBITMQ_DEFAULT_PASS + valueFrom: + secretKeyRef: + name: "{{ .Values.rabbitmq.auth.existingPasswordSecret }}" + key: "{{ .Values.rabbitmq.auth.existingSecretPasswordKey }}" + {{ if .Values.config.secretAPIKey.existingSimklSecretKey }} + - name: OIDC_SIMKL_CLIENTID + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAPIKey.existingSecretName }}" + key: "{{ .Values.config.secretAPIKey.existingSimklSecretKey }}" + {{ end }} + {{- with .Values.autosync.extraVars }} + {{- toYaml . | nindent 12 }} + {{- end }} diff --git a/charts/kyoo/templates/deployment-back.yaml b/charts/kyoo/templates/deployment-back.yaml new file mode 100644 index 0000000..b7cb1ad --- /dev/null +++ b/charts/kyoo/templates/deployment-back.yaml @@ -0,0 +1,185 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kyoo.fullname" . }}-back + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.back.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + revisionHistoryLimit: 3 + replicas: {{ .Values.back.replicas }} + strategy: + type: Recreate + selector: + matchLabels: + {{- include "kyoo.back.matchLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "kyoo.back.labels" . | nindent 8 }} + app.kubernetes.io/component: {{ template "kyoo.name" . }}-back + annotations: + {{- with .Values.back.podAnnotations }} + {{ toYaml . | nindent 8 }} + {{- end }} + spec: + affinity: + {{- with .Values.back.affinity }} + {{ toYaml . | nindent 8 }} + {{- end }} + nodeSelector: + {{- with .Values.back.nodeSelector }} + {{ toYaml . | nindent 8 }} + {{- end }} + tolerations: + {{- with .Values.back.tolerations }} + {{ toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ template "kyoo.serviceAccountName" . }} + securityContext: + {{- with .Values.back.securityContext }} + {{ toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ template "kyoo.fullname" . }}-back + image: "{{ .Values.back.image.repository }}:{{ .Values.back.image.tag }}" + imagePullPolicy: {{ .Values.back.image.pullPolicy }} + resources: + {{ toYaml .Values.back.resources | nindent 12 }} + ports: + - name: kyoo-back + containerPort: {{ .Values.back.service.port }} + protocol: TCP + volumeMounts: + - name: kyoo-back + mountPath: /kyoo + env: + {{- with .Values.back.extraVars }} + {{- toYaml . | nindent 12 }} + {{- end }} + + - name: REQUIRE_ACCOUNT_VERIFICATION + value: "{{ .Values.config.requireAccountVerification }}" + - name: UNLOGGED_PERMISSIONS + value: "{{ .Values.config.unloggedPermissions }}" + - name: DEFAULT_PERMISSIONS + value: "{{ .Values.config.defaultPermissions }}" + - name: AUTHENTICATION_SECRET + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAuthenticationKey.existingSecretName }}" + key: "{{ .Values.config.secretAuthenticationKey.existingSecretKey }}" + - name: KYOO_APIKEYS + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAPIKey.existingSecretName }}" + key: "{{ .Values.config.secretAPIKey.existingKyooSecretKey }}" + - name: PUBLIC_URL + value: "{{ .Values.config.publicUrl }}" + - name: POSTGRES_USER + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.usernameKey }}" + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.passwordKey }}" + - name: POSTGRES_DB + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.databaseNameKey }}" + - name: POSTGRES_SERVER + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.hostKey }}" + - name: POSTGRES_PORT + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.portKey }}" + + {{ if .Values.config.oidc.enabled }} + - name: OIDC_SERVICE_NAME + value: "{{ .Values.config.oidc.name }}" + - name: OIDC_SERVICE_LOGO + value: "{{ .Values.config.oidc.logo }}" + - name: OIDC_SERVICE_AUTHORIZATION + value: "{{ .Values.config.oidc.authorization }}" + - name: OIDC_SERVICE_TOKEN + value: "{{ .Values.config.oidc.token }}" + - name: OIDC_SERVICE_PROFILE + value: "{{ .Values.config.oidc.profile }}" + - name: OIDC_SERVICE_SCOPE + value: "{{ .Values.config.oidc.scope }}" + - name: OIDC_CLIENT_ID + valueFrom: + secretKeyRef: + name: "{{ .Values.oidc.existingSecretName }}" + key: "{{ .Values.oidc.clientIdKey }}" + - name: OIDC_CLIENT_SECRET + valueFrom: + secretKeyRef: + name: "{{ .Values.oidc.existingSecretName }}" + key: "{{ .Values.oidc.clientSecretKey }}" + {{ end }} + + - name: MEILI_HOST + value: http://{{ template "kyoo.fullname" . }}-meilisearch.{{ .Release.Namespace }}:{{ .Values.meilisearch.service.port }} + - name: MEILI_MASTER_KEY + valueFrom: + secretKeyRef: + name: "{{ .Values.meilisearch.auth.existingMasterKeySecret }}" + key: MEILI_MASTER_KEY + - name: RABBITMQ_HOST + value: {{ template "kyoo.fullname" . }}-rabbitmq + - name: RABBITMQ_DEFAULT_USER + value: "{{ .Values.rabbitmq.auth.username }}" + - name: RABBITMQ_DEFAULT_PASS + valueFrom: + secretKeyRef: + name: "{{ .Values.rabbitmq.auth.existingPasswordSecret }}" + key: "{{ .Values.rabbitmq.auth.existingSecretPasswordKey }}" + + {{- if .Values.back.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.back.livenessProbe.path }} + port: {{ .Values.back.service.port }} + initialDelaySeconds: {{ .Values.back.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.back.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.back.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.back.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.back.livenessProbe.failureThreshold }} + {{- end }} + + {{- if .Values.back.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.back.livenessProbe.path }} + port: {{ .Values.back.service.port }} + initialDelaySeconds: {{ .Values.back.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.back.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.back.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.back.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.back.readinessProbe.failureThreshold }} + {{- end }} + + volumes: + - name: kyoo-back + {{- if .Values.persistence.back.enabled }} + persistentVolumeClaim: + claimName: {{ include "kyoo.backVolumeName" . }} + {{- else }} + emptyDir: {} + {{- end }} diff --git a/charts/kyoo/templates/deployment-front.yaml b/charts/kyoo/templates/deployment-front.yaml new file mode 100644 index 0000000..d3b7456 --- /dev/null +++ b/charts/kyoo/templates/deployment-front.yaml @@ -0,0 +1,90 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kyoo.fullname" . }}-front + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.front.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + revisionHistoryLimit: 3 + replicas: {{ .Values.front.replicas }} + strategy: + type: Recreate + selector: + matchLabels: + {{- include "kyoo.front.matchLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "kyoo.front.labels" . | nindent 8 }} + app.kubernetes.io/component: {{ template "kyoo.name" . }}-front + annotations: + {{- with .Values.front.podAnnotations }} + {{ toYaml . | nindent 8 }} + {{- end }} + spec: + affinity: + {{- with .Values.front.affinity }} + {{ toYaml . | nindent 8 }} + {{- end }} + nodeSelector: + {{- with .Values.front.nodeSelector }} + {{ toYaml . | nindent 8 }} + {{- end }} + tolerations: + {{- with .Values.front.tolerations }} + {{ toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ template "kyoo.serviceAccountName" . }} + securityContext: + {{- with .Values.front.securityContext }} + {{ toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ template "kyoo.fullname" . }}-front + image: "{{ .Values.front.image.repository }}:{{ .Values.front.image.tag }}" + imagePullPolicy: {{ .Values.front.image.pullPolicy }} + resources: + {{ toYaml .Values.front.resources | nindent 12 }} + ports: + - name: kyoo-front + containerPort: {{ .Values.front.service.port }} + protocol: TCP + env: + {{- with .Values.back.extraVars }} + {{- toYaml . | nindent 12 }} + {{- end }} + + - name: KYOO_URL + value: http://{{ template "kyoo.fullname" . }}-back.{{ .Release.Namespace }}:{{ .Values.back.service.port }} + + {{- if .Values.front.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.front.livenessProbe.path }} + port: {{ .Values.front.service.port }} + initialDelaySeconds: {{ .Values.front.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.front.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.front.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.front.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.front.livenessProbe.failureThreshold }} + {{- end }} + + {{- if .Values.front.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.front.livenessProbe.path }} + port: {{ .Values.front.service.port }} + initialDelaySeconds: {{ .Values.front.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.front.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.front.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.front.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.front.readinessProbe.failureThreshold }} + {{- end }} diff --git a/charts/kyoo/templates/deployment-matcher.yaml b/charts/kyoo/templates/deployment-matcher.yaml new file mode 100644 index 0000000..cc34573 --- /dev/null +++ b/charts/kyoo/templates/deployment-matcher.yaml @@ -0,0 +1,85 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kyoo.fullname" . }}-matcher + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.matcher.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + revisionHistoryLimit: 3 + replicas: {{ .Values.matcher.replicas }} + strategy: + type: Recreate + selector: + matchLabels: + {{- include "kyoo.matcher.matchLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "kyoo.matcher.labels" . | nindent 8 }} + app.kubernetes.io/component: {{ template "kyoo.name" . }}-matcher + annotations: + {{- with .Values.matcher.podAnnotations }} + {{ toYaml . | nindent 8 }} + {{- end }} + spec: + affinity: + {{- with .Values.matcher.affinity }} + {{ toYaml . | nindent 8 }} + {{- end }} + nodeSelector: + {{- with .Values.matcher.nodeSelector }} + {{ toYaml . | nindent 8 }} + {{- end }} + tolerations: + {{- with .Values.matcher.tolerations }} + {{ toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ template "kyoo.serviceAccountName" . }} + securityContext: + {{- with .Values.matcher.securityContext }} + {{ toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ template "kyoo.fullname" . }}-matcher + image: "{{ .Values.matcher.image.repository }}:{{ .Values.matcher.image.tag }}" + imagePullPolicy: {{ .Values.matcher.image.pullPolicy }} + resources: + {{ toYaml .Values.matcher.resources | nindent 12 }} + command: + - matcher + env: + {{- with .Values.back.extraVars }} + {{- toYaml . | nindent 12 }} + {{- end }} + + - name: KYOO_URL + value: http://{{ template "kyoo.fullname" . }}-back.{{ .Release.Namespace }}:{{ .Values.back.service.port }} + - name: KYOO_APIKEYS + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAPIKey.existingSecretName }}" + key: "{{ .Values.config.secretAPIKey.existingKyooSecretKey }}" + - name: THEMOVIEDB_APIKEY + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAPIKey.existingSecretName }}" + key: "{{ .Values.config.secretAPIKey.existingTMDBSecretKey }}" + - name: LIBRARY_LANGUAGES + value: "{{ .Values.config.libraryLanguages }}" + - name: RABBITMQ_HOST + value: {{ template "kyoo.fullname" . }}-rabbitmq + - name: RABBITMQ_DEFAULT_USER + value: "{{ .Values.rabbitmq.auth.username }}" + - name: RABBITMQ_DEFAULT_PASS + valueFrom: + secretKeyRef: + name: "{{ .Values.rabbitmq.auth.existingPasswordSecret }}" + key: "{{ .Values.rabbitmq.auth.existingSecretPasswordKey }}" diff --git a/charts/kyoo/templates/deployment-migrations.yaml b/charts/kyoo/templates/deployment-migrations.yaml new file mode 100644 index 0000000..7995559 --- /dev/null +++ b/charts/kyoo/templates/deployment-migrations.yaml @@ -0,0 +1,145 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kyoo.fullname" . }}-migrations + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.migrations.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + revisionHistoryLimit: 3 + replicas: {{ .Values.migrations.replicas }} + strategy: + type: Recreate + selector: + matchLabels: + {{- include "kyoo.migrations.matchLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "kyoo.migrations.labels" . | nindent 8 }} + app.kubernetes.io/component: {{ template "kyoo.name" . }}-migrations + annotations: + {{- with .Values.migrations.podAnnotations }} + {{ toYaml . | nindent 8 }} + {{- end }} + spec: + affinity: + {{- with .Values.migrations.affinity }} + {{ toYaml . | nindent 8 }} + {{- end }} + nodeSelector: + {{- with .Values.migrations.nodeSelector }} + {{ toYaml . | nindent 8 }} + {{- end }} + tolerations: + {{- with .Values.migrations.tolerations }} + {{ toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ template "kyoo.serviceAccountName" . }} + securityContext: + {{- with .Values.migrations.securityContext }} + {{ toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ template "kyoo.fullname" . }}-migrations + image: "{{ .Values.migrations.image.repository }}:{{ .Values.migrations.image.tag }}" + imagePullPolicy: {{ .Values.migrations.image.pullPolicy }} + resources: + {{ toYaml .Values.migrations.resources | nindent 12 }} + env: + {{- with .Values.back.extraVars }} + {{- toYaml . | nindent 12 }} + {{- end }} + + - name: REQUIRE_ACCOUNT_VERIFICATION + value: "{{ .Values.config.requireAccountVerification }}" + - name: UNLOGGED_PERMISSIONS + value: "{{ .Values.config.unloggedPermissions }}" + - name: DEFAULT_PERMISSIONS + value: "{{ .Values.config.defaultPermissions }}" + - name: AUTHENTICATION_SECRET + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAuthenticationKey.existingSecretName }}" + key: "{{ .Values.config.secretAuthenticationKey.existingSecretKey }}" + - name: KYOO_APIKEYS + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAPIKey.existingSecretName }}" + key: "{{ .Values.config.secretAPIKey.existingKyooSecretKey }}" + - name: PUBLIC_URL + value: "{{ .Values.config.publicUrl }}" + - name: POSTGRES_USER + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.usernameKey }}" + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.passwordKey }}" + - name: POSTGRES_DB + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.databaseNameKey }}" + - name: POSTGRES_SERVER + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.hostKey }}" + - name: POSTGRES_PORT + valueFrom: + secretKeyRef: + name: "{{ .Values.config.postgresql.existingSecretName }}" + key: "{{ .Values.config.postgresql.portKey }}" + + {{ if .Values.config.oidc.enabled }} + - name: OIDC_SERVICE_NAME + value: "{{ .Values.config.oidc.name }}" + - name: OIDC_SERVICE_LOGO + value: "{{ .Values.config.oidc.logo }}" + - name: OIDC_SERVICE_AUTHORIZATION + value: "{{ .Values.config.oidc.authorization }}" + - name: OIDC_SERVICE_TOKEN + value: "{{ .Values.config.oidc.token }}" + - name: OIDC_SERVICE_PROFILE + value: "{{ .Values.config.oidc.profile }}" + - name: OIDC_SERVICE_SCOPE + value: "{{ .Values.config.oidc.scope }}" + - name: OIDC_CLIENT_ID + valueFrom: + secretKeyRef: + name: "{{ .Values.oidc.existingSecretName }}" + key: "{{ .Values.oidc.clientIdKey }}" + - name: OIDC_CLIENT_SECRET + valueFrom: + secretKeyRef: + name: "{{ .Values.oidc.existingSecretName }}" + key: "{{ .Values.oidc.clientSecretKey }}" + {{ end }} + + - name: MEILI_HOST + value: http://{{ template "kyoo.fullname" . }}-meilisearch.{{ .Release.Namespace }}:{{ .Values.meilisearch.service.port }} + - name: MEILI_MASTER_KEY + valueFrom: + secretKeyRef: + name: "{{ .Values.meilisearch.auth.existingMasterKeySecret }}" + key: MEILI_MASTER_KEY + - name: RABBITMQ_HOST + value: {{ template "kyoo.fullname" . }}-rabbitmq + - name: RABBITMQ_DEFAULT_USER + value: "{{ .Values.rabbitmq.auth.username }}" + - name: RABBITMQ_DEFAULT_PASS + valueFrom: + secretKeyRef: + name: "{{ .Values.rabbitmq.auth.existingPasswordSecret }}" + key: "{{ .Values.rabbitmq.auth.existingSecretPasswordKey }}" diff --git a/charts/kyoo/templates/deployment-scanner.yaml b/charts/kyoo/templates/deployment-scanner.yaml new file mode 100644 index 0000000..acc318a --- /dev/null +++ b/charts/kyoo/templates/deployment-scanner.yaml @@ -0,0 +1,101 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kyoo.fullname" . }}-scanner + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.scanner.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + revisionHistoryLimit: 3 + replicas: {{ .Values.scanner.replicas }} + strategy: + type: Recreate + selector: + matchLabels: + {{- include "kyoo.scanner.matchLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "kyoo.scanner.labels" . | nindent 8 }} + app.kubernetes.io/component: {{ template "kyoo.name" . }}-scanner + annotations: + {{- with .Values.scanner.podAnnotations }} + {{ toYaml . | nindent 8 }} + {{- end }} + spec: + affinity: + {{- with .Values.scanner.affinity }} + {{ toYaml . | nindent 8 }} + {{- end }} + nodeSelector: + {{- with .Values.scanner.nodeSelector }} + {{ toYaml . | nindent 8 }} + {{- end }} + tolerations: + {{- with .Values.scanner.tolerations }} + {{ toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ template "kyoo.serviceAccountName" . }} + securityContext: + {{- with .Values.scanner.securityContext }} + {{ toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ template "kyoo.fullname" . }}-scanner + image: "{{ .Values.scanner.image.repository }}:{{ .Values.scanner.image.tag }}" + imagePullPolicy: {{ .Values.scanner.image.pullPolicy }} + resources: + {{ toYaml .Values.scanner.resources | nindent 12 }} + volumeMounts: + - name: kyoo-library + mountPath: "{{ .Values.persistence.library.mountPath }}" + command: + - scanner + env: + {{- with .Values.back.extraVars }} + {{- toYaml . | nindent 12 }} + {{- end }} + + - name: KYOO_URL + value: http://{{ template "kyoo.fullname" . }}-back.{{ .Release.Namespace }}:{{ .Values.back.service.port }} + - name: KYOO_APIKEYS + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAPIKey.existingSecretName }}" + key: "{{ .Values.config.secretAPIKey.existingKyooSecretKey }}" + - name: THEMOVIEDB_APIKEY + valueFrom: + secretKeyRef: + name: "{{ .Values.config.secretAPIKey.existingSecretName }}" + key: "{{ .Values.config.secretAPIKey.existingTMDBSecretKey }}" + - name: LIBRARY_LANGUAGES + value: "{{ .Values.config.libraryLanguages }}" + - name: LIBRARY_IGNORE_PATTERN + value: "{{ .Values.config.libraryIgnorePattern }}" + - name: SCANNER_LIBRARY_ROOT + value: "{{ .Values.persistence.library.mountPath }}" + - name: RABBITMQ_HOST + value: {{ template "kyoo.fullname" . }}-rabbitmq + - name: RABBITMQ_DEFAULT_USER + value: "{{ .Values.rabbitmq.auth.username }}" + - name: RABBITMQ_DEFAULT_PASS + valueFrom: + secretKeyRef: + name: "{{ .Values.rabbitmq.auth.existingPasswordSecret }}" + key: "{{ .Values.rabbitmq.auth.existingSecretPasswordKey }}" + + volumes: + - name: kyoo-library + {{- if .Values.persistence.library.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.library.existingClaim }} + {{- else }} + emptyDir: {} + {{- end }} diff --git a/charts/kyoo/templates/deployment-transcoder.yaml b/charts/kyoo/templates/deployment-transcoder.yaml new file mode 100644 index 0000000..b9d8407 --- /dev/null +++ b/charts/kyoo/templates/deployment-transcoder.yaml @@ -0,0 +1,114 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kyoo.fullname" . }}-transcoder + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.transcoder.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + revisionHistoryLimit: 3 + replicas: {{ .Values.transcoder.replicas }} + strategy: + type: Recreate + selector: + matchLabels: + {{- include "kyoo.transcoder.matchLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "kyoo.transcoder.labels" . | nindent 8 }} + app.kubernetes.io/component: {{ template "kyoo.name" . }}-transcoder + annotations: + {{- with .Values.transcoder.podAnnotations }} + {{ toYaml . | nindent 8 }} + {{- end }} + spec: + affinity: + {{- with .Values.transcoder.affinity }} + {{ toYaml . | nindent 8 }} + {{- end }} + nodeSelector: + {{- with .Values.transcoder.nodeSelector }} + {{ toYaml . | nindent 8 }} + {{- end }} + tolerations: + {{- with .Values.transcoder.tolerations }} + {{ toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ template "kyoo.serviceAccountName" . }} + securityContext: + {{- with .Values.transcoder.securityContext }} + {{ toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ template "kyoo.fullname" . }}-transcoder + image: "{{ .Values.transcoder.image.repository }}:{{ .Values.transcoder.image.tag }}" + imagePullPolicy: {{ .Values.transcoder.image.pullPolicy }} + resources: + {{ toYaml .Values.transcoder.resources | nindent 12 }} + ports: + - name: kyoo-transcoder + containerPort: {{ .Values.transcoder.service.port }} + protocol: TCP + volumeMounts: + - name: kyoo-metadata + mountPath: "{{ .Values.persistence.metadata.mountPath }}" + - name: kyoo-cache + mountPath: "{{ .Values.persistence.cache.mountPath }}" + - name: kyoo-library + mountPath: "{{ .Values.persistence.library.mountPath }}" + env: + {{- with .Values.back.extraVars }} + {{- toYaml . | nindent 12 }} + {{- end }} + + {{- if eq .Values.config.transcoderProfile "vaapi" }} + - name: GOCODER_HWACCEL + value: "vaapi" + - name: GOCODER_VAAPI_RENDERER + value: "{{ .Values.config.transcoderRenderPath }}" + {{- else if eq .Values.config.transcoderProfile "qsv" }} + - name: GOCODER_HWACCEL + value: "qsv" + - name: GOCODER_QSV_RENDERER + value: "{{ .Values.config.transcoderRenderPath }}" + {{- else if eq .Values.config.transcoderProfile "nvidia" }} + - name: GOCODER_HWACCEL + value: "nvidia" + {{- else }} + - name: GOCODER_HWACCEL + value: "disabled" + {{- end }} + + - name: GOCODER_PRESET + value: "{{ .Values.config.transcoderPreset }}" + - name: GOCODER_METADATA_ROOT + value: "{{ .Values.persistence.metadata.mountPath }}" + - name: GOCODER_CACHE_ROOT + value: "{{ .Values.persistence.cache.mountPath }}" + + volumes: + - name: kyoo-metadata + {{- if .Values.persistence.metadata.enabled }} + persistentVolumeClaim: + claimName: {{ include "kyoo.metadataVolumeName" . }} + {{- else }} + emptyDir: {} + {{- end }} + - name: kyoo-cache + emptyDir: + sizeLimit: {{ .Values.persistence.cache.size }} + - name: kyoo-library + {{- if .Values.persistence.library.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.library.existingClaim }} + {{- else }} + emptyDir: {} + {{- end }} diff --git a/charts/kyoo/templates/ingress.yaml b/charts/kyoo/templates/ingress.yaml new file mode 100644 index 0000000..5d7a1af --- /dev/null +++ b/charts/kyoo/templates/ingress.yaml @@ -0,0 +1,44 @@ +{{- if .Values.ingress.enabled }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ template "kyoo.fullname" . }} + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- toYaml .Values.ingress.annotations | nindent 4 }} + labels: + {{- include "kyoo.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.ingress.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + ingressClassName: {{ .Values.ingress.className }} + tls: + - hosts: + - {{ .Values.ingress.host }} + secretName: {{ template "kyoo.fullname" . }}-secret-tls + rules: + - host: {{ .Values.ingress.host }} + http: + paths: + - path: / + backend: + service: + name: "{{ template "kyoo.fullname" . }}-front" + port: + name: kyoo-front + pathType: ImplementationSpecific + - path: /api + backend: + service: + name: "{{ template "kyoo.fullname" . }}-back" + port: + name: kyoo-back + pathType: ImplementationSpecific +{{- end }} diff --git a/charts/kyoo/templates/persistent-volume-claim.yaml b/charts/kyoo/templates/persistent-volume-claim.yaml new file mode 100644 index 0000000..aabfcaf --- /dev/null +++ b/charts/kyoo/templates/persistent-volume-claim.yaml @@ -0,0 +1,54 @@ +{{- if and .Values.persistence.back.enabled (not .Values.persistence.back.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ template "kyoo.backVolumeName" . }} + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if .Values.persistence.back.retain }} + helm.sh/resource-policy: keep + {{- end }} + labels: + {{- include "kyoo.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + storageClassName: {{ .Values.persistence.back.storageClass }} + accessModes: + - {{ .Values.persistence.back.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.back.size }} +{{- end }} + +--- +{{- if and .Values.persistence.metadata.enabled (not .Values.persistence.metadata.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ template "kyoo.metadataVolumeName" . }} + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if .Values.persistence.metadata.retain }} + "helm.sh/resource-policy": keep + {{- end }} + labels: + {{- include "kyoo.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + storageClassName: {{ .Values.persistence.metadata.storageClass }} + accessModes: + - {{ .Values.persistence.metadata.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.metadata.size }} +{{- end }} diff --git a/charts/kyoo/templates/service-account.yaml b/charts/kyoo/templates/service-account.yaml new file mode 100644 index 0000000..f4ccc0f --- /dev/null +++ b/charts/kyoo/templates/service-account.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kyoo.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.serviceAccount.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.serviceAccount.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} diff --git a/charts/kyoo/templates/service.yaml b/charts/kyoo/templates/service.yaml new file mode 100644 index 0000000..2d7d192 --- /dev/null +++ b/charts/kyoo/templates/service.yaml @@ -0,0 +1,100 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kyoo.fullname" . }}-back + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.back.service.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.back.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.back.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.back.service.type }} + ports: + - port: {{ .Values.back.service.port }} + targetPort: kyoo-back + protocol: TCP + name: kyoo-back + selector: + {{- include "kyoo.back.matchLabels" . | nindent 4 }} + {{- with .Values.back.service.extraSelectorLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kyoo.fullname" . }}-front + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.front.service.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.front.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.front.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.front.service.type }} + ports: + - port: {{ .Values.front.service.port }} + targetPort: kyoo-front + protocol: TCP + name: kyoo-front + selector: + {{- include "kyoo.front.matchLabels" . | nindent 4 }} + {{- with .Values.front.service.extraSelectorLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + +--- +apiVersion: v1 +kind: Service +metadata: + name: transcoder + namespace: {{ .Release.Namespace }} + annotations: + {{- with .Values.global.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.transcoder.service.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "kyoo.transcoder.labels" . | nindent 4 }} + {{- with .Values.global.labels }} + {{ toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.transcoder.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.transcoder.service.type }} + ports: + - port: {{ .Values.transcoder.service.port }} + targetPort: kyoo-transcoder + protocol: TCP + name: kyoo-transcoder + selector: + {{- include "kyoo.transcoder.matchLabels" . | nindent 4 }} + {{- with .Values.transcoder.service.extraSelectorLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} diff --git a/charts/kyoo/values.yaml b/charts/kyoo/values.yaml new file mode 100644 index 0000000..7c8d6d5 --- /dev/null +++ b/charts/kyoo/values.yaml @@ -0,0 +1,891 @@ +## Global +## +global: + # -- Set an override for the prefix of the fullname + nameOverride: + + # -- Set the entire name definition + fullnameOverride: + + # -- Set additional global labels. Helm templates can be used. + labels: {} + + # -- Set additional global annotations. Helm templates can be used. + annotations: {} + +## Service Account +## +serviceAccount: + # -- Specifies whether a service account should be created + create: false + + # -- Annotations to add to the service account + annotations: {} + + # -- Labels to add to the service account + labels: {} + + # -- The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +## Config options +## +config: + ## Secret key + ## Specificy the secret name and the key containg a strong secret key + ## + secretAuthenticationKey: + existingSecretName: "" + existingSecretKey: "" + + ## API keys + ## Specificy the secret name and the key containg an API key for that service + ## + secretAPIKey: + existingSecretName: "" + + # -- Kyoo + existingKyooSecretKey: "" + + # -- The Movie Database + existingTMDBSecretKey: "" + + # -- Simkl: https://simkl.docs.apiary.io/# + existingSimklSecretKey: "" + + # Langauges + libraryLanguages: en + + # A pattern (regex) to ignore video files, ie ".*/[dD]ownloads?/.*" + libraryIgnorePattern: "" + + # If this is true, new accounts wont have any permissions before you approve them in your admin dashboard. + requireAccountVerification: true + + # Specify permissions of guest accounts, default is no permissions, + # but you can allow anyone to use your instance without account by doing: + # UNLOGGED_PERMISSIONS=overall.read,overall.play + # You can specify this to allow guests users to see your collection without behing able to play videos for example: + # UNLOGGED_PERMISSIONS=overall.read + unloggedPermissions: "" + + # Specify permissions of new accounts. + defaultPermissions: overall.read,overall.play + + # Hardware transcoding (equivalent of --profile docker compose option). + # cpu (no hardware acceleration) or vaapi or qsv or nvidia + transcoderProfile: cpu + + # Path to the hardware device for the specificied transcoder profile + transcoderRenderPath: /dev/dri/renderD128 + + # the preset used during transcode. faster means worst quality, you can probably use a slower preset with hwaccels + # warning: using vaapi hwaccel disable presets (they are not supported). + transcoderPreset: fast + + # The url you can use to reach your kyoo instance. This is also used during oidc to redirect users to your instance. + publicUrl: "" + + ## OIDC authentication + ## + oidc: + enabled: false + + # Name of the OIDC provider, ie Authentik, Keycloak, Authelia, etc + name: "" + + # URL to the an image of the provider logo + logo: "" + + # Urls to access the provider + authorization: "" + token: "" + profile: "" + + # Scopes space separeted + scope: "openid profile email" + + # Generated from the provider, these are expected to be stored in a secret + existingSecretName: "" + clientIDKey: "" + secretIDKey: "" + + ## Postgresql + ## All configuration is expected to be stored in a secret, reference the secret name and each key for the value + ## + postgresql: + existingSecretName: "" + usernameKey: "" + passwordKey: "" + databaseNameKey: "" + hostKey: "" + portKey: "" + +## Configure the ingress resource that allows you to access the +## kyoo installation. Set up the URL +## ref: http://kubernetes.io/docs/user-guide/ingress/ +## +ingress: + # -- Enables or disables the ingress + enabled: false + + # -- Provide additional annotations which may be required. + annotations: {} + + # -- Provide additional labels which may be required. + labels: {} + + # -- Set the ingressClass that is used for this ingress. + className: "" + + ## Configure the hosts for the ingress + host: chart-example.local + +## Enable persistence using Persistent Volume Claims +## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ +## +persistence: + back: + # -- Enables or disables the persistence item. Defaults to true + enabled: true + + # -- Storage Class for the config volume. + # If set to `-`, dynamic provisioning is disabled. + # If set to something else, the given storageClass is used. + # If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. + storageClass: "" + + # -- If you want to reuse an existing claim, the name of the existing PVC can be passed here. + existingClaim: "" + + # -- AccessMode for the persistent volume. + # Make sure to select an access mode that is supported by your storage provider! + # [[ref]](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes) + accessMode: ReadWriteOnce + + # -- The amount of storage that is requested for the persistent volume. + size: 5Gi + + # -- Set to true to retain the PVC upon `helm uninstall` + retain: false + + metadata: + # -- Enables or disables the persistence item. Defaults to true + enabled: true + + # -- Storage Class for the config volume. + # If set to `-`, dynamic provisioning is disabled. + # If set to something else, the given storageClass is used. + # If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. + storageClass: "" + + # -- If you want to reuse an existing claim, the name of the existing PVC can be passed here. + existingClaim: "" + + # -- AccessMode for the persistent volume. + # Make sure to select an access mode that is supported by your storage provider! + # [[ref]](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes) + accessMode: ReadWriteOnce + + # -- The amount of storage that is requested for the persistent volume. + size: 5Gi + + # -- Set to true to retain the PVC upon `helm uninstall` + retain: false + + # -- Mount path inside container + mountPath: /metadata + + cache: + # -- Transcoder cache will be mounted as an emptyDir, specificy a limit to the cache size + size: 10Gi + + # -- Mount path inside container + mountPath: /cache + + library: + enabled: false + + # -- Provide an existing claim to you media library + existingClaim: "" + + # -- Mount path inside container, used as the root path for the library + mountPath: /video + +## Auto Sync +## +autosync: + ## Kyoo Auto Sync image version + ## ref: https://hub.docker.com/r/zoriya/kyoo_autosync/tags + ## + image: + repository: zoriya/kyoo_autosync + tag: "4.4.0" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + + ## Define the number of pods the deployment will create + ## Do not change unless your persistent volume allows more than one writer, ie NFS + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ + ## + replicas: 1 + + ## Pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + + ## Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## + affinity: {} + + ## Node labels for pod assignment. Evaluated as a template. + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Tolerations for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + + ## Pod Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + ## + securityContext: {} + + ## kyoo containers' resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + 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: 2 + # memory: 1Gi + requests: {} + # cpu: 1 + # memory: 1Gi + + ## Extra environment variables + ## + extraVars: + # - name: EXAMPLE + # value: "example" + +## Back +## +back: + ## Kyoo Back image version + ## ref: https://hub.docker.com/r/zoriya/kyoo_back/tags + ## + image: + repository: zoriya/kyoo_back + tag: "4.4.0" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + + ## Define the number of pods the deployment will create + ## Do not change unless your persistent volume allows more than one writer, ie NFS + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ + ## + replicas: 1 + + ## Pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + + ## Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## + affinity: {} + + ## Node labels for pod assignment. Evaluated as a template. + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Tolerations for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + + ## Pod Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + ## + securityContext: {} + + ## kyoo containers' resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + 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: 2 + # memory: 1Gi + requests: {} + # cpu: 1 + # memory: 1Gi + + ## Configure extra options for liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) + ## + livenessProbe: + enabled: false + path: /health + initialDelaySeconds: 20 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + + readinessProbe: + enabled: false + path: /health + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + + ## Extra environment variables + ## + extraVars: + # - name: EXAMPLE + # value: "example" + + ## Service + ## + service: + # -- Set the service type + type: ClusterIP + + # -- Provide additional annotations which may be required. + annotations: {} + + # -- Provide additional labels which may be required. + labels: {} + + # -- Allow adding additional match labels + extraSelectorLabels: {} + + # -- HTTP port number + port: 5000 + +## Front +## +front: + ## Kyoo Front image version + ## ref: https://hub.docker.com/r/zoriya/kyoo_front/tags + ## + image: + repository: zoriya/kyoo_front + tag: "4.4.0" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + + ## Define the number of pods the deployment will create + ## Do not change unless your persistent volume allows more than one writer, ie NFS + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ + ## + replicas: 1 + + ## Pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + + ## Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## + affinity: {} + + ## Node labels for pod assignment. Evaluated as a template. + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Tolerations for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + + ## Pod Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + ## + securityContext: {} + + ## kyoo containers' resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + 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: 2 + # memory: 1Gi + requests: {} + # cpu: 1 + # memory: 1Gi + + ## Configure extra options for liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) + ## + livenessProbe: + enabled: false + path: / + initialDelaySeconds: 20 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + + readinessProbe: + enabled: false + path: / + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + + ## Extra environment variables + ## + extraVars: + # - name: EXAMPLE + # value: "example" + + ## Service + ## + service: + # -- Set the service type + type: ClusterIP + + # -- Provide additional annotations which may be required. + annotations: {} + + # -- Provide additional labels which may be required. + labels: {} + + # -- Allow adding additional match labels + extraSelectorLabels: {} + + # -- HTTP port number + port: 8901 + +## Matcher +## +matcher: + ## Kyoo Matcher image version + ## ref: https://hub.docker.com/r/zoriya/kyoo_matcher/tags + ## + image: + repository: zoriya/kyoo_scanner + tag: "4.4.0" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + + ## Define the number of pods the deployment will create + ## Do not change unless your persistent volume allows more than one writer, ie NFS + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ + ## + replicas: 1 + + ## Pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + + ## Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## + affinity: {} + + ## Node labels for pod assignment. Evaluated as a template. + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Tolerations for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + + ## Pod Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + ## + securityContext: {} + + ## kyoo containers' resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + 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: 2 + # memory: 1Gi + requests: {} + # cpu: 1 + # memory: 1Gi + + ## Extra environment variables + ## + extraVars: + # - name: EXAMPLE + # value: "example" + +## Migrations +## +migrations: + ## Kyoo Migrations image version + ## ref: https://hub.docker.com/r/zoriya/kyoo_migrations/tags + ## + image: + repository: zoriya/kyoo_migrations + tag: "4.4.0" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + + ## Define the number of pods the deployment will create + ## Do not change unless your persistent volume allows more than one writer, ie NFS + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ + ## + replicas: 1 + + ## Pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + + ## Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## + affinity: {} + + ## Node labels for pod assignment. Evaluated as a template. + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Tolerations for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + + ## Pod Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + ## + securityContext: {} + + ## kyoo containers' resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + 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: 2 + # memory: 1Gi + requests: {} + # cpu: 1 + # memory: 1Gi + + ## Extra environment variables + ## + extraVars: + # - name: EXAMPLE + # value: "example" + +## Scanner +## +scanner: + ## Kyoo Scanner image version + ## ref: https://hub.docker.com/r/zoriya/zoriya/kyoo_scanner/tags + ## + image: + repository: zoriya/zoriya/kyoo_scanner + tag: "4.4.0" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + + ## Define the number of pods the deployment will create + ## Do not change unless your persistent volume allows more than one writer, ie NFS + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ + ## + replicas: 1 + + ## Pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + + ## Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## + affinity: {} + + ## Node labels for pod assignment. Evaluated as a template. + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Tolerations for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + + ## Pod Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + ## + securityContext: {} + + ## kyoo containers' resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + 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: 2 + # memory: 1Gi + requests: {} + # cpu: 1 + # memory: 1Gi + + ## Extra environment variables + ## + extraVars: + # - name: EXAMPLE + # value: "example" + +## Transcoder +## +transcoder: + ## Kyoo Transcoder image version + ## ref: https://hub.docker.com/r/zoriya/kyoo_transcoder/tags + ## + image: + repository: zoriya/kyoo_transcoder + tag: "4.4.0" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + + ## Define the number of pods the deployment will create + ## Do not change unless your persistent volume allows more than one writer, ie NFS + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ + ## + replicas: 1 + + ## Pod annotations + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + + ## Affinity for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## + affinity: {} + + ## Node labels for pod assignment. Evaluated as a template. + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Tolerations for pod assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + + ## Pod Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + ## + securityContext: {} + + ## kyoo containers' resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + 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: 2 + # memory: 1Gi + requests: {} + # cpu: 1 + # memory: 1Gi + + ## Extra environment variables + ## + extraVars: + # - name: EXAMPLE + # value: "example" + + ## Service + ## + service: + # -- Set the service type + type: ClusterIP + + # -- Provide additional annotations which may be required. + annotations: {} + + # -- Provide additional labels which may be required. + labels: {} + + # -- Allow adding additional match labels + extraSelectorLabels: {} + + # -- HTTP port number + port: 7666 + +## Rabbitmq +## https://artifacthub.io/packages/helm/bitnami/rabbitmq?modal=values-schema +## +rabbitmq: + auth: + ## @param auth.username RabbitMQ application username + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#environment-variables + ## + username: kyoo + + ## @param auth.existingPasswordSecret Existing secret with RabbitMQ credentials (existing secret must contain a value for `rabbitmq-password` key or override with setting auth.existingSecretPasswordKey) + ## e.g: + ## existingPasswordSecret: name-of-existing-secret + ## + existingPasswordSecret: "" + existingSecretPasswordKey: "" + + ## @param auth.existingErlangSecret Existing secret with RabbitMQ Erlang cookie (must contain a value for `rabbitmq-erlang-cookie` key or override with auth.existingSecretErlangKey) + ## e.g: + ## existingErlangSecret: name-of-existing-secret + ## + existingErlangSecret: "" + ## @param auth.existingSecretErlangKey [default: rabbitmq-erlang-cookie] Erlang cookie key to be retrieved from existing secret + ## NOTE: ignored unless `auth.existingErlangSecret` parameter is set + ## + existingSecretErlangKey: "" + + ## @param configurationExistingSecret Existing secret with the configuration to use as rabbitmq.conf. + ## Must contain the key "rabbitmq.conf" + ## Takes precedence over `configuration`, so do not use both simultaneously + ## With providing an existingSecret, extraConfiguration and extraConfigurationExistingSecret do not take any effect + ## + configurationExistingSecret: "" + + ## @param extraConfiguration [string] Configuration file content: extra configuration to be appended to RabbitMQ configuration + ## Use this instead of `configuration` to add more configuration + ## Do not use simultaneously with `extraConfigurationExistingSecret` + ## + extraConfiguration: |- + default_vhost = kyoo + default_permissions.configure = .* + default_permissions.read = .* + default_permissions.write = .* + +## Meilisearch +## https://github.com/meilisearch/meilisearch-kubernetes/blob/main/charts/meilisearch/values.yaml +## +meilisearch: + environment: + + # -- Deactivates analytics + MEILI_NO_ANALYTICS: true + + # -- Sets the environment. Either **production** or **development** + MEILI_ENV: production + + # For production deployment, the environment MEILI_MASTER_KEY is required. + # If MEILI_ENV is set to "production" without setting MEILI_MASTER_KEY, this + # chart will automatically create a secure MEILI_MASTER_KEY and push it as a + # secret. Otherwise the below value of MEILI_MASTER_KEY will be used instead. + # MEILI_MASTER_KEY: "" + + auth: + # -- Use an existing Kubernetes secret for the MEILI_MASTER_KEY + existingMasterKeySecret: "" + + service: + # -- Kubernetes Service type + type: ClusterIP + + # -- Kubernetes Service port + port: 7700 + + # -- Additional annotations for service + annotations: {} + + persistence: + enabled: false + + # -- PVC Access Mode + accessMode: ReadWriteOnce + + ## Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # -- PVC Storage Class + storageClass: "-" + + ## Data Persistent Volume existing claim name + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # -- Existing PVC + existingClaim: "" + + # -- PVC Storage Request + size: 10Gi + + resources: {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + serviceMonitor: + enabled: false