resource "kubernetes_config_map" "alertmanager" { metadata { name = "alertmanager-conf" namespace = kubernetes_namespace.prometheus.metadata[0].name labels = { name = "alertmanager-conf" } } data = { "alertmanager.yml" = local.alertmanager_config } } resource "kubernetes_deployment" "alertmanager" { metadata { name = "alertmanager" namespace = kubernetes_namespace.prometheus.metadata[0].name labels = { app = "alertmanager" } } spec { replicas = 1 selector { match_labels = { app = "alertmanager" } } template { metadata { labels = { app = "alertmanager" } annotations = { "checksum/config" = local.alertmanager_config_checksum } } spec { container { name = "alertmanager" image = "prom/alertmanager:${local.app_version}" args = [ "--config.file=/etc/alertmanager/alertmanager.yml", "--storage.path=/alertmanager" ] port { name = "http" container_port = 9093 } volume_mount { name = "alertmanager-config" mount_path = "/etc/alertmanager" } volume_mount { name = "alertmanager-storage" mount_path = "/alertmanager" } security_context { run_as_user = 1000 run_as_group = 1000 run_as_non_root = true allow_privilege_escalation = false } } volume { name = "alertmanager-config" config_map { name = kubernetes_config_map.alertmanager.metadata[0].name } } volume { name = "alertmanager-storage" host_path { path = local.alertmanager_folder type = "DirectoryOrCreate" } } } } } } resource "kubernetes_service" "alertmanager" { metadata { name = "alertmanager" namespace = kubernetes_namespace.prometheus.metadata[0].name labels = { app = "alertmanager" } } spec { selector = { app = "alertmanager" } type = "ClusterIP" port { name = "web" port = 9093 protocol = "TCP" target_port = "http" } } }