Kyoo Helm Chart部署:在Kubernetes集群中规模化运行

【免费下载链接】Kyoo A portable and vast media library solution. 【免费下载链接】Kyoo 项目地址: https://gitcode.com/gh_mirrors/ky/Kyoo

Kyoo是一个功能强大的媒体库解决方案,通过Helm Chart在Kubernetes集群中部署可以实现规模化运行和轻松管理。本文将详细介绍如何使用Kyoo Helm Chart在Kubernetes环境中快速部署和配置这个媒体库系统。

什么是Kyoo Helm Chart?

Kyoo Helm Chart是一个专为Kubernetes设计的部署包,它将Kyoo的多个微服务(包括api、auth、front、scanner和transcoder)打包成一个统一的部署单元。通过Helm Chart,用户可以轻松配置、部署和管理Kyoo在Kubernetes集群中的运行。

Kyoo的架构包括多个相互关联的工作负载,利用PostgreSQL等多种技术。这个Helm Chart旨在简化基本设置的配置,同时提供高级自定义选项。命名和设计遵循diagrams中描述的结构。

准备工作

在开始部署之前,请确保您的环境满足以下要求:

  • 一个运行中的Kubernetes集群
  • Helm 3.x已安装
  • 集群中已配置存储类(StorageClass)
  • 具有创建命名空间、部署、服务等资源的权限

快速开始:一键部署Kyoo

以下示例展示了如何使用子图表部署Kyoo及其依赖项,使用单个Postgres实例并初始化多个数据库。

首先,创建一个myvalues.yaml文件,内容如下:

kyoo:
  address: https://kyoo.mydomain.com
postgres:
  enabled: true
extraObjects:
  - apiVersion: v1
    kind: Secret
    metadata:
      name: bigsecret
    type: Opaque
    stringData:
      postgres_user: kyoo_all
      postgres_password: watchSomething4me
      scanner_apikey: triquarter4u
  - kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: media
    spec:
      accessModes:
        - "ReadOnlyMany"
      resources:
        requests:
          storage: "3Gi"

然后执行以下命令进行部署:

helm upgrade kyoo oci://ghcr.io/zoriya/helm-charts/kyoo --install --values myvalues.yaml

这个命令会使用提供的配置文件部署或升级Kyoo。--install参数表示如果Kyoo未部署,则进行安装;如果已部署,则进行升级。

自定义配置:满足您的特定需求

Kyoo Helm Chart提供了丰富的配置选项,可以根据您的具体需求进行自定义。下面是一个常见的生产环境配置示例:

# specify external hosts for resources
global:
  postgres:
    shared:
      host: postgres-cluster01.databases
# specify hardware resources
transcoder:
  kyoo_transcoder:
    resources:
      limits:
        nvidia.com/gpu: 1
kyoo:
  address: https://kyoo.mydomain.com
  # specify hardware acceleration profile (valid values: disabled, vaapi, qsv, nvidia)
  transcoderAcceleration: nvidia
media:
  volumes:
    - name: media
      nfs:
        server: mynasserver
        path: /spin0/media
ingress:
  enabled: true
  host: kyoo.mydomain.com
  tls: true

这个配置示例展示了如何:

  1. 指定外部PostgreSQL主机
  2. 配置硬件资源限制(如GPU)
  3. 启用硬件加速转码
  4. 配置NFS存储卷用于媒体文件
  5. 启用Ingress并配置TLS

配置文件详解

Kyoo Helm Chart的配置文件(chart/values.yaml)包含了多个关键部分:

  1. global: 配置共享的微服务和子图表设置,包括镜像仓库、安全上下文等
  2. kyoo: Kyoo应用程序设置,包括地址、认证配置、转码器设置等
  3. media: 配置需要访问媒体的工作负载,包括卷和挂载路径
  4. 各微服务配置:api、auth、front、scanner、transcoder等微服务的单独配置

必要的Secret配置

默认情况下,Chart期望使用名为bigsecret的Kubernetes Secret。这个Secret应包含以下内容:

apiVersion: v1
kind: Secret
metadata:
  name: bigsecret
type: Opaque
stringData:
  tmdb_apikey: ""
  tvdb_apikey: ""
  tvdb_pin: ""
  postgres_user: kyoo_all
  postgres_password: watchSomething4me
  scanner_apikey: triquarter4u

