clusterplex icon indicating copy to clipboard operation
clusterplex copied to clipboard

Working K8S deployment with helm

Open evanrich opened this issue 10 months ago • 0 comments

Wanted to post my working helm values file, since others who seem to get it working don't. My config:

4x Dell 5060/7060 boxes with either i5-8600 or i7-8700 processors running Talos Linux (1.6.9). This means Intel iGPU's (915). I have the intel driver operator installed in kubernetes as well. I'm actually using Traefik and cloudflare tunnel as ingresses, but did not want an ingress for Plex, so just changed the service to LoadBalancer type. My data drive is 250GB because I have chapter thumbnails turned on, would probably be 1/4-1/3 that if i turned it off.

global:
  plexImage:
    tag: 1.40.2
    imagePullPolicy: IfNotPresent
  timezone: America/Los_Angeles
  
sharedStorage:
    transcode:
      enabled: true
      storageClass: "-"
      existingClaim: plextranscode-pvc
      subPath: "clusterplex"
    media:
      enabled: true
      storageClass: "-"
      existingClaim: plexmedia-pvc

    additionalMediaVolumes:
      cache:
        enabled: true
        existingClaim: clusterplex-cache-pvc
        mountPath: /config/Library/Application Support/Plex Media Server/Cache
      drivers:
        enabled: true
        existingClaim: clusterplex-drivers-pvc
        mountPath: /config/Library/Application Support/Plex Media Server/Drivers

pms:
  enabled: true
  securityContext:
    privileged: true
  env:
    FFMPEG_HWACCEL: vaapi
    TRANSCODE_OPERATING_MODE: remote
    PLEX_CLAIM:
      valueFrom:
        secretKeyRef:
          name: plex-claim-token
          key: claim_token
    
  config:
    transcoderVerbose: 1
    transcodeOperatingMode: remote
    version: docker
    port: 32400
    localRelayEnabled: true
    relayPort: 32499
    pmsIP: ""


  serviceConfig:
    type: LoadBalancer
    externalTrafficPolicy:
    annotations: {}
    labels: {}

  ingressConfig:
    enabled: false
    annotations:
      {}

    labels: {}

    ingressClassName: # "nginx"
    hosts:
      - # -- Host address. Helm template can be passed.
        host: chart-example.local
        ## Configure the paths for the host
        paths:
          - # -- Path.  Helm template can be passed.
            path: /
            pathType: Prefix
            service:
              # -- Overrides the service name reference for this path
              name:
              # -- Overrides the service port reference for this path
              port:

    tls: []

  configVolume:
    enabled: true
    storageClass: ceph-block
    accessMode: ReadWriteOnce
    size: 250Gi
    retain: true

  healthProbes:

    startup: true

    readiness: true

    liveness: true

  resources:
    requests:
      # -- CPU Request amount
      cpu: 2000m

      # Memory Request Amount
      memory: 2Gi

    limits:
      # -- CPU Limit amount
      cpu: 4000m

      # -- Memory Limit amount
      memory: 4Gi
      
orchestrator:
  enableGrafanaDashboard: true
  prometheusServiceMonitor:
      enabled: true

worker:
  env:
    FFMPEG_HWACCEL: vaapi
  securityContext:
    privileged: true
  resources:
    requests:
      cpu: 2
      memory: 3Gi
      gpu.intel.com/i915: "1"
    limits:
      cpu: 4
      memory: 4Gi
      gpu.intel.com/i915: "1" 

Few things: I'm running this on talos Linux, and needed priviliedged to see the gpus on my boxes (Dell 7060 Micro PC's with i5-8500 or i7-8700 processors). I'm using MetalLB to do BGP routing, so "LoadBalancer" gives me a static IP for the service so I can configure outside access. and per one of the other issues here, I found I had to share both the "drivers" and "cache" folders to the workers, hence using 2 extra PV's. I'm using a mixture of Ceph for the config storage and NFS mounts for Media, transcoding (sharing a optane drive over NFS) and the cache/drivers temp mount

evanrich avatar Apr 28 '24 19:04 evanrich