如何通过GitHub Actions将GitHub Secret注入Kubernetes YAML文件
如何在GitHub Actions中注入密钥到Kubernetes Secret清单并部署到AKS
你可以通过两种常用方式将GitHub存储的密钥注入到Kubernetes Secret清单,再部署到AKS集群:
方法一:直接修改YAML文件(简单直接)
利用Shell命令将GitHub Secret编码为base64(Kubernetes Secret的data字段要求base64格式),再替换清单文件中的占位符。
修改工作流文件
在actions/checkout步骤之后、Deploys application步骤之前,添加以下步骤:
- name: 注入API密钥到Secret清单 run: | # 将GitHub Secret编码为base64(-n避免添加换行符) ENCODED_KEY=$(echo -n "${{ secrets.API_KEY_DEV_QA }}" | base64) # 替换Secret清单中的api-key字段(请替换为你的Secret清单文件名) sed -i "s/api-key: /api-key: $ENCODED_KEY/" ${{ env.DEPLOYMENT_MANIFEST_PATH }}/secret.yaml
说明
- 确保你的Secret清单文件(比如
secret.yaml)在kustomize/overlay/uat目录下 sed命令会匹配api-key:这一行,替换为带编码后密钥的内容
方法二:使用Kustomize SecretGenerator(推荐,符合Kustomize最佳实践)
如果你已经在用Kustomize管理清单,用SecretGenerator可以避免手动修改YAML,直接从环境变量注入密钥,更适合多环境管理。
1. 配置Kustomize的SecretGenerator
在kustomize/overlay/uat目录下的kustomization.yaml中添加以下内容:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization # 生成Secret,替代原有的Secret清单 secretGenerator: - name: datadog-api-key type: Opaque literals: - api-key=${API_KEY}
注意:如果原来的目录下已有
secret.yaml,可以删除它,因为SecretGenerator会自动生成对应的Secret资源。
2. 修改工作流文件
在actions/checkout步骤之后、Deploys application步骤之前,添加设置环境变量的步骤:
- name: 设置API密钥环境变量 run: echo "API_KEY=${{ secrets.API_KEY_DEV_QA }}" >> $GITHUB_ENV
原有的Deploys application步骤无需修改,因为Azure/k8s-deploy会自动处理Kustomize配置,渲染出包含密钥的Secret清单。
验证部署
部署完成后,你可以在AKS集群中执行以下命令验证Secret内容:
kubectl get secret datadog-api-key -o jsonpath='{.data.api-key}' | base64 --decode
输出应该和你存储在GitHub Secret中的API_KEY_DEV_QA一致。
内容的提问来源于stack exchange,提问作者DeirdreRodgers
相关产品推荐
相关产品推荐

