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

Helm Secrets问题:上传TLS证书后文件内容为空

排查Pod挂载Secret后文件为空的问题

从你提供的配置来看,核心问题出在Secret模板中的base64编码处理和缩进方式上,导致Kubernetes无法正确解码Secret内容,最终挂载到Pod里的文件为空。下面一步步分析并给出修复方案:

1. 关键错误:Indent破坏了Base64编码

你的Secret模板里使用了indent 4来格式化输出,但这会给base64编码后的每一行添加4个前导空格:

data:
  connect.crt: |-
    {{ .Files.Get "connect.crt" | b64enc | indent 4 }}

Base64编码的字符串只能包含A-Za-z0-9+/=字符和可选的换行符,前导空格是无效字符。当Kubernetes尝试解码这些带空格的字符串时会失败,最终Secret中的内容为空,挂载到Pod的自然也是空文件。

2. 修复Secret模板

去掉indent 4,改用quote来确保编码后的字符串被正确作为单行值处理,或者使用nindent(注意是nindent,它会在第一行添加缩进,但不会给每一行内容加前导空格)。推荐的写法如下:

方式一:单行字符串(更简洁)

apiVersion: v1
kind: Secret
metadata:
  name: "{{ .Values.secret_certs }}"
  labels:
    app: {{ template "connect-mw.name" . }}
    chart: {{ template "connect-mw.chart" . }}
    draft: {{ .Values.draft | default "draft-app" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  connect.crt: {{ .Files.Get "connect.crt" | b64enc | quote }}
  connect.key: {{ .Files.Get "connect.key" | b64enc | quote }}

方式二:保留多行格式(如果base64编码有自然换行)

如果你希望编码后的内容保持多行格式,使用nindent 4(它会在整个块的开头添加4个空格,而不是每一行内容):

data:
  connect.crt: |-
    {{ .Files.Get "connect.crt" | b64enc | nindent 4 }}
  connect.key: |-
    {{ .Files.Get "connect.key" | b64enc | nindent 4 }}

nindent和indent的区别是:indent会给每一行内容都添加缩进,而nindent只会在第一行之前添加缩进,后续行保持原格式,这样不会破坏base64编码的有效性。

3. 验证修复效果

  • 先使用helm template命令渲染模板,检查生成的Secret YAML中data字段的内容是否是正确的无空格base64字符串:
    helm template ./connect-mw
    
  • 部署后,检查集群中的Secret内容:
    kubectl get secret {{ .Values.secret_certs }} -o yaml
    
    确认connect.crt和connect.key的base64字符串没有前导空格。
  • 进入Pod验证挂载的文件:
    kubectl exec -it <pod-name> -- cat /etc/ssl/connect.crt
    
    应该能看到正确的证书内容。

其他排查点(如果上述修复后仍有问题)

  • 确认本地的connect.crt和connect.key文件确实有内容,不是空文件。
  • 检查Deployment中的volume和volumeMounts的名称是否匹配:你的配置中两者都是{{template "connect-mw.name" .}},这部分是正确的。
  • 确认Pod的SecurityContext没有限制文件读取权限:你的配置中runAsNonRoot等设置,如果容器用户没有/etc/ssl目录的读取权限,也可能导致无法访问文件,但这种情况通常会有日志报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:12:40