locals { rustdesk_path = "${local.persistent_folder}/rustdesk" } resource "kubernetes_namespace" "rustdesk" { metadata { name = "rustdesk" } } resource "kubernetes_config_map" "rustdesk_config" { metadata { name = "rustdesk-config" namespace = kubernetes_namespace.rustdesk.metadata[0].name } data = { RELAY = "rustdesk.alexpires.me" ENCRYPTED_ONLY = "1" } } resource "kubernetes_secret" "rustdesk_keys" { metadata { name = "rustdesk-keys" namespace = kubernetes_namespace.rustdesk.metadata[0].name } data = { KEY_PRIV = var.rustdesk_private_key KEY_PUB = var.rustdesk_public_key } } resource "kubernetes_deployment" "rustdesk_deploy" { metadata { name = "rustdesk-deploy" namespace = kubernetes_namespace.rustdesk.metadata[0].name labels = { app = "rustdesk-app" } } spec { replicas = 1 selector { match_labels = { app = "rustdesk-app" } } template { metadata { labels = { app = "rustdesk-app" } } spec { container { name = "rustdesk-container" image = "rustdesk/rustdesk-server-s6:${local.rustdesk_version}" env_from { config_map_ref { name = kubernetes_config_map.rustdesk_config.metadata[0].name } } env { name = "KEY_PRIV" value = kubernetes_secret.rustdesk_keys.data["KEY_PRIV"] } env { name = "KEY_PUB" value = kubernetes_secret.rustdesk_keys.data["KEY_PUB"] } security_context { allow_privilege_escalation = false } port { name = "tcp-port-1" container_port = 21115 host_port = 21115 protocol = "TCP" } port { name = "tcp-port-2" container_port = 21116 host_port = 21116 protocol = "TCP" } port { name = "udp-port-1" container_port = 21116 host_port = 21116 protocol = "UDP" } port { name = "tcp-port-3" container_port = 21117 host_port = 21117 protocol = "TCP" } volume_mount { name = "rustdesk-data" mount_path = "/data" } } volume { name = "rustdesk-data" host_path { path = local.rustdesk_path } } } } } } resource "kubernetes_service" "rustdesk_tcp_ports" { metadata { name = "rustdesk-tcp-ports" namespace = kubernetes_namespace.rustdesk.metadata[0].name } spec { selector = { app = "rustdesk-app" } port { name = "tcp-port-1" port = 21115 target_port = 21115 } port { name = "tcp-port-2" port = 21116 target_port = 21116 } port { name = "tcp-port-3" port = 21117 target_port = 21117 } type = "LoadBalancer" } } resource "kubernetes_service" "rustdesk_udp_ports" { metadata { name = "rustdesk-udp-ports" namespace = kubernetes_namespace.rustdesk.metadata[0].name } spec { selector = { app = "rustdesk-app" } port { name = "udp-port-1" port = 21116 target_port = 21116 protocol = "UDP" } type = "LoadBalancer" } }