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

多环境Helm Chart共享Deployment.yaml模板配置方案可行性问询

Helm多环境Deployment模板整合方案

这种写法完全可行,借助Helm的模板条件渲染能力,就能把不同环境的Deployment策略逻辑整合到同一个模板文件中,通过环境专属的values文件传递配置参数即可。

1. 环境专属values文件配置

  • values-dev.yaml(RollingUpdate策略):
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 1
    maxUnavailable: 0
  • values-local.yaml(Recreate策略):
strategy:
  type: Recreate

2. 统一的Deployment模板写法

在templates/deployment.yaml中,通过条件判断渲染对应策略的配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-app
spec:
  replicas: {{ .Values.replicas | default 2 }}
  # 策略配置部分
  strategy:
    type: {{ .Values.strategy.type }}
    {{- if eq .Values.strategy.type "RollingUpdate" }}
    rollingUpdate:
      maxSurge: {{ .Values.strategy.rollingUpdate.maxSurge }}
      maxUnavailable: {{ .Values.strategy.rollingUpdate.maxUnavailable }}
    {{- end }}
  selector:
    matchLabels:
      app: {{ .Release.Name }}-app
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}-app
    spec:
      containers:
      - name: app-container
        image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
        ports:
        - containerPort: {{ .Values.containerPort }}

3. 部署验证

  • 部署dev环境:
helm install my-app . -f values-dev.yaml

渲染后的Deployment会包含完整的RollingUpdate策略配置。

  • 部署local环境:
helm install my-app . -f values-local.yaml

渲染后的Deployment仅保留type: Recreate,不会出现rollingUpdate字段,符合需求。

额外优化

可以在根目录的values.yaml中设置默认策略(比如默认用RollingUpdate),这样未指定环境values文件时会使用默认配置,增强模板的鲁棒性:

# values.yaml默认配置
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 25%
    maxUnavailable: 25%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:48:19