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

如何从Helm的values.yaml传递Shell命令至deployment.yaml

正确传递Kubernetes容器命令的Helm配置方法

问题根源

你当前在values.yaml里把命令写成带方括号的字符串"[/bin/sh -c /app/entrypoint-prod.sh]",但Kubernetes的command字段要求是字符串数组类型,直接传递这种字符串会被当成单个命令执行,必然触发报错。

正确配置方式

1. 修改values.yaml

把command_to_run定义为原生字符串数组,而非带括号的字符串:

api:
  command_to_run:
    - /bin/sh
    - -c
    - /app/entrypoint-prod.sh

2. 调整deployment.yaml中的模板渲染

使用toYaml函数将数组正确渲染为Kubernetes期望的格式,同时保证缩进对齐:

spec:
  containers:
    - name: your-app-container
      command: {{ .Values.api.command_to_run | toYaml | nindent 8 }}

注:nindent 8的数字需根据你deployment文件的层级调整,确保渲染后的数组缩进和其他配置项一致。

额外说明

  • 如果你的Docker镜像已经设置了ENTRYPOINT,其实无需在Kubernetes里指定command,除非你要覆盖镜像的默认启动逻辑。
  • 若要保留镜像的ENTRYPOINT,仅传递启动参数,应该用Kubernetes的args字段替代command,配置逻辑和上述一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:00:54