diff --git a/modules/kubernetes/main.tf b/modules/kubernetes/main.tf index d1a59aae..3f025629 100644 --- a/modules/kubernetes/main.tf +++ b/modules/kubernetes/main.tf @@ -677,3 +677,8 @@ module "freshrss" { source = "./freshrss" tls_secret_name = var.tls_secret_name } + +module "navidrome" { + source = "./navidrome" + tls_secret_name = var.tls_secret_name +} diff --git a/modules/kubernetes/navidrome/main.tf b/modules/kubernetes/navidrome/main.tf new file mode 100644 index 00000000..f11a7a13 --- /dev/null +++ b/modules/kubernetes/navidrome/main.tf @@ -0,0 +1,106 @@ +variable "tls_secret_name" {} + +resource "kubernetes_namespace" "navidrome" { + metadata { + name = "navidrome" + labels = { + "istio-injection" : "disabled" + } + } +} + +module "tls_secret" { + source = "../setup_tls_secret" + namespace = "navidrome" + tls_secret_name = var.tls_secret_name +} + +resource "kubernetes_deployment" "navidrome" { + metadata { + name = "navidrome" + namespace = "navidrome" + labels = { + app = "navidrome" + "kubernetes.io/cluster-service" = "true" + } + } + spec { + replicas = 1 + strategy { + type = "Recreate" + } + selector { + match_labels = { + app = "navidrome" + } + } + template { + metadata { + labels = { + app = "navidrome" + "kubernetes.io/cluster-service" = "true" + } + } + spec { + container { + name = "navidrome" + image = "deluan/navidrome:latest" + volume_mount { + name = "data" + mount_path = "/data" + } + volume_mount { + name = "music" + mount_path = "/music" + read_only = true + } + port { + name = "http" + container_port = 4533 + protocol = "TCP" + } + } + volume { + name = "data" + nfs { + path = "/mnt/main/navidrome" + server = "10.0.10.15" + } + } + volume { + name = "music" + nfs { + path = "/volume1/music" + server = "192.168.1.13" + } + } + } + } + } +} + +resource "kubernetes_service" "navidrome" { + metadata { + name = "navidrome" + namespace = "navidrome" + labels = { + "app" = "navidrome" + } + } + + spec { + selector = { + app = "navidrome" + } + port { + port = "80" + target_port = "4533" + } + } +} +module "ingress" { + source = "../ingress_factory" + namespace = "navidrome" + name = "navidrome" + tls_secret_name = var.tls_secret_name +}