Skip to content

Commit

Permalink
update helm docs & media path (#739)
Browse files Browse the repository at this point in the history
  • Loading branch information
acelinkio authored Dec 23, 2024
2 parents 6151a61 + 3bb3a50 commit 3425544
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 16 deletions.
78 changes: 64 additions & 14 deletions chart/README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
# 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).

# Recomendations
This helm chart includes subcharts for Meilisearch, Postgres, and RabbitMQ. Those resources should be managed outside of this Helm release.

## 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.
## 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.

Strongly recomended to use a Kubernetes operator for managing Postgres.
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.

## Storage
Kyoo currently uses storage volumes for media, backend-storage, and transcoder-storage. 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.

Storage for backend and transcoder will eventually be moved into a datastore application.

# 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.
# Examples
## 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.

```sh
helm upgrade kyoo . --install --values myvalues.yaml
Expand Down Expand Up @@ -64,4 +59,59 @@ extraObjects:
resources:
requests:
storage: "3Gi"
```
```
## Common Setup
values.yaml configuration
```yaml
# specify external hosts for backend resources
global:
meilisearch:
kyoo_back:
host: kyoo-meilisearch.kyoo.svc.cluster.local
postgres:
# postgres instance information to connect to back's database
kyoo_back:
host: cluster01.postgres.svc.cluster.local
# postgres instance information to connect to transcoder's database
kyoo_transcoder:
host: cluster01.postgres.svc.cluster.local
rabbitmq:
host: cluster01.rabbitmq.svc.cluster.local
kyoo:
address: https://kyoo.mydomain.com
# leverage NFS for media
media:
volumes:
- name: media
nfs:
server: mynasserver
path: /spin0/media
```
by default the chart expects to consume a Kubernetes secret named `bigsecret`. That secret should look similar to:

```yaml
apiVersion: v1
kind: Secret
metadata:
name: bigsecret
type: Opaque
stringData:
kyoo_apikeys: yHXWGsjfjE6sy6UxavqmTUYxgCFYek
tmdb_apikey: ""
tvdb_apikey: ""
tvdb_pin: ""
MEILI_MASTER_KEY: barkLike8SuperDucks
postgres_user: kyoo_all
postgres_password: watchSomething4me
rabbitmq_user: kyoo_all
rabbitmq_password: youAreAmazing2
```

# Recomendations
## 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
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.
12 changes: 10 additions & 2 deletions chart/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -140,17 +140,25 @@ kyoo:
media:
# specifies the volumes to use
volumes:
# default volume configuration to allow for easier demo
# most setups will aim to leverage NFS to access media
# - name: media
# nfs:
# server: mynasserver.mydomain.com
# path: /spin0/media
- name: media
persistentVolumeClaim:
claimName: media

# specifies where to mount the volumes
# note that this should align with .media.baseMountPath
volumeMounts:
- mountPath: /data
- mountPath: /media
name: media
readOnly: true
# configures kyoo workloads to search
# note that this should align with .media.volumeMounts[].mountPath
baseMountPath: "/data"
baseMountPath: "/media"

# configures workloads that require access to contentdatabase
contentdatabase:
Expand Down

0 comments on commit 3425544

Please sign in to comment.