在 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
所以基本的想法是将秘密装载到部署卷中,代码将使用它。
我正在尝试在我的 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
所以基本的想法是将秘密装载到部署卷中,代码将使用它。