diff --git a/k8s-wheatley/plex/kustomization.yaml b/k8s-wheatley/plex/kustomization.yaml index 7676da5..3bd4023 100644 --- a/k8s-wheatley/plex/kustomization.yaml +++ b/k8s-wheatley/plex/kustomization.yaml @@ -4,6 +4,7 @@ kind: Kustomization namespace: plex resources: + - ../../kustomize-bases/nfs-media - configmap.yaml - deployments.yaml - ingress.yaml @@ -12,6 +13,28 @@ resources: - services.yaml - namespace.yaml +patches: + - target: + kind: PersistentVolume + name: nfs-media + patch: | + - op: replace + path: /metadata/name + value: nfs-media-plex + - op: replace + path: /spec/accessModes/0 + value: ReadOnlyMany + - target: + kind: PersistentVolumeClaim + name: nfs-media + patch: | + - op: replace + path: /spec/volumeName + value: nfs-media-plex + - op: replace + path: /spec/accessModes/0 + value: ReadOnlyMany + images: - name: plexinc/pms-docker newTag: 1.43.1.10611-1e34174b1@sha256:8b5bcdf7b506fe051aa1a0a0d464efdb3ad8c0fb1f8a4dfb27a8c489b609920c diff --git a/k8s-wheatley/plex/pvc.yaml b/k8s-wheatley/plex/pvc.yaml index 7943bab..69e27fe 100644 --- a/k8s-wheatley/plex/pvc.yaml +++ b/k8s-wheatley/plex/pvc.yaml @@ -10,36 +10,3 @@ spec: resources: requests: storage: 20Gi ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: nfs-media -spec: - accessModes: - - ReadOnlyMany - resources: - requests: - storage: 40Ti - volumeName: nfs-media-plex ---- -apiVersion: v1 -kind: PersistentVolume -metadata: - name: nfs-media-plex -spec: - capacity: - storage: 40Ti - accessModes: - - ReadOnlyMany - nfs: - server: 10.0.69.10 - path: /tank/media - mountOptions: - - vers=4.1 - - rsize=1048576 - - wsize=1048576 - - hard - - timeo=600 - - noatime - persistentVolumeReclaimPolicy: Retain diff --git a/k8s-wheatley/qbittorrent/kustomization.yaml b/k8s-wheatley/qbittorrent/kustomization.yaml index 3e94bd5..68bd0ef 100644 --- a/k8s-wheatley/qbittorrent/kustomization.yaml +++ b/k8s-wheatley/qbittorrent/kustomization.yaml @@ -4,6 +4,7 @@ kind: Kustomization namespace: qbittorrent resources: + - ../../kustomize-bases/nfs-media - configmap.yaml - deployments.yaml - ingress.yaml @@ -12,6 +13,25 @@ resources: - services.yaml - namespace.yaml +patches: + - target: + kind: PersistentVolume + name: nfs-media + patch: | + - op: replace + path: /metadata/name + value: nfs-media-qbittorrent + - op: replace + path: /spec/nfs/path + value: /tank/media/downloads + - target: + kind: PersistentVolumeClaim + name: nfs-media + patch: | + - op: replace + path: /spec/volumeName + value: nfs-media-qbittorrent + images: - name: ghcr.io/qdm12/gluetun newTag: v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab diff --git a/k8s-wheatley/qbittorrent/pvc.yaml b/k8s-wheatley/qbittorrent/pvc.yaml index aa566ea..c352b02 100644 --- a/k8s-wheatley/qbittorrent/pvc.yaml +++ b/k8s-wheatley/qbittorrent/pvc.yaml @@ -10,36 +10,3 @@ spec: resources: requests: storage: 5Gi ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: nfs-media -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 40Ti - volumeName: nfs-media-qbittorrent ---- -apiVersion: v1 -kind: PersistentVolume -metadata: - name: nfs-media-qbittorrent -spec: - capacity: - storage: 40Ti - accessModes: - - ReadWriteMany - nfs: - server: 10.0.69.10 - path: /tank/media/downloads - mountOptions: - - vers=4.1 - - rsize=1048576 - - wsize=1048576 - - hard - - timeo=600 - - noatime - persistentVolumeReclaimPolicy: Retain diff --git a/k8s-wheatley/radarr/kustomization.yaml b/k8s-wheatley/radarr/kustomization.yaml index dcb0205..d121a97 100644 --- a/k8s-wheatley/radarr/kustomization.yaml +++ b/k8s-wheatley/radarr/kustomization.yaml @@ -4,6 +4,7 @@ kind: Kustomization namespace: radarr resources: + - ../../kustomize-bases/nfs-media - configmap.yaml - deployments.yaml - ingress.yaml @@ -12,6 +13,22 @@ resources: - services.yaml - namespace.yaml +patches: + - target: + kind: PersistentVolume + name: nfs-media + patch: | + - op: replace + path: /metadata/name + value: nfs-media-radarr + - target: + kind: PersistentVolumeClaim + name: nfs-media + patch: | + - op: replace + path: /spec/volumeName + value: nfs-media-radarr + images: - name: linuxserver/radarr newTag: 6.1.1@sha256:6f1dda18354ea7f28cead8f6d099fc8222498c3ae165f567d504ed04d70980d7 diff --git a/k8s-wheatley/radarr/pvc.yaml b/k8s-wheatley/radarr/pvc.yaml index fe76bfc..d188698 100644 --- a/k8s-wheatley/radarr/pvc.yaml +++ b/k8s-wheatley/radarr/pvc.yaml @@ -10,36 +10,3 @@ spec: resources: requests: storage: 5Gi ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: nfs-media -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 40Ti - volumeName: nfs-media-radarr ---- -apiVersion: v1 -kind: PersistentVolume -metadata: - name: nfs-media-radarr -spec: - capacity: - storage: 40Ti - accessModes: - - ReadWriteMany - nfs: - server: 10.0.69.10 - path: /tank/media - mountOptions: - - vers=4.1 - - rsize=1048576 - - wsize=1048576 - - hard - - timeo=600 - - noatime - persistentVolumeReclaimPolicy: Retain diff --git a/k8s-wheatley/sonarr/kustomization.yaml b/k8s-wheatley/sonarr/kustomization.yaml index eed76a3..a1c0b98 100644 --- a/k8s-wheatley/sonarr/kustomization.yaml +++ b/k8s-wheatley/sonarr/kustomization.yaml @@ -4,6 +4,7 @@ kind: Kustomization namespace: sonarr resources: + - ../../kustomize-bases/nfs-media - configmap.yaml - deployments.yaml - ingress.yaml @@ -12,6 +13,22 @@ resources: - services.yaml - namespace.yaml +patches: + - target: + kind: PersistentVolume + name: nfs-media + patch: | + - op: replace + path: /metadata/name + value: nfs-media-sonarr + - target: + kind: PersistentVolumeClaim + name: nfs-media + patch: | + - op: replace + path: /spec/volumeName + value: nfs-media-sonarr + images: - name: linuxserver/sonarr newTag: 4.0.17@sha256:6854df9de20b8c82e1982604f39473d64dbb4c4584b1013f18f9ade1ee92af13 diff --git a/k8s-wheatley/sonarr/pvc.yaml b/k8s-wheatley/sonarr/pvc.yaml index d431b58..14d30b8 100644 --- a/k8s-wheatley/sonarr/pvc.yaml +++ b/k8s-wheatley/sonarr/pvc.yaml @@ -10,36 +10,3 @@ spec: resources: requests: storage: 5Gi ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: nfs-media -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 40Ti - volumeName: nfs-media-sonarr ---- -apiVersion: v1 -kind: PersistentVolume -metadata: - name: nfs-media-sonarr -spec: - capacity: - storage: 40Ti - accessModes: - - ReadWriteMany - nfs: - server: 10.0.69.10 - path: /tank/media - mountOptions: - - vers=4.1 - - rsize=1048576 - - wsize=1048576 - - hard - - timeo=600 - - noatime - persistentVolumeReclaimPolicy: Retain diff --git a/kustomize-bases/nfs-media/kustomization.yaml b/kustomize-bases/nfs-media/kustomization.yaml new file mode 100644 index 0000000..482f897 --- /dev/null +++ b/kustomize-bases/nfs-media/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - pvc.yaml diff --git a/kustomize-bases/nfs-media/pvc.yaml b/kustomize-bases/nfs-media/pvc.yaml new file mode 100644 index 0000000..94091c9 --- /dev/null +++ b/kustomize-bases/nfs-media/pvc.yaml @@ -0,0 +1,40 @@ +# Shared NFS media storage template — used by plex, sonarr, radarr, and qbittorrent. +# All apps on k8s-wheatley mount the same NFS server: 10.0.69.10 +# +# Each app overlays this base with JSON patches in its kustomization.yaml: +# - Always: rename PV (metadata.name) and update PVC volumeName to match +# - plex only: patch accessModes to ReadOnlyMany on both PV and PVC +# - qbittorrent only: patch nfs.path to /tank/media/downloads +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nfs-media # renamed per-app via JSON patch +spec: + capacity: + storage: 40Ti + accessModes: + - ReadWriteMany + nfs: + server: 10.0.69.10 + path: /tank/media + mountOptions: + - vers=4.1 + - rsize=1048576 + - wsize=1048576 + - hard + - timeo=600 + - noatime + persistentVolumeReclaimPolicy: Retain +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nfs-media +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 40Ti + volumeName: nfs-media # patched per-app to match PV name