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

GitHub Actions中生成证书用于Azure K8s Helm部署失败求助

GitHub Actions生成证书用于Helm部署的问题解决方案

一、脚本指定仓库路径时文件的存储位置

  • GitHub Actions的所有步骤运行在同一个runner的工作区中,工作区路径由环境变量${GITHUB_WORKSPACE}指定,默认是仓库代码checkout后的根目录。
  • 如果脚本用相对路径(比如./certs/my-cert.pem),文件会直接保存在工作区的对应子目录;如果写的是包含仓库路径的绝对路径,实际也会映射到runner工作区的对应位置。
  • 同一个Job内的后续步骤可以直接通过该路径访问文件,比如用ls ${GITHUB_WORKSPACE}/certs验证文件是否生成成功。

二、临时保存文件满足部署需求的方法

因为所有步骤在同一个Job中,直接利用runner工作区即可,无需额外持久化手段,关键是确保后续Helm步骤能正确引用文件:

方法1:通过Helm --set-file注入证书内容

生成证书后,用--set-file参数将本地文件内容传入Chart的values:

# 先创建证书存储目录(避免路径不存在报错)
mkdir -p ./certs
# 生成证书示例脚本
openssl req -x509 -newkey rsa:4096 -keyout ./certs/my-key.pem -out ./certs/my-cert.pem -days 365 -nodes -subj "/CN=my-domain.com"

# Helm部署时注入证书内容
helm install my-release ./my-chart \
  --set-file tls.certificate=./certs/my-cert.pem \
  --set-file tls.privateKey=./certs/my-key.pem

在Helm Chart中,可通过{{ .Values.tls.certificate }}和{{ .Values.tls.privateKey }}引用内容,将其写入Secret或直接挂载到Pod。

方法2:先创建K8s Secret再挂载到Chart

直接用kubectl生成包含证书的Secret,再让Helm Chart挂载该Secret:

# 生成证书后创建K8s Secret
kubectl create secret tls my-tls-secret \
  --cert=./certs/my-cert.pem \
  --key=./certs/my-key.pem \
  --namespace=your-target-namespace

# Helm部署时指定使用该Secret(需Chart支持配置secret名称)
helm install my-release ./my-chart \
  --set tls.secretName=my-tls-secret

在Chart的deployment.yaml中配置挂载:

volumes:
  - name: tls-certs
    secret:
      secretName: {{ .Values.tls.secretName }}
containers:
  - name: my-app
    volumeMounts:
      - name: tls-certs
        mountPath: /etc/tls
        readOnly: true

三、部署失败的排查步骤

  1. 验证证书生成状态:在生成证书的步骤后添加ls -l ./certs命令,查看GitHub Actions日志确认文件存在且大小正常。
  2. 检查Helm参数正确性:确认文件路径无拼写错误,Helm步骤的工作目录默认是仓库根目录,相对路径需匹配。
  3. 查看K8s Pod事件:部署后执行kubectl describe pod <pod-name>,排查是否有MountVolume.SetUp failed等挂载错误,确认Secret是否存在、挂载路径是否合法。
  4. 检查应用日志:用kubectl logs <pod-name>查看应用启动日志,确认是否是证书读取权限不足、格式不兼容或路径不匹配。
  5. 核对Chart配置:确保Chart中Volume的挂载路径与应用预期的证书路径一致,Secret的键名(比如tls.crt/tls.key)符合K8s规范或应用要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:06:20