From 79a28a674a4fdcdeff40602473c3b00d15d0b646 Mon Sep 17 00:00:00 2001 From: gilgamezh Date: Mon, 1 Jun 2026 21:34:44 +0200 Subject: [PATCH] feat(maintainerr): deploy for watched-movie cleanup (Plex -> Radarr) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rule-based deletion of watched movies from Radarr (with files), driven by Maintainerr. Raw manifests + directory-type Argo Application (no Helm). Config on shared plex-data NFS PVC (subPath configs/maintainerr); Recreate strategy since it uses SQLite on RWX NFS. ClusterIP only, no ingress — access via kubectl/k9s port-forward. Co-Authored-By: Claude Opus 4.8 --- applications/maintainerr.yaml | 23 ++++++++++ manifests/maintainerr/deployment.yaml | 63 +++++++++++++++++++++++++++ manifests/maintainerr/service.yaml | 17 ++++++++ 3 files changed, 103 insertions(+) create mode 100644 applications/maintainerr.yaml create mode 100644 manifests/maintainerr/deployment.yaml create mode 100644 manifests/maintainerr/service.yaml diff --git a/applications/maintainerr.yaml b/applications/maintainerr.yaml new file mode 100644 index 0000000..008fb8b --- /dev/null +++ b/applications/maintainerr.yaml @@ -0,0 +1,23 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: maintainerr + namespace: argocd +spec: + project: default + source: + repoURL: http://gitea-http.gitea.svc.cluster.local:3000/admin/turingpi.git + targetRevision: HEAD + path: manifests/maintainerr + directory: + recurse: false + destination: + server: https://kubernetes.default.svc + namespace: default + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true diff --git a/manifests/maintainerr/deployment.yaml b/manifests/maintainerr/deployment.yaml new file mode 100644 index 0000000..24338cb --- /dev/null +++ b/manifests/maintainerr/deployment.yaml @@ -0,0 +1,63 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: maintainerr + namespace: default + labels: + app: maintainerr +spec: + replicas: 1 + # SQLite on the shared NFS PVC: never run two writers at once. + strategy: + type: Recreate + selector: + matchLabels: + app: maintainerr + template: + metadata: + labels: + app: maintainerr + spec: + securityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + containers: + - name: maintainerr + image: ghcr.io/maintainerr/maintainerr:latest + imagePullPolicy: Always + ports: + - name: http + containerPort: 6246 + protocol: TCP + env: + - name: TZ + value: "Europe/Amsterdam" + volumeMounts: + - name: plex-data + mountPath: /opt/data + subPath: configs/maintainerr + readinessProbe: + httpGet: + path: /api/app/status + port: http + initialDelaySeconds: 20 + periodSeconds: 15 + livenessProbe: + httpGet: + path: /api/app/status + port: http + initialDelaySeconds: 60 + periodSeconds: 30 + resources: + requests: + memory: "256Mi" + cpu: "100m" + limits: + memory: "512Mi" + cpu: "1000m" + volumes: + - name: plex-data + persistentVolumeClaim: + claimName: plex-data diff --git a/manifests/maintainerr/service.yaml b/manifests/maintainerr/service.yaml new file mode 100644 index 0000000..67bda7d --- /dev/null +++ b/manifests/maintainerr/service.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: maintainerr + namespace: default + labels: + app: maintainerr +spec: + type: ClusterIP + ports: + - port: 6246 + targetPort: http + protocol: TCP + name: http + selector: + app: maintainerr