feat(storage): migrate 12 SQLite NFS PVCs to proxmox-lvm (Wave 1)

Add proxmox-lvm PVCs with pvc-autoresizer annotations for all
SQLite-backed services. Deployments updated to use new block storage
PVCs. Old NFS modules retained for 1-week rollback.

Services: ntfy, freshrss, insta2spotify, actualbudget (x3),
wealthfolio, navidrome (DB only), audiobookshelf config,
headscale, forgejo, uptime-kuma.

Also: set Recreate strategy on ntfy, forgejo, insta2spotify,
wealthfolio (required for RWO volumes).
This commit is contained in:
Viktor Barzin 2026-04-04 16:26:59 +03:00
parent 792da5c066
commit ee39dd2fc9
10 changed files with 263 additions and 14 deletions

View file

@ -66,6 +66,28 @@ module "nfs_data" {
nfs_path = "/mnt/main/navidrome"
}
resource "kubernetes_persistent_volume_claim" "data_proxmox" {
wait_until_bound = false
metadata {
name = "navidrome-data-proxmox"
namespace = kubernetes_namespace.navidrome.metadata[0].name
annotations = {
"resize.topolvm.io/threshold" = "80%"
"resize.topolvm.io/increase" = "100%"
"resize.topolvm.io/storage_limit" = "5Gi"
}
}
spec {
access_modes = ["ReadWriteOnce"]
storage_class_name = "proxmox-lvm"
resources {
requests = {
storage = "1Gi"
}
}
}
}
module "nfs_music" {
source = "../../modules/kubernetes/nfs_volume"
name = "navidrome-music"
@ -82,6 +104,14 @@ module "nfs_lidarr" {
nfs_path = "/mnt/main/servarr/lidarr"
}
module "nfs_freedify" {
source = "../../modules/kubernetes/nfs_volume"
name = "navidrome-freedify"
namespace = kubernetes_namespace.navidrome.metadata[0].name
nfs_server = var.nfs_server
nfs_path = "/mnt/main/freedify-music"
}
resource "kubernetes_deployment" "navidrome" {
metadata {
name = "navidrome"
@ -125,6 +155,15 @@ resource "kubernetes_deployment" "navidrome" {
mount_path = "/lidarr"
read_only = true
}
volume_mount {
name = "freedify"
mount_path = "/freedify-music"
read_only = true
}
env {
name = "ND_SCANSCHEDULE"
value = "0"
}
port {
name = "http"
container_port = 4533
@ -143,7 +182,7 @@ resource "kubernetes_deployment" "navidrome" {
volume {
name = "data"
persistent_volume_claim {
claim_name = module.nfs_data.claim_name
claim_name = kubernetes_persistent_volume_claim.data_proxmox.metadata[0].name
}
}
volume {
@ -158,6 +197,12 @@ resource "kubernetes_deployment" "navidrome" {
claim_name = module.nfs_lidarr.claim_name
}
}
volume {
name = "freedify"
persistent_volume_claim {
claim_name = module.nfs_freedify.claim_name
}
}
}
}
}