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

EKS集群引用AWS Secrets Manager密钥作为环境变量报错求助

EKS中环境变量引用Secrets Manager同步Secret报错的解决方法

错误原因

报错信息:

pods "domain-74bf89c79-" 被禁止:容器domain-container的环境变量DB_CONNECTION_USERNAME引用secret.secretName="dbsecret"不被允许,因为服务账号secret-manager-sa未引用该密钥

问题出在你的ServiceAccount secret-manager-sa 配置了kubernetes.io/enforce-mountable-secrets: "true"注解,该注解启用了Secret强制校验规则:Pod只能使用ServiceAccount显式声明引用的Secret,环境变量引用Secret的行为也受此规则约束。

解决步骤

1. 修改ServiceAccount,添加对目标Secret的引用

在ServiceAccount的secrets字段中添加dbsecret,明确授权该ServiceAccount可以使用这个Secret:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: secret-manager-sa
  namespace: dev
  annotations:
    eks.amazonaws.com/role-arn: "arn:aws:iam::1234567890:role/dev-secret-sa-role"
    kubernetes.io/enforce-mountable-secrets: "true"
secrets:
  - name: dbsecret

2. 应用配置并重启Deployment

执行以下命令更新ServiceAccount并重启Deployment,使配置生效:

kubectl apply -f <你的ServiceAccount配置文件路径> -n dev
kubectl rollout restart deployment domain -n dev

补充说明

  • kubernetes.io/enforce-mountable-secrets: "true"是Kubernetes的安全增强配置,限制Pod只能使用ServiceAccount授权的Secret,避免未授权的Secret访问。
  • 即使你已经通过CSI Driver将Secret挂载到Pod的文件系统,环境变量引用Secret的方式仍需遵守该校验规则,两者的权限控制逻辑是独立的。

内容的提问来源于stack exchange,提问作者andrea-anf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:16:17