如何通过Quarkus Helm扩展将application.properties转为K8s ConfigMap及环境变量
借助Quarkus Helm扩展从application.properties生成Kubernetes ConfigMap并使其可用
一、先启用必要扩展
确保你的项目已添加Quarkus Kubernetes和Helm扩展,用以下命令快速添加:
quarkus ext add kubernetes helm
二、从application.properties生成ConfigMap
通过在application.properties中添加配置,让Quarkus自动生成包含配置属性的ConfigMap,Helm扩展会自动将其纳入生成的Helm Chart:
基础配置(生成指定属性的ConfigMap)
# 开启ConfigMap自动生成 quarkus.kubernetes.configmap.generate=true # 指定生成的ConfigMap名称 quarkus.kubernetes.configmap.name=my-app-config # 可选:给ConfigMap添加标签 quarkus.kubernetes.configmap.labels.app=my-app quarkus.kubernetes.configmap.labels.env=prod # 可选:筛选要纳入ConfigMap的属性(支持通配符) # 示例:只包含app.*和db.*开头的属性 quarkus.kubernetes.configmap.from-properties=app.*,db.* # 可选:排除Quarkus自身的配置属性 quarkus.kubernetes.configmap.exclude=quarkus.*
额外添加字面量配置(可选)
如果需要手动添加不在application.properties里的配置项:
quarkus.kubernetes.configmap.from-literal=app.extra-config=custom-value
执行构建命令后,ConfigMap会生成到target/kubernetes/目录,同时Helm Chart会将其包含在target/kubernetes/helm/<应用名>/templates/路径中。
三、让配置在Kubernetes容器中可用
有两种常用方式让配置生效:挂载为配置文件,或注入为环境变量。
方式1:挂载ConfigMap为容器内的配置文件
Quarkus默认会扫描/config目录下的配置文件,通过以下配置让Kubernetes将ConfigMap挂载到该路径:
# 定义ConfigMap类型的Volume quarkus.kubernetes.volumes.configmap.my-app-config.name=my-app-config # 将Volume挂载到容器的/config目录 quarkus.kubernetes.volume-mounts.my-app-config.path=/config quarkus.kubernetes.volume-mounts.my-app-config.read-only=true
容器启动后,Quarkus会自动加载/config/application.properties(由ConfigMap生成)中的配置。
方式2:将ConfigMap属性注入为环境变量
可单独映射某个属性,或批量导入所有属性:
# 单独映射:将ConfigMap中的app.name转为APP_NAME环境变量 quarkus.kubernetes.env.vars.APP_NAME=configmap:my-app-config:app.name # 批量导入:将ConfigMap所有属性转为环境变量,添加前缀APP_ quarkus.kubernetes.env.from-configmap=my-app-config quarkus.kubernetes.env.from-configmap.prefix=APP_
应用代码中可通过@ConfigProperty(name = "APP_NAME")或直接读取环境变量获取值。
四、验证生成的资源
执行构建命令:
mvn clean package -Dquarkus.kubernetes.deploy=false
查看target/kubernetes/helm/<应用名>/templates/目录下的ConfigMap和Deployment YAML文件,确认配置已正确生成,部署Helm Chart后即可生效。
内容的提问来源于stack exchange,提问作者vvra
相关产品推荐
相关产品推荐

