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

如何将Spring Boot的application.yml转为K8s的values.yaml并配置下划线参数?

将Spring Boot配置转换为Kubernetes values.yaml的方案

一、常规YAML层级写法

直接沿用本地application.yml的层级结构,在values.yaml中定义:

backbase:
  communication:
    channels:
      email:
        "0": email-low-priority
        "1-6": email-high-priority
        "7": email-highest-priority
      sms:
        "0": sms-low-priority
        "1-6": sms-high-priority
        "7": sms-highest-priority

这种写法和本地配置完全对应,Spring Boot的@ConfigurationProperties(prefix = "backbase.communication")可以直接绑定到该配置,无需额外转换。

二、下划线形式的配置写法

Spring Boot支持自动将下划线分隔的配置键转换为点分隔的层级结构(同时兼容大小写转换),你可以按以下方式配置:

1. values.yaml中的下划线格式定义

backbase_communication_channels_email_0: email-low-priority
backbase_communication_channels_email_1-6: email-high-priority
backbase_communication_channels_email_7: email-highest-priority
backbase_communication_channels_sms_0: sms-low-priority
backbase_communication_channels_sms_1-6: sms-high-priority
backbase_communication_channels_sms_7: sms-highest-priority

2. 让应用识别下划线配置的两种方式

方式一:通过环境变量传递

在Helm Deployment模板中,将values中的配置转换为大写环境变量(Spring Boot自动处理下划线转点、大小写转换):

spec:
  containers:
    - name: {{ .Chart.Name }}
      env:
        - name: BACKBASE_COMMUNICATION_CHANNELS_EMAIL_0
          value: {{ .Values.backbase_communication_channels_email_0 }}
        - name: BACKBASE_COMMUNICATION_CHANNELS_EMAIL_1-6
          value: {{ .Values.backbase_communication_channels_email_1-6 }}
        - name: BACKBASE_COMMUNICATION_CHANNELS_EMAIL_7
          value: {{ .Values.backbase_communication_channels_email_7 }}
        - name: BACKBASE_COMMUNICATION_CHANNELS_SMS_0
          value: {{ .Values.backbase_communication_channels_sms_0 }}
        - name: BACKBASE_COMMUNICATION_CHANNELS_SMS_1-6
          value: {{ .Values.backbase_communication_channels_sms_1-6 }}
        - name: BACKBASE_COMMUNICATION_CHANNELS_SMS_7
          value: {{ .Values.backbase_communication_channels_sms_7 }}

方式二:通过ConfigMap传递

将下划线格式的配置转换为Spring Boot可识别的properties格式,写入ConfigMap后挂载到应用:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-app-config
data:
  application.properties: |
    backbase.communication.channels.email.0={{ .Values.backbase_communication_channels_email_0 }}
    backbase.communication.channels.email.1-6={{ .Values.backbase_communication_channels_email_1-6 }}
    backbase.communication.channels.email.7={{ .Values.backbase_communication_channels_email_7 }}
    backbase.communication.channels.sms.0={{ .Values.backbase_communication_channels_sms_0 }}
    backbase.communication.channels.sms.1-6={{ .Values.backbase_communication_channels_sms_1-6 }}
    backbase.communication.channels.sms.7={{ .Values.backbase_communication_channels_sms_7 }}

然后在Deployment中挂载该ConfigMap到Spring Boot的配置目录(如/config),应用启动时会自动加载这些配置。

三、核心注意事项

  • 对于1-6这类包含特殊字符的键,无论哪种写法都要保持字符串格式,Spring Boot的Range<Integer>类型会自动解析该范围值。
  • 使用下划线形式时,需严格按照层级拆分:backbase.communication.channels.email.0 → backbase_communication_channels_email_0,确保每个层级用下划线分隔。
  • 若使用Spring Boot专属Helm Chart(如官方的spring-boot-chart),部分Chart会自动将values中的YAML层级转换为应用可识别的配置,无需手动转下划线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:22:05