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

如何在Helm Chart中正确添加二进制Secret数据?

如何在Helm Chart中包含二进制Secret文件

我需要为一个依赖二进制Secret的服务创建Helm Chart,之前用kubectl导入密钥的命令是:

kubectl create secret generic my-secret --from-file=fileContainingBinaryData

尝试转换为Helm Chart时,我写了如下YAML模板:

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: my-secret
data:
  my-secret: |
    {{- .Files.Get "files/fileContainingBinaryData" | nindent 4 }}

但执行Helm安装时出现错误:

Error: INSTALLATION FAILED: YAML parse error on my-service/templates/my-secret.yaml: error converting YAML to JSON: yaml: invalid leading UTF-8 octet

这个错误确实是二进制数据导致的——YAML解析器会把data字段的内容当作UTF-8文本处理,但二进制文件包含非UTF-8字节,直接插入会触发解析失败。以下是正确的处理方式:

解决方案:用Base64编码二进制内容

Kubernetes的Secretdata字段要求内容是Base64编码的字符串,kubectl create secret命令会自动帮我们完成编码,但Helm模板需要手动处理。使用Helm的b64enc过滤器对二进制文件内容进行编码即可:

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: my-secret
data:
  my-secret: {{ .Files.Get "files/fileContainingBinaryData" | b64enc }}

说明

  • .Files.Get读取二进制文件的原始内容
  • b64enc过滤器将原始二进制数据转换为符合YAML规范的Base64字符串,避免UTF-8解析错误
  • 不需要用nindent或多行文本标记(|),因为编码后的内容是单行字符串,直接插入即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:07:34