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

如何结合Helm与Kustomize部署微服务?求目录结构示例

Helm与Kustomize协同部署微服务的实现方案及目录示例

Helm和Kustomize的协同核心是结合Helm的模板复用能力与Kustomize的增量定制优势,以下是两种主流落地方式:

方式一:Helm渲染YAML后,用Kustomize做定制化补丁

这种方式适合已有成熟Helm Chart,需要针对不同环境做轻量修改的场景,流程是先通过Helm生成基础YAML,再用Kustomize叠加定制规则。

实现步骤

  1. 准备微服务的Helm Chart:可以自行编写或基于开源Chart修改,包含Deployment、Service、Ingress等核心资源模板
  2. 用Helm将Chart渲染为原始YAML文件,输出到Kustomize的base目录
  3. 在Kustomize的overlay目录中定义补丁(patch)、配置替换等定制逻辑,针对不同环境(dev/test/prod)做差异化调整

目录结构示例

my-service-deploy/
├── charts/
│   └── my-service/          # 微服务的基础Helm Chart
│       ├── templates/
│       │   ├── deployment.yaml
│       │   ├── service.yaml
│       │   └── ingress.yaml
│       ├── Chart.yaml
│       └── values.yaml
└── kustomize/
    ├── base/                # Helm渲染后的基础YAML存放目录
    │   ├── deployment.yaml
    │   ├── service.yaml
    │   ├── ingress.yaml
    │   └── kustomization.yaml
    └── overlays/
        ├── dev/             # 开发环境定制
        │   ├── patch-replicas.yaml
        │   ├── patch-ingress-host.yaml
        │   └── kustomization.yaml
        └── prod/            # 生产环境定制
            ├── patch-replicas.yaml
            ├── patch-resources.yaml
            └── kustomization.yaml

关键命令示例

  • 渲染Helm Chart到Kustomize base目录:
helm template my-service ./charts/my-service --output-dir ./kustomize/base
  • 构建开发环境的最终部署YAML并应用:
kustomize build ./kustomize/overlays/dev | kubectl apply -f -

方式二:Kustomize直接引用Helm Chart作为Base(Kustomize 3.2+支持)

这种方式更简洁,无需提前渲染YAML,Kustomize会自动调用Helm渲染Chart,并叠加定制规则,适合需要直接整合Helm Chart到Kustomize工作流的场景。

实现步骤

  1. 在kustomization.yaml中配置helmChart字段,指定Helm Chart的来源(本地或远程仓库)、版本、自定义values等
  2. 添加Kustomize的补丁、配置替换等定制逻辑
  3. 直接用kustomize build生成最终部署YAML

目录结构示例

my-service-deploy/
└── kustomize/
    ├── base/
    │   └── kustomization.yaml  # 引用Helm Chart作为base
    └── overlays/
        ├── dev/
        │   ├── patch-ingress.yaml
        │   └── kustomization.yaml
        └── prod/
            ├── patch-resources.yaml
            └── kustomization.yaml

关键配置示例

  • base/kustomization.yaml内容:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: my-service
  repo: ./../charts  # 本地Chart目录,也可以是远程仓库URL如https://charts.example.com
  version: 0.1.0
  releaseName: my-service
  valuesFile: ./values-base.yaml  # 基础values配置
  • 构建生产环境部署YAML并应用:
kustomize build ./kustomize/overlays/prod | kubectl apply -f -

注意事项

  • 若使用远程Helm仓库,需提前确保Helm能访问该仓库(执行helm repo add)
  • Kustomize的补丁支持JSON Patch、Strategic Merge Patch等多种格式,根据需要选择
  • 优先保持Helm Chart的通用性,将环境差异化配置放到Kustomize的overlay中,便于维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:26:24