resource "kubernetes_deployment" "sonarr" { metadata { name = "sonarr-deployment" labels = { name = "sonarr.k3s.seyshiro.de" } namespace = kubernetes_namespace.testing.metadata.0.name } spec { replicas = 1 selector { match_labels = { name = "sonarr.k3s.seyshiro.de" } } template { metadata { labels = { name = "sonarr.k3s.seyshiro.de" } } spec { container { image = "lscr.io/linuxserver/sonarr:latest" name = "sonarr-pod" port { container_port = 8989 } resources { limits = { cpu = "0.5" memory = "512Mi" } requests = { cpu = "250m" memory = "50Mi" } } volume_mount { name = kubernetes_persistent_volume.sonarr_config.metadata.0.name mount_path = "/config" } volume_mount { name = kubernetes_persistent_volume.sonarr_tv.metadata.0.name mount_path = "/tv" } volume_mount { name = kubernetes_persistent_volume.sonarr_downloads.metadata.0.name mount_path = "/downloads" } } volume { name = kubernetes_persistent_volume.sonarr_config.metadata.0.name persistent_volume_claim { claim_name = kubernetes_persistent_volume.sonarr_config.metadata.0.name } } volume { name = kubernetes_persistent_volume.sonarr_tv.metadata.0.name persistent_volume_claim { claim_name = kubernetes_persistent_volume.sonarr_tv.metadata.0.name } } volume { name = kubernetes_persistent_volume.sonarr_downloads.metadata.0.name persistent_volume_claim { claim_name = kubernetes_persistent_volume.sonarr_downloads.metadata.0.name } } } } } } resource "kubernetes_service" "sonarr" { metadata { name = "sonarr-service" namespace = kubernetes_namespace.testing.metadata.0.name } spec { selector = { name = kubernetes_deployment.sonarr.spec.0.template.0.metadata.0.labels.name } port { port = 8989 target_port = 8989 } type = "NodePort" } } resource "kubernetes_persistent_volume_claim" "sonarr_config" { metadata { name = "sonarr-config" namespace = kubernetes_namespace.testing.metadata.0.name } spec { access_modes = ["ReadWriteMany"] resources { requests = { storage = "2Gi" } } volume_name = kubernetes_persistent_volume.sonarr_config.metadata.0.name storage_class_name = "local-path" } wait_until_bound = true } resource "kubernetes_persistent_volume" "sonarr_config" { metadata { name = "sonarr-config" } spec { access_modes = ["ReadWriteMany"] capacity = { storage = "2Gi" } node_affinity { required { node_selector_term { match_fields { key = "metadata.name" operator = "In" values = ["sonarr"] } } } } persistent_volume_source { local { path = "/home/tudattr/terraform/sonarr/config/" } } storage_class_name = "local-path" } } resource "kubernetes_persistent_volume_claim" "sonarr_tv" { metadata { name = "sonarr-tv" namespace = kubernetes_namespace.testing.metadata.0.name } spec { access_modes = ["ReadWriteMany"] resources { requests = { storage = "2Gi" } } volume_name = kubernetes_persistent_volume.sonarr_tv.metadata.0.name storage_class_name = "local-path" } wait_until_bound = true } resource "kubernetes_persistent_volume" "sonarr_tv" { metadata { name = "sonarr-tv" } spec { access_modes = ["ReadWriteMany"] capacity = { storage = "2Gi" } node_affinity { required { node_selector_term { match_fields { key = "metadata.name" operator = "In" values = ["sonarr"] } } } } persistent_volume_source { local { path = "/home/tudattr/terraform/sonarr/tv/" } } storage_class_name = "local-path" } } resource "kubernetes_persistent_volume_claim" "sonarr_downloads" { metadata { name = "sonarr-downloads" namespace = kubernetes_namespace.testing.metadata.0.name } spec { access_modes = ["ReadWriteMany"] resources { requests = { storage = "2Gi" } } volume_name = kubernetes_persistent_volume.sonarr_downloads.metadata.0.name storage_class_name = "local-path" } wait_until_bound = true } resource "kubernetes_persistent_volume" "sonarr_downloads" { metadata { name = "sonarr-downloads" } spec { access_modes = ["ReadWriteMany"] capacity = { storage = "2Gi" } node_affinity { required { node_selector_term { match_fields { key = "metadata.name" operator = "In" values = ["sonarr"] } } } } persistent_volume_source { local { path = "/home/tudattr/terraform/sonarr/downloads/" } } storage_class_name = "local-path" } }