From bcc697db7e2f00c53d17375f3afc35b1597c8735 Mon Sep 17 00:00:00 2001 From: Nik Afiq Date: Sun, 2 Aug 2026 02:30:17 +0900 Subject: [PATCH] feat: add second Kavita instance with NFS and IngressRoute at books2.home.arpa fix: update Pi-hole configurations to include DNS entry for books2.home.arpa --- manifests/media/jdownloader.yaml | 2 +- manifests/media/kavita2.yaml | 169 +++++++++++++++++++++++++++++++ values/pihole-debian.yaml | 1 + values/pihole.yaml | 3 +- 4 files changed, 173 insertions(+), 2 deletions(-) create mode 100644 manifests/media/kavita2.yaml diff --git a/manifests/media/jdownloader.yaml b/manifests/media/jdownloader.yaml index b3a4c27..427b359 100644 --- a/manifests/media/jdownloader.yaml +++ b/manifests/media/jdownloader.yaml @@ -55,7 +55,7 @@ spec: - /gluetun-entrypoint - healthcheck periodSeconds: 10 - failureThreshold: 18 + failureThreshold: 60 livenessProbe: exec: command: diff --git a/manifests/media/kavita2.yaml b/manifests/media/kavita2.yaml new file mode 100644 index 0000000..d472de4 --- /dev/null +++ b/manifests/media/kavita2.yaml @@ -0,0 +1,169 @@ +# Apply: kubectl apply -f manifests/media/kavita2.yaml +# Delete: kubectl delete -f manifests/media/kavita2.yaml +# Description: Second Kavita instance (separate library) with NFS book PV, local config PVC, and IngressRoute at books2.home.arpa. +apiVersion: v1 +kind: Namespace +metadata: + name: kavita2 +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: kavita2-books-pv +spec: + capacity: + storage: 500Gi + accessModes: + - ReadOnlyMany + persistentVolumeReclaimPolicy: Retain + nfs: + server: 192.168.7.183 + path: /mnt/storage/jellyfin/other + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - minisforum +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: kavita2-books + namespace: kavita2 + annotations: + helm.sh/resource-policy: keep +spec: + accessModes: + - ReadOnlyMany + storageClassName: "" + volumeName: kavita2-books-pv + resources: + requests: + storage: 500Gi +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: kavita2-config + namespace: kavita2 + annotations: + helm.sh/resource-policy: keep +spec: + accessModes: + - ReadWriteOnce + storageClassName: local-path + resources: + requests: + storage: 5Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kavita2 + namespace: kavita2 +spec: + replicas: 1 + selector: + matchLabels: + app: kavita2 + template: + metadata: + labels: + app: kavita2 + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: node-role + operator: In + values: + - primary + containers: + - name: kavita2 + image: lscr.io/linuxserver/kavita:latest + ports: + - containerPort: 5000 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: "Asia/Tokyo" + readinessProbe: + tcpSocket: + port: 5000 + initialDelaySeconds: 15 + periodSeconds: 15 + livenessProbe: + tcpSocket: + port: 5000 + initialDelaySeconds: 30 + periodSeconds: 30 + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 1000m + memory: 1Gi + volumeMounts: + - name: config + mountPath: /config + - name: books + mountPath: /data + readOnly: true + volumes: + - name: config + persistentVolumeClaim: + claimName: kavita2-config + - name: books + persistentVolumeClaim: + claimName: kavita2-books +--- +apiVersion: v1 +kind: Service +metadata: + name: kavita2 + namespace: kavita2 +spec: + selector: + app: kavita2 + ports: + - port: 5000 + targetPort: 5000 +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: kavita2-tls + namespace: kavita2 +spec: + secretName: kavita2-tls + issuerRef: + name: internal-ca-issuer + kind: ClusterIssuer + dnsNames: + - books2.home.arpa +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: kavita2 + namespace: kavita2 +spec: + entryPoints: + - websecure + routes: + - match: Host(`books2.home.arpa`) + kind: Rule + services: + - name: kavita2 + port: 5000 + tls: + secretName: kavita2-tls diff --git a/values/pihole-debian.yaml b/values/pihole-debian.yaml index 07ac0d5..5021c78 100644 --- a/values/pihole-debian.yaml +++ b/values/pihole-debian.yaml @@ -53,6 +53,7 @@ dnsmasq: - address=/gluetun.home.arpa/192.168.7.77 - address=/alert-bridge.home.arpa/192.168.7.77 - address=/books.home.arpa/192.168.7.77 + - address=/books2.home.arpa/192.168.7.77 persistentVolumeClaim: enabled: true diff --git a/values/pihole.yaml b/values/pihole.yaml index 2793114..6bb76c9 100644 --- a/values/pihole.yaml +++ b/values/pihole.yaml @@ -83,4 +83,5 @@ dnsmasq: - address=/argocd.home.arpa/192.168.7.77 - address=/gluetun.home.arpa/192.168.7.77 - address=/alert-bridge.home.arpa/192.168.7.77 - - address=/books.home.arpa/192.168.7.77 \ No newline at end of file + - address=/books.home.arpa/192.168.7.77 + - address=/books2.home.arpa/192.168.7.77 \ No newline at end of file