mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
update chart notes & small edits
This commit is contained in:
parent
1b94d783d9
commit
bd89f4ac32
@ -1,26 +1,9 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
name: kyoo
|
name: kyoo
|
||||||
description: A Helm chart for Kubernetes
|
description: Kyoo is an open source media server alternative to Jellyfin and Plex.
|
||||||
|
|
||||||
# A chart can be either an 'application' or a 'library' chart.
|
|
||||||
#
|
|
||||||
# Application charts are a collection of templates that can be packaged into versioned archives
|
|
||||||
# to be deployed.
|
|
||||||
#
|
|
||||||
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
|
||||||
# a dependency of application charts to inject those utilities and functions into the rendering
|
|
||||||
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
|
||||||
type: application
|
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.0.0
|
version: 0.0.0
|
||||||
|
|
||||||
# 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
|
|
||||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
|
||||||
# It is recommended to use it with quotes.
|
|
||||||
appVersion: "0.0.0"
|
appVersion: "0.0.0"
|
||||||
|
|
||||||
icon: https://raw.githubusercontent.com/zoriya/Kyoo/refs/heads/master/icons/icon.svg
|
icon: https://raw.githubusercontent.com/zoriya/Kyoo/refs/heads/master/icons/icon.svg
|
||||||
|
@ -1,18 +1,12 @@
|
|||||||
# Kyoo Helm Chart
|
# Kyoo Helm Chart
|
||||||
Kyoo consists of multiple interconnected workloads, leveraging a variety of technologies including Meilisearch, Postgres, and RabbitMQ. This helm chart is designed to simplify configurations for basic setups while offering advanced customization options. Naming and opinionation aims to follow structures described in [diagrams](../DIAGRAMS.md).
|
Kyoo consists of multiple interconnected workloads, leveraging a variety of technologies including Meilisearch, Postgres, and RabbitMQ. This helm chart is designed to simplify configurations for basic setups while offering advanced customization options. Naming and opinionation aims to follow structures described in [diagrams](../DIAGRAMS.md).
|
||||||
|
|
||||||
## Subchart Support
|
|
||||||
This chart includes subcharts for deploying Meilisearch, PostgreSQL, and RabbitMQ as a demonstration of how these resources can be configured. However, subcharts are frequently updated, and upgrades between versions are **NOT** supported.
|
|
||||||
|
|
||||||
Deploying these resources independently of Kyoo ensures operational independence and long-term maintainability. This approach provides better control over versioning, lifecycle management, and the ability to apply updates or patches without impacting Kyoo's deployment.
|
|
||||||
|
|
||||||
|
|
||||||
# Examples
|
# Examples
|
||||||
## Quickstart
|
## Quickstart
|
||||||
Below provides an example for deploying Kyoo and its dependencies. This is a minimalist setup that is not intended for longterm use. This approach uses a single Postgres instance and initializes mutliple databases.
|
Below provides an example for deploying Kyoo and its dependencies using subcharts. This uses a single Postgres instance and initializes mutliple databases.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
helm upgrade kyoo . --install --values myvalues.yaml
|
helm upgrade kyoo oci://ghcr.io/zoriya/helm-charts/kyoo --install --values myvalues.yaml
|
||||||
```
|
```
|
||||||
`myvaules.yaml` content
|
`myvaules.yaml` content
|
||||||
```yaml
|
```yaml
|
||||||
@ -24,6 +18,12 @@ postgresql:
|
|||||||
enabled: true
|
enabled: true
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
media:
|
||||||
|
volumes:
|
||||||
|
- name: media
|
||||||
|
nfs:
|
||||||
|
server: mynasserver
|
||||||
|
path: /spin0/media
|
||||||
extraObjects:
|
extraObjects:
|
||||||
- apiVersion: v1
|
- apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
@ -31,34 +31,13 @@ extraObjects:
|
|||||||
name: bigsecret
|
name: bigsecret
|
||||||
type: Opaque
|
type: Opaque
|
||||||
stringData:
|
stringData:
|
||||||
#KYOO
|
|
||||||
# The following value should be set to a random sequence of characters.
|
|
||||||
# You MUST change it when installing kyoo (for security)
|
|
||||||
# You can input multiple api keys separated by a ,
|
|
||||||
kyoo_apikeys: yHXWGsjfjE6sy6UxavqmTUYxgCFYek
|
kyoo_apikeys: yHXWGsjfjE6sy6UxavqmTUYxgCFYek
|
||||||
# Keep those empty to use kyoo's default api key. You can also specify a custom API key if you want.
|
|
||||||
# go to https://www.themoviedb.org/settings/api and copy the api key (not the read access token, the api key)
|
|
||||||
tmdb_apikey: ""
|
|
||||||
tvdb_apikey: ""
|
|
||||||
tvdb_pin: ""
|
|
||||||
#RESOURCES
|
|
||||||
# meilisearch does not allow mapping their key in yet.
|
|
||||||
MEILI_MASTER_KEY: barkLike8SuperDucks
|
MEILI_MASTER_KEY: barkLike8SuperDucks
|
||||||
postgres_user: kyoo_all
|
postgres_user: kyoo_all
|
||||||
postgres_password: watchSomething4me
|
postgres_password: watchSomething4me
|
||||||
rabbitmq_user: kyoo_all
|
rabbitmq_user: kyoo_all
|
||||||
rabbitmq_password: youAreAmazing2
|
rabbitmq_password: youAreAmazing2
|
||||||
rabbitmq_cookie: mmmGoodCookie
|
rabbitmq_cookie: mmmGoodCookie
|
||||||
- kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: media
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- "ReadOnlyMany"
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "3Gi"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Common Setup
|
## Common Setup
|
||||||
@ -69,19 +48,24 @@ values.yaml configuration
|
|||||||
global:
|
global:
|
||||||
meilisearch:
|
meilisearch:
|
||||||
kyoo_back:
|
kyoo_back:
|
||||||
host: kyoo-meilisearch.kyoo.svc.cluster.local
|
host: meilisearch
|
||||||
postgres:
|
postgres:
|
||||||
# postgres instance information to connect to back's database
|
|
||||||
kyoo_back:
|
kyoo_back:
|
||||||
host: cluster01.postgres.svc.cluster.local
|
host: postgres
|
||||||
# postgres instance information to connect to transcoder's database
|
|
||||||
kyoo_transcoder:
|
kyoo_transcoder:
|
||||||
host: cluster01.postgres.svc.cluster.local
|
host: postgres
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
host: cluster01.rabbitmq.svc.cluster.local
|
host: rabbitmq
|
||||||
|
# specify hardware resources
|
||||||
|
transcoder:
|
||||||
|
kyoo_transcoder:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
nvidia.com/gpu: 1
|
||||||
kyoo:
|
kyoo:
|
||||||
address: https://kyoo.mydomain.com
|
address: https://kyoo.mydomain.com
|
||||||
# leverage NFS for media
|
# specify hardware acceleration profile (valid values: disabled, vaapi, qsv, nvidia)
|
||||||
|
transcoderAcceleration: nvidia
|
||||||
media:
|
media:
|
||||||
volumes:
|
volumes:
|
||||||
- name: media
|
- name: media
|
||||||
@ -109,9 +93,9 @@ stringData:
|
|||||||
rabbitmq_password: youAreAmazing2
|
rabbitmq_password: youAreAmazing2
|
||||||
```
|
```
|
||||||
|
|
||||||
# Recomendations
|
# Additional Notes
|
||||||
## Postgres
|
## Postgres
|
||||||
Kyoo consists of multiple microservices. Best practice is for each microservice to use its own database. Kyoo workloads support best practices or sharing a single postgres database. Please see the `POSTGRES_SCHEMA` setting for additional information. Strongly recomended to use a Kubernetes operator for managing Postgres.
|
Kyoo consists of multiple microservices. Best practice is for each microservice to use its own database. Kyoo workloads support best practices or sharing a single postgres database. Please see the `POSTGRES_SCHEMA` setting for additional information. Strongly recomended to use a Kubernetes operator for managing Postgres.
|
||||||
|
|
||||||
## Media
|
## Subchart Support
|
||||||
Media is condiered an read-only external resource for Kyoo. Media content tends to consume a large amount of space and Kubernetes storage interfaces tend to replicate across nodes. Consider hosting the data outside of Kubernetes or assigning one node to handle storage.
|
Subcharts are updated frequently and subject to changes. This chart includes subcharts for deploying Meilisearch, PostgreSQL, and RabbitMQ. Please consider hosting those independently of Kyoo to better handle versioning and lifecycle management.
|
@ -65,16 +65,19 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
key: {{ .Values.contentdatabase.tmdb.apikeyKey }}
|
key: {{ .Values.contentdatabase.tmdb.apikeyKey }}
|
||||||
name: {{ .Values.contentdatabase.tmdb.existingSecret }}
|
name: {{ .Values.contentdatabase.tmdb.existingSecret }}
|
||||||
|
optional: true
|
||||||
- name: TVDB_APIKEY
|
- name: TVDB_APIKEY
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
key: {{ .Values.contentdatabase.tvdb.apikeyKey }}
|
key: {{ .Values.contentdatabase.tvdb.apikeyKey }}
|
||||||
name: {{ .Values.contentdatabase.tvdb.existingSecret }}
|
name: {{ .Values.contentdatabase.tvdb.existingSecret }}
|
||||||
|
optional: true
|
||||||
- name: TVDB_PIN
|
- name: TVDB_PIN
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
key: {{ .Values.contentdatabase.tvdb.pinKey }}
|
key: {{ .Values.contentdatabase.tvdb.pinKey }}
|
||||||
name: {{ .Values.contentdatabase.tvdb.existingSecret }}
|
name: {{ .Values.contentdatabase.tvdb.existingSecret }}
|
||||||
|
optional: true
|
||||||
- name: RABBITMQ_HOST
|
- name: RABBITMQ_HOST
|
||||||
value: {{ .Values.global.rabbitmq.host | quote }}
|
value: {{ .Values.global.rabbitmq.host | quote }}
|
||||||
- name: RABBITMQ_PORT
|
- name: RABBITMQ_PORT
|
||||||
|
@ -141,16 +141,12 @@ kyoo:
|
|||||||
# configures workloads that require access to media
|
# configures workloads that require access to media
|
||||||
media:
|
media:
|
||||||
# specifies the volumes to use
|
# specifies the volumes to use
|
||||||
volumes:
|
volumes: []
|
||||||
# default volume configuration to allow for easier demo
|
|
||||||
# most setups will aim to leverage NFS to access media
|
# most setups will aim to leverage NFS to access media
|
||||||
# - name: media
|
# - name: media
|
||||||
# nfs:
|
# nfs:
|
||||||
# server: mynasserver.mydomain.com
|
# server: mynasserver.mydomain.com
|
||||||
# path: /spin0/media
|
# path: /spin0/media
|
||||||
- name: media
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: media
|
|
||||||
|
|
||||||
# specifies where to mount the volumes
|
# specifies where to mount the volumes
|
||||||
# note that this should align with .media.baseMountPath
|
# note that this should align with .media.baseMountPath
|
||||||
@ -386,7 +382,7 @@ transcoder:
|
|||||||
- name: cache
|
- name: cache
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
# default to recreate for better user experience with ReadWriteOnce volumes
|
# default to recreate for better user experience with ReadWriteOnce volumes & hardware resources
|
||||||
updateStrategy:
|
updateStrategy:
|
||||||
type: Recreate
|
type: Recreate
|
||||||
podLabels: {}
|
podLabels: {}
|
||||||
@ -485,7 +481,5 @@ rabbitmq:
|
|||||||
existingErlangSecret: "{{ .Values.global.rabbitmq.infra.existingSecret }}"
|
existingErlangSecret: "{{ .Values.global.rabbitmq.infra.existingSecret }}"
|
||||||
existingSecretErlangKey: "{{ .Values.global.rabbitmq.infra.keyErlangCookie }}"
|
existingSecretErlangKey: "{{ .Values.global.rabbitmq.infra.keyErlangCookie }}"
|
||||||
|
|
||||||
# create extraObjects
|
# allows for the creation of any additional kubernetes resources
|
||||||
# create secret bigsecret
|
|
||||||
# create pvc for each object
|
|
||||||
extraObjects: []
|
extraObjects: []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user