[ci skip] migrate 29 services from inline NFS to CSI-backed PV/PVC

Batch migration of all single-volume and simple multi-volume stacks.
All services verified healthy after migration. Uses nfs-truenas
StorageClass with soft,timeo=30,retrans=3 mount options to eliminate
stale NFS mount hangs.

Services: atuin, audiobookshelf, calibre, changedetection, diun,
excalidraw, forgejo, freshrss, grampsweb, hackmd, health,
isponsorblocktv, matrix, meshcentral, n8n, navidrome, ntfy, ollama,
onlyoffice, owntracks, paperless-ngx, poison-fountain, send,
stirling-pdf, tandoor, wealthfolio, whisper, woodpecker, ytdlp
This commit is contained in:
Viktor Barzin 2026-03-02 00:15:39 +00:00
parent 853a96cb57
commit 79a2aa3784
29 changed files with 423 additions and 174 deletions

View file

@ -18,6 +18,38 @@ module "tls_secret" {
tls_secret_name = var.tls_secret_name
}
module "nfs_audiobooks" {
source = "../../modules/kubernetes/nfs_volume"
name = "audiobookshelf-audiobooks"
namespace = kubernetes_namespace.audiobookshelf.metadata[0].name
nfs_server = var.nfs_server
nfs_path = "/mnt/main/audiobookshelf/audiobooks"
}
module "nfs_podcasts" {
source = "../../modules/kubernetes/nfs_volume"
name = "audiobookshelf-podcasts"
namespace = kubernetes_namespace.audiobookshelf.metadata[0].name
nfs_server = var.nfs_server
nfs_path = "/mnt/main/audiobookshelf/podcasts"
}
module "nfs_config" {
source = "../../modules/kubernetes/nfs_volume"
name = "audiobookshelf-config"
namespace = kubernetes_namespace.audiobookshelf.metadata[0].name
nfs_server = var.nfs_server
nfs_path = "/mnt/main/audiobookshelf/config"
}
module "nfs_metadata" {
source = "../../modules/kubernetes/nfs_volume"
name = "audiobookshelf-metadata"
namespace = kubernetes_namespace.audiobookshelf.metadata[0].name
nfs_server = var.nfs_server
nfs_path = "/mnt/main/audiobookshelf/metadata"
}
resource "kubernetes_deployment" "audiobookshelf" {
metadata {
name = "audiobookshelf"
@ -83,30 +115,26 @@ resource "kubernetes_deployment" "audiobookshelf" {
}
volume {
name = "audiobooks"
nfs {
path = "/mnt/main/audiobookshelf/audiobooks"
server = var.nfs_server
persistent_volume_claim {
claim_name = module.nfs_audiobooks.claim_name
}
}
volume {
name = "podcasts"
nfs {
path = "/mnt/main/audiobookshelf/podcasts"
server = var.nfs_server
persistent_volume_claim {
claim_name = module.nfs_podcasts.claim_name
}
}
volume {
name = "config"
nfs {
path = "/mnt/main/audiobookshelf/config"
server = var.nfs_server
persistent_volume_claim {
claim_name = module.nfs_config.claim_name
}
}
volume {
name = "metadata"
nfs {
path = "/mnt/main/audiobookshelf/metadata"
server = var.nfs_server
persistent_volume_claim {
claim_name = module.nfs_metadata.claim_name
}
}
}