如何将 k8s 服务帐户令牌作为环境变量挂载?

如何将 k8s 服务帐户令牌作为环境变量挂载?

当您将服务帐户与 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"
      }
    }
  }
  ...
}

相关内容