diff --git a/sonarr/kustomization.yaml b/sonarr/kustomization.yaml new file mode 100644 index 0000000..7b313f5 --- /dev/null +++ b/sonarr/kustomization.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - main.yaml + - pv.yaml \ No newline at end of file diff --git a/sonarr/main.yaml b/sonarr/main.yaml new file mode 100644 index 0000000..2fbc048 --- /dev/null +++ b/sonarr/main.yaml @@ -0,0 +1,142 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: sonarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: sonarr + app.kubernetes.io/version: v3.0.8.1507 + helm.sh/chart: sonarr-16.3.2 + name: sonarr +spec: + ports: + - name: http + port: 8989 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/instance: sonarr + app.kubernetes.io/name: sonarr + type: ClusterIP +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/instance: sonarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: sonarr + app.kubernetes.io/version: v3.0.8.1507 + helm.sh/chart: sonarr-16.3.2 + name: sonarr-config +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + storageClassName: openebs-3-replicas +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/instance: sonarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: sonarr + app.kubernetes.io/version: v3.0.8.1507 + helm.sh/chart: sonarr-16.3.2 + name: sonarr-media +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi + storageClassName: nfs-storage + volumeName: nfs-media-radarr +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: sonarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: sonarr + app.kubernetes.io/version: v3.0.8.1507 + helm.sh/chart: sonarr-16.3.2 + name: sonarr +spec: + replicas: 1 + revisionHistoryLimit: 3 + selector: + matchLabels: + app.kubernetes.io/instance: sonarr + app.kubernetes.io/name: sonarr + strategy: + type: Recreate + template: + metadata: + labels: + app.kubernetes.io/instance: sonarr + app.kubernetes.io/name: sonarr + spec: + automountServiceAccountToken: true + containers: + - env: + - name: PGID + value: "1000" + - name: PUID + value: "1000" + - name: TZ + value: UTC + image: lscr.io/linuxserver/sonarr:4.0.146 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /usr/bin/env + - bash + - -c + - curl --fail localhost:8989/api/v3/system/status?apiKey=`IFS=\> && while + read -d \< E C; do if [[ $E = "ApiKey" ]]; then echo $C; fi; done < + /config/config.xml` + failureThreshold: 5 + initialDelaySeconds: 60 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + name: sonarr + ports: + - containerPort: 8989 + name: http + protocol: TCP + readinessProbe: + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + tcpSocket: + port: 8989 + timeoutSeconds: 1 + startupProbe: + failureThreshold: 30 + initialDelaySeconds: 0 + periodSeconds: 5 + tcpSocket: + port: 8989 + timeoutSeconds: 1 + volumeMounts: + - mountPath: /config + name: config + - mountPath: /media + name: media + dnsPolicy: ClusterFirst + enableServiceLinks: true + serviceAccountName: default + volumes: + - name: config + persistentVolumeClaim: + claimName: sonarr-config + - name: media + persistentVolumeClaim: + claimName: sonarr-media diff --git a/sonarr/pv.yaml b/sonarr/pv.yaml new file mode 100644 index 0000000..493cb5f --- /dev/null +++ b/sonarr/pv.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nfs-media-sonarr +spec: + storageClassName: nfs-storage + capacity: + storage: 1Gi # Beachte: NFS ist dynamisch, die Größe ist nur ein Label + accessModes: + - ReadWriteMany # Mehrere Pods können es gleichzeitig nutzen + persistentVolumeReclaimPolicy: Retain + nfs: + path: /mnt/volume1/media # Der Pfad der NFS-Freigabe auf der NAS + server: 192.168.10.1 # Die IP-Adresse deiner NAS + mountOptions: + - nfsvers=4 # Passe ggf. an (nfsvers=3 falls nötig) \ No newline at end of file diff --git a/sonarr/src/kustomization.yaml b/sonarr/src/kustomization.yaml new file mode 100644 index 0000000..1b1ea7d --- /dev/null +++ b/sonarr/src/kustomization.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +helmCharts: + - name: sonarr + repo: https://k8s-at-home.com/charts/ + version: 16.3.2 + releaseName: sonarr + includeCRDs: true + namespace: sonarr + valuesFile: values.yaml diff --git a/sonarr/src/values.yaml b/sonarr/src/values.yaml new file mode 100644 index 0000000..a8c226f --- /dev/null +++ b/sonarr/src/values.yaml @@ -0,0 +1,118 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml +# + +image: + # -- image repository + repository: lscr.io/linuxserver/sonarr + # @default -- chart.appVersion + tag: 4.0.146 + # -- image pull policy + pullPolicy: IfNotPresent + +# -- environment variables. +# @default -- See below +env: + # -- Set the container timezone + TZ: UTC + PUID: 1000 + PGID: 1000 + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + http: + port: 8989 + +ingress: + # -- Enable and configure ingress settings for the chart under this key. + # @default -- See values.yaml + main: + enabled: false + +# -- Configures the probes for the main Pod. +# @default -- See values.yaml +probes: + liveness: + enabled: true + ## Set this to true if you wish to specify your own livenessProbe + custom: true + ## The spec field contains the values for the default livenessProbe. + ## If you selected custom: true, this field holds the definition of the livenessProbe. + spec: + exec: + command: + - /usr/bin/env + - bash + - -c + - curl --fail localhost:8989/api/v3/system/status?apiKey=`IFS=\> && while + read -d \< E C; do if [[ $E = "ApiKey" ]]; then echo $C; fi; done < /config/config.xml` + failureThreshold: 5 + initialDelaySeconds: 60 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + +# -- Configure persistence settings for the chart under this key. +## Config persistence is required for the Prometheus exporter sidecar. +# @default -- See values.yaml +persistence: + config: + enabled: true + storageClass: openebs-3-replicas + accessMode: ReadWriteOnce + size: 5Gi + + media: + enabled: true + mountPath: /media + storageClass: nfs-storage + volumeName: nfs-media-radarr + accessMode: ReadWriteMany + size: 1Gi + +metrics: + # -- Enable and configure Exportarr sidecar and Prometheus serviceMonitor. + # @default -- See values.yaml + enabled: false + serviceMonitor: + interval: 3m + scrapeTimeout: 1m + labels: {} + # -- Enable and configure Prometheus Rules for the chart under this key. + # @default -- See values.yaml + prometheusRule: + enabled: false + labels: {} + # -- Configure additionial rules for the chart under this key. + # @default -- See prometheusrules.yaml + rules: [] + # - alert: SonarrDown + # annotations: + # description: Sonarr service is down. + # summary: Sonarr is down. + # expr: | + # sonarr_system_status == 0 + # for: 5m + # labels: + # severity: critical + exporter: + image: + # -- image repository + repository: ghcr.io/onedr0p/exportarr + # -- image tag + tag: v1.0.0 + # -- image pull policy + pullPolicy: IfNotPresent + env: + # -- metrics port + port: 9794 + # -- Set to true to enable gathering of additional metrics (slow) + additionalMetrics: false + # -- Set to true to enable gathering unknown queue items + unknownQueueItems: false