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

如何通过Kustomize ConfigMap Generator实现多环境CTRL_DB_IP覆盖

基于Kustomize实现多环境ConfigMap配置覆盖

针对多环境(dev/stg/prod)的ConfigMap差异化配置需求,我们可以通过Kustomize的ConfigMap Generator结合分层目录结构,实现通用配置复用与环境特定参数的覆盖。以下是具体实现方案:

目录结构

.
├── base
│   ├── application-ctr.properties
│   └── kustomization.yaml
└── overlays
    ├── dev
    │   ├── db-params.env
    │   └── kustomization.yaml
    ├── stg
    │   ├── db-params.env
    │   └── kustomization.yaml
    └── prod
        ├── db-params.env
        └── kustomization.yaml

基础层配置

base/application-ctr.properties

存放所有环境通用的配置内容,保留CTRL_DB_IP作为占位符:

spring.threads.virtual.enabled=true
server.shutdown=graceful
spring.banner.location=classpath:banner.txt
    
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.datasource.url=jdbc:mysql://${CTRL_DB_IP}:3306/scloud?serverTimezone=UTC

base/kustomization.yaml

通过ConfigMap Generator生成基础ConfigMap,引用通用配置文件:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

configMapGenerator:
- name: controller-application-properties-configmap
  namespace: controller
  files:
  - application-ctr.properties

各环境Kustomize配置

每个环境通过ConfigMap Generator替换CTRL_DB_IP参数,并用behavior: replace覆盖基础层的ConfigMap。

开发环境(dev)

overlays/dev/db-params.env

定义dev环境的数据库地址:

CTRL_DB_IP=dev-db.internal

overlays/dev/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
- ../../base

configMapGenerator:
- name: controller-application-properties-configmap
  namespace: controller
  behavior: replace
  files:
  - ../../base/application-ctr.properties
  envs:
  - db-params.env

测试环境(stg)

overlays/stg/db-params.env

CTRL_DB_IP=stg-db.internal

overlays/stg/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
- ../../base

configMapGenerator:
- name: controller-application-properties-configmap
  namespace: controller
  behavior: replace
  files:
  - ../../base/application-ctr.properties
  envs:
  - db-params.env

生产环境(prod)

overlays/prod/db-params.env

CTRL_DB_IP=prod-db.internal

overlays/prod/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
- ../../base

configMapGenerator:
- name: controller-application-properties-configmap
  namespace: controller
  behavior: replace
  files:
  - ../../base/application-ctr.properties
  envs:
  - db-params.env

生成与验证

生成环境清单

执行以下命令生成对应环境的最终Kubernetes清单:

# 生成dev环境清单
kustomize build overlays/dev

# 生成stg环境清单
kustomize build overlays/stg

# 生成prod环境清单
kustomize build overlays/prod

查看输出结果,可确认spring.datasource.url中的CTRL_DB_IP已被替换为对应环境的数据库地址。

直接部署到集群

将生成的清单直接应用到Kubernetes集群:

kustomize build overlays/prod | kubectl apply -f -

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:55:03