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

如何在Helm中保护Secret文件内的凭证信息?

Helm Chart配置问题解决方案

问题1:动态生成含敏感信息的config.yml并存储为Secret

完全可以通过Jinja2模板实现敏感字段的动态替换,无需对整个config.yml做Base64编码,步骤如下:

  • 在values.yaml中预留敏感字段占位(实际部署时通过--set或独立values文件传入敏感值):
appConfig:
  apiToken: ""
  apiCredentials: ""
  dbHost: "db.example.com"
  • 创建templates/config.yml.tpl模板文件,用Jinja语法填充动态值:
api_token: {{ .Values.appConfig.apiToken }}
api_credentials: {{ .Values.appConfig.apiCredentials }}
database:
  host: {{ .Values.appConfig.dbHost }}
  port: 5432
  • 在templates/secret.yaml中引用该模板,Helm会自动将渲染后的内容Base64编码存入Secret:
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-app-config
type: Opaque
data:
  config.yml: |-
    {{- .Files.Get "templates/config.yml.tpl" | nindent 4 }}

部署时传入敏感值:

helm install my-app ./chart --set appConfig.apiToken=xxx --set appConfig.apiCredentials=yyy

问题2:遍历目录生成pipelines.yml并存储为Secret

常规的.Files循环可以在Secret的>-文本块中正常生效,实现方式如下:

  • 将自定义处理规则文件放在Chart的files/pipelines/目录下(比如rule1.yml、rule2.yml)
  • 在templates/secret.yaml中编写模板,遍历目录文件生成目标结构:
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-pipelines-config
type: Opaque
data:
  pipelines.yml: |-
    pipelines:
    {{- range $path, $content := .Files.Glob "files/pipelines/*.yml" }}
    {{- $ruleId := trimSuffix ".yml" (base $path) }}
    - id: {{ $ruleId }}
      config:
        {{- $content | nindent 8 }}
    {{- end }}

说明:

  • .Files.Glob用于匹配目标目录下的所有yml文件
  • base $path提取文件名,trimSuffix移除后缀得到规则ID
  • 直接将文件内容缩进后嵌入到config节点下,保持原有YAML结构
  • Helm会自动完成最终内容的Base64编码,无需手动处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:15:23