resource "kubernetes_service_account" "auth_exporter" { metadata { name = "auth-exporter-sa" namespace = var.namespace } } resource "kubernetes_config_map" "auth_exporter" { metadata { name = "auth-exporter-config" namespace = var.namespace } data = { "exporter.py" = local.exporter_script "requirements.txt" = local.requirements_txt } } resource "kubernetes_deployment" "auth_exporter" { metadata { name = "auth-exporter" namespace = var.namespace labels = { app = "auth-exporter" } } spec { replicas = 1 selector { match_labels = { app = "auth-exporter" } } template { metadata { labels = { app = "auth-exporter" } annotations = { "checksum/exporter" = local.exporter_checksum "checksum/requirements" = local.requirements_checksum } } spec { service_account_name = kubernetes_service_account.auth_exporter.metadata[0].name automount_service_account_token = false container { name = "auth-exporter" image = var.tag command = ["sh", "-c", join(" && ", local.commands)] port { container_port = 9100 name = "http-metrics" } volume_mount { name = "exporter-volume" mount_path = "/exporter" read_only = true } volume_mount { name = "workdir" mount_path = "/tmp" } volume_mount { name = "host-logs" mount_path = "/var/log" read_only = true } security_context { run_as_user = 0 run_as_group = 0 read_only_root_filesystem = true } } volume { name = "exporter-volume" config_map { name = kubernetes_config_map.auth_exporter.metadata[0].name } } volume { name = "workdir" host_path { path = local.workdir type = "DirectoryOrCreate" } } volume { name = "host-logs" host_path { path = "/var/log" type = "Directory" } } } } } } resource "kubernetes_service" "auth_exporter" { metadata { name = "auth-exporter" namespace = var.namespace labels = { app = "auth-exporter" } } spec { selector = { app = "auth-exporter" } port { port = 9100 target_port = 9100 protocol = "TCP" name = "http-metrics" } type = "ClusterIP" } }