From f5cdffdecd68ee474ee8e620edfea2afae0a2dd6 Mon Sep 17 00:00:00 2001 From: brupje Date: Sun, 18 Oct 2026 15:50:00 +0200 Subject: [PATCH] feat(sonarr): add Kubernetes manifests for Sonarr with PostgreSQL backend --- k8s/kustomization.yaml | 2 + k8s/sonarr/deployment.yaml | 84 +++++++++++++++++++++++++++++++++++ k8s/sonarr/kustomization.yaml | 8 ++++ k8s/sonarr/pvc.yaml | 15 +++++++ k8s/sonarr/secret.yaml | 20 +++++++++ k8s/sonarr/service.yaml | 17 +++++++ 6 files changed, 146 insertions(+) create mode 100644 k8s/sonarr/deployment.yaml create mode 100644 k8s/sonarr/kustomization.yaml create mode 100644 k8s/sonarr/pvc.yaml create mode 100644 k8s/sonarr/secret.yaml create mode 100644 k8s/sonarr/service.yaml diff --git a/k8s/kustomization.yaml b/k8s/kustomization.yaml index 78b27d3..126ea49 100644 --- a/k8s/kustomization.yaml +++ b/k8s/kustomization.yaml @@ -6,4 +6,6 @@ namespace: htpc resources: - namespace.yaml - radarr + - sonarr + diff --git a/k8s/sonarr/deployment.yaml b/k8s/sonarr/deployment.yaml new file mode 100644 index 0000000..608a142 --- /dev/null +++ b/k8s/sonarr/deployment.yaml @@ -0,0 +1,84 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sonarr + namespace: htpc + labels: + app.kubernetes.io/name: sonarr + app.kubernetes.io/part-of: htpc +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: sonarr + template: + metadata: + labels: + app: sonarr + app.kubernetes.io/name: sonarr + app.kubernetes.io/part-of: htpc + spec: + nodeSelector: + kubernetes.io/hostname: vmserver + containers: + - name: sonarr + image: lscr.io/linuxserver/sonarr:latest + imagePullPolicy: IfNotPresent + env: + - name: PUID + value: "33" + - name: PGID + value: "33" + - name: TZ + value: "Europe/Amsterdam" + - name: UMASK + value: "0002" + envFrom: + - secretRef: + name: sonarr-secret + ports: + - name: http + containerPort: 8989 + hostPort: 8989 + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 2000m + memory: 2Gi + volumeMounts: + - name: config + mountPath: /config + - name: datadisk + mountPath: /datadisk + - name: mnt-mp3 + mountPath: /mnt/mp3 + livenessProbe: + httpGet: + path: /sonarr/ping + port: 8989 + initialDelaySeconds: 60 + periodSeconds: 20 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /sonarr/ping + port: 8989 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + volumes: + - name: config + persistentVolumeClaim: + claimName: sonarr-config + - name: datadisk + hostPath: + path: /datadisk + type: Directory + - name: mnt-mp3 + hostPath: + path: /mnt/mp3 + type: Directory diff --git a/k8s/sonarr/kustomization.yaml b/k8s/sonarr/kustomization.yaml new file mode 100644 index 0000000..588ccf0 --- /dev/null +++ b/k8s/sonarr/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - secret.yaml + - pvc.yaml + - service.yaml + - deployment.yaml diff --git a/k8s/sonarr/pvc.yaml b/k8s/sonarr/pvc.yaml new file mode 100644 index 0000000..e664213 --- /dev/null +++ b/k8s/sonarr/pvc.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sonarr-config + namespace: htpc + labels: + app.kubernetes.io/name: sonarr + app.kubernetes.io/part-of: htpc +spec: + accessModes: + - ReadWriteOnce + storageClassName: local-path + resources: + requests: + storage: 10Gi diff --git a/k8s/sonarr/secret.yaml b/k8s/sonarr/secret.yaml new file mode 100644 index 0000000..a6f3da1 --- /dev/null +++ b/k8s/sonarr/secret.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Secret +metadata: + name: sonarr-secret + namespace: htpc + labels: + app.kubernetes.io/name: sonarr + app.kubernetes.io/part-of: htpc +type: Opaque +stringData: + SONARR__POSTGRES__HOST: "postgresql.cluster-infra.svc.cluster.local" + SONARR__POSTGRES__PORT: "5432" + SONARR__POSTGRES__USER: "sonarr" + SONARR__POSTGRES__PASSWORD: "sonarr_pg_pass_2026" + SONARR__POSTGRES__MAINDB: "sonarr-main" + SONARR__POSTGRES__LOGDB: "sonarr-log" + SONARR__SERVER__URLBASE: "sonarr" + SONARR__SERVER__PORT: "8989" + SONARR__SERVER__ALLOWEDHOSTS: "*" + SONARR__AUTH__APIKEY: "ad33af0344fe41159904acf76cdc03ce" diff --git a/k8s/sonarr/service.yaml b/k8s/sonarr/service.yaml new file mode 100644 index 0000000..2e18753 --- /dev/null +++ b/k8s/sonarr/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: sonarr + namespace: htpc + labels: + app.kubernetes.io/name: sonarr + app.kubernetes.io/part-of: htpc +spec: + type: ClusterIP + ports: + - port: 8989 + targetPort: 8989 + protocol: TCP + name: http + selector: + app: sonarr