resource "kubernetes_deployment_v1" "microservice" { depends_on = [ kubernetes_persistent_volume_v1.pv, kubernetes_persistent_volume_claim_v1.pvc ] metadata { name = var.microservice_name namespace = var.namespace labels = { app = var.microservice_name "com.breeze.project" = "Breezeai" } } spec { replicas = var.replicas selector { match_labels = { app = var.microservice_name } } strategy { type = "RollingUpdate" } template { metadata { labels = { app = var.microservice_name } annotations = { "checksum/config" = local.config_checksum "checksum/secret" = local.secret_checksum } } spec { container { name = var.microservice_name image = "${var.aws_account_number}.dkr.ecr.us-west-2.amazonaws.com/${var.client_name}/${var.env}/${var.microservice_name}:${var.tag}" image_pull_policy = "Always" port { container_port = var.port name = "http" } resources { requests = { cpu = var.min_cpu memory = var.min_mem } limits = { cpu = var.max_cpu memory = var.max_mem } } env_from { config_map_ref { name = var.config_name } } env_from { secret_ref { name = var.secret_name } } volume_mount { name = "data" mount_path = "/data" } } volume { name = "data" persistent_volume_claim { claim_name = var.pvc_name } } restart_policy = "Always" } } } } resource "kubernetes_service_v1" "microservice" { metadata { name = var.microservice_name namespace = var.namespace labels = { app = var.microservice_name } annotations = { app = var.microservice_name "com.breeze.env" = "development" "com.breeze.project" = "Breezeai" } } spec { selector = { app = var.microservice_name } port { name = "http" port = var.port target_port = var.port } type = "NodePort" } } resource "kubernetes_ingress_v1" "microservice" { metadata { name = "${var.microservice_name}-ing" namespace = var.namespace annotations = { "konghq.com/plugins" = "cors,add-security-headers" "konghq.com/strip-path" = "true" "plugins.konghq.com" = "jwt, cors" } } spec { ingress_class_name = "kong" rule { host = "${var.subdomain}.${var.environment_url}" http { path { path = var.env_context_path path_type = "ImplementationSpecific" backend { service { name = kubernetes_service_v1.microservice.metadata[0].name port { number = var.port } } } } } } } }