You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus未读取到Kubernetes环境变量问题求助

问题原因及解决办法

你的日志始终显示unknown,核心原因是ConfigMap中的数据没有被正确注入到Quarkus应用的运行环境中。Quarkus配置里的${ENVIRONMENT}读取的是容器的操作系统环境变量,但你只创建了ConfigMap,并没有将其内容映射为Pod的环境变量或挂载成应用可读取的文件,导致Quarkus fallback到默认值unknown。

解决方式一:将ConfigMap映射为Pod环境变量

需要在应用的Kubernetes Deployment配置中,把ConfigMap里的ENVIRONMENT字段映射为容器的环境变量。如果用Terraform管理Deployment,可以参考以下配置:

resource "kubernetes_deployment" "app" {
  metadata {
    name      = "my-quarkus-app"
    namespace = "test"
  }

  spec {
    replicas = 1
    selector {
      match_labels = {
        app = "my-quarkus-app"
      }
    }

    template {
      metadata {
        labels = {
          app = "my-quarkus-app"
        }
      }

      spec {
        container {
          image = "your-quarkus-app-image:tag"
          name  = "app-container"

          # 从ConfigMap映射ENVIRONMENT环境变量
          env {
            name = "ENVIRONMENT"
            value_from {
              config_map_key_ref {
                name = "config" # 对应你创建的ConfigMap名称
                key  = "ENVIRONMENT" # 对应ConfigMap中的data字段key
              }
            }
          }
        }
      }
    }
  }
}

部署完成后,可通过以下命令验证环境变量是否生效:

kubectl exec <你的Pod名称> -n test -- printenv ENVIRONMENT

解决方式二:将ConfigMap挂载为配置文件读取

如果不想用环境变量,也可以把ConfigMap挂载成文件,让Quarkus直接读取文件内容:

1. 修改Deployment配置挂载ConfigMap

resource "kubernetes_deployment" "app" {
  # 其他元数据和spec配置省略...

  template {
    spec {
      container {
        image = "your-quarkus-app-image:tag"
        name  = "app-container"

        # 挂载ConfigMap到容器内路径
        volume_mounts {
          name       = "config-volume"
          mount_path = "/app/config"
        }
      }

      # 定义要挂载的ConfigMap卷
      volumes {
        name = "config-volume"
        config_map {
          name = "config"
        }
      }
    }
  }
}

2. 修改application.properties读取文件内容

quarkus.log.json.additional-field."environment".value=${file:/app/config/ENVIRONMENT:unknown}

验证文件是否挂载成功:

kubectl exec <你的Pod名称> -n test -- cat /app/config/ENVIRONMENT

验证结果

完成上述任一配置后,重启Pod,查看日志即可看到environment字段显示正确的QA或LIVE值。

内容的提问来源于stack exchange,提问作者iAmAwfulAtProgramming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:22:30