在 Kubernetes 集群上将密钥文件与应用程序 运行 一起使用

Use Key File with Application Running on Kubernetes Cluster

我正在尝试在我的 Kubernetes 应用程序中使用一个密钥文件,但我似乎无法在任何地方找到这方面的示例。我想在我的 NodeJS 后端使用 Firebase 身份验证。当 运行 我在本地应用程序时,我使用以下

admin.initializeApp({
  credential: admin.credential.cert(SERVICE_ACCOUNT_KEY_PATH),
});

我最初的想法是从像

这样的密钥文件创建一个secret
$ gcloud container clusters get-credentials my-cluster --zone us-central1-c --project my-project
$ kubectl create secret generic service-account-key \
    --from-file=${SERVICE_ACCOUNT_KEY_PATH}

但是,由于我正在创建一个 secret,因此我无法将我的 SERVICE_ACCOUNT_KEY_PATH 设置为 运行 我在 Kubernetes 容器中的应用程序。在 Kubernetes 中执行此操作的正确方法是什么?

您可以将 serviceaccount 文件保存在 secret 中,并将 secret 装载到部署卷中。

因此部署的卷可以访问秘密,并且您的 pod 可以访问它。

例如:

apiVersion: v1
kind: Deployment
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: nginx
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

您可以查看:

https://kubernetes.io/docs/concepts/configuration/secret/#use-case-pod-with-ssh-keys

另一个例子:https://kubernetes.io/docs/concepts/configuration/secret/#use-case-dotfiles-in-a-secret-volume

所以基本的想法是将秘密装载到部署卷中,代码将使用它。