当您将服务帐户与 pod 关联时,它会被挂载到/var/run/secrets/kubernetes.io/
文件夹中,但我看不到将机密添加为环境变量的方法。问题是无法在 pod 中设置对服务帐户机密的引用,因为从服务帐户生成的机密具有自动生成的名称。因此您无法env.valueFrom.secretKeyRef
在 pod 配置中使用它。有没有办法在不手动创建机密的情况下做到这一点?
答案1
我还没有找到解决这个问题的原生 Kubernetes 方法,但我用 terraform 解决了这个问题。service_account 资源提供了默认_秘密_名称这使得我能够引用部署(或 pod)中的秘密。
resource "kubernetes_service_account_v1" "my_service_account" {
metadata {
name = "my-service-account"
}
}
...
resource "kubernetes_deployment_v1" "my_deployment" {
...
env {
name = "SOME_SECRET"
value_from {
secret_key_ref {
name = kubernetes_service_account_v1.my_service_account.default_secret_name
key = "token"
}
}
}
...
}