--- apiVersion: apps/v1 kind: Deployment metadata: name: sonarr namespace: arrstack spec: replicas: 1 strategy: # RWO config PVC + single stateful SQLite DB: never run two pods at once. type: Recreate selector: matchLabels: app: sonarr template: metadata: labels: app: sonarr spec: securityContext: # LinuxServer images init as root via s6 then step down to PUID/PGID. # fsGroup makes the shared CephFS group-writable for that user; # OnRootMismatch avoids a recursive chown of the whole media tree. fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch containers: - name: sonarr image: artifactapi.k8s.syd1.au.unkin.net/dockerhub/linuxserver/sonarr:4.0.19 imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8989 protocol: TCP env: - name: PUID value: "1000" - name: PGID value: "1000" - name: TZ value: Australia/Sydney livenessProbe: httpGet: path: /ping port: http initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /ping port: http initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 resources: requests: cpu: 100m memory: 256Mi limits: cpu: "1" memory: 1Gi volumeMounts: - name: config mountPath: /config - name: media-tv mountPath: /media/tv volumes: - name: config persistentVolumeClaim: claimName: sonarr-config - name: media-tv persistentVolumeClaim: claimName: media-tv