您需要根据实际情况填写这些值,特别是数据库凭证和API密钥。

部署架构:了解Kyoo在Kubernetes中的组件

Kyoo在Kubernetes中的部署包含多个组件,它们协同工作以提供完整的媒体库解决方案:

Kyoo应用界面

核心微服务

  1. api: Kyoo的核心API服务,处理媒体数据的管理和查询
  2. auth: 处理用户认证和授权
  3. front: 前端Web界面,提供用户友好的媒体浏览和播放体验
  4. scanner: 扫描媒体文件并提取元数据
  5. transcoder: 转码媒体文件以适应不同的播放设备和网络条件

数据存储

Kyoo使用PostgreSQL数据库存储元数据和用户信息。Helm Chart提供了两种选择:

  1. 使用内置的PostgreSQL子图表(适合测试和小型部署)
  2. 连接到外部PostgreSQL集群(推荐用于生产环境)

媒体存储

媒体文件通常存储在NFS或其他共享存储中,通过PersistentVolumeClaim挂载到相关的Pod中。

高级配置:优化您的Kyoo部署

硬件加速转码

如果您的Kubernetes集群中有GPU资源,可以启用硬件加速转码以提高性能:

kyoo:
  transcoderAcceleration: nvidia
transcoder:
  kyoo_transcoder:
    resources:
      limits:
        nvidia.com/gpu: 1

支持的加速配置文件包括:disabled、vaapi、qsv和nvidia。

调整资源分配

根据您的集群资源情况,可以调整各个组件的资源分配:

api:
  kyoo_api:
    resources:
      requests:
        cpu: 1
        memory: 1Gi
      limits:
        cpu: 2
        memory: 2Gi

配置Ingress

为了从集群外部访问Kyoo,需要配置Ingress:

ingress:
  enabled: true
  ingressClassName: nginx
  host: kyoo.mydomain.com
  tls: true
  tlsSecret: kyoo-tls-cert

维护与升级:保持Kyoo最新

升级Kyoo

要升级Kyoo到最新版本,只需执行:

helm upgrade kyoo oci://ghcr.io/zoriya/helm-charts/kyoo --install --values myvalues.yaml

Helm会自动处理配置的变更和版本的升级,确保服务的平稳过渡。

备份数据

对于生产环境,建议定期备份PostgreSQL数据库。您可以使用Kubernetes CronJob来自动化备份过程:

extraObjects:
  - apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: kyoo-db-backup
    spec:
      schedule: "0 3 * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: backup
                image: postgres:14
                command: ["pg_dump", "-h", "postgres-cluster01.databases", "-U", "kyoo_all", "kyoo_api"]
                env:
                - name: PGPASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: bigsecret
                      key: postgres_password

常见问题与解决方案

媒体文件无法被扫描

如果scanner无法访问媒体文件,请检查:

  1. 确保媒体卷已正确挂载
  2. 检查Pod的权限是否足够访问媒体文件
  3. 查看scanner的日志以获取更多信息

转码性能不佳

如果转码速度慢,可以尝试:

  1. 启用硬件加速
  2. 调整转码预设(chart/values.yaml中的transcoderPreset
  3. 增加transcoder的CPU和内存资源

无法访问Web界面

如果无法访问Kyoo的Web界面,请检查:

  1. Ingress配置是否正确
  2. front服务是否正常运行
  3. 网络策略是否允许外部访问

总结

通过Helm Chart在Kubernetes集群中部署Kyoo是一种高效、可扩展的方式,可以轻松管理和扩展您的媒体库解决方案。无论是家庭使用还是小型企业部署,Kyoo都能提供强大的媒体管理和播放体验。

使用本文提供的指南,您可以快速上手Kyoo的部署和配置,并根据您的具体需求进行自定义。随着您的媒体库的增长,Kyoo和Kubernetes的组合将能够轻松应对不断增加的负载和需求。

开始您的Kyoo之旅吧!只需几个简单的步骤,您就能拥有一个功能齐全、可扩展的媒体库系统。

【免费下载链接】Kyoo A portable and vast media library solution. 【免费下载链接】Kyoo 项目地址: https://gitcode.com/gh_mirrors/ky/Kyoo

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