小编Jam*_*ams的帖子

使用 Workload Identity 从 GKE 向 Google Cloud Firestore 进行身份验证

我正在尝试编写一个简单的后端来访问我的 Google Cloud Firestore,它位于 Google Kubernetes Engine 中。在我的本地,我使用以下代码对 Firestore 进行身份验证,如 Google 文档中所述。

if (process.env.NODE_ENV !== 'production') {
  const result = require('dotenv').config()
  //Additional error handling here
}
Run Code Online (Sandbox Code Playgroud)

这会提取 GOOGLE_APPLICATION_CREDENTIALS 环境变量,并使用我google-application-credentals.json通过创建具有该角色的服务帐户时获得的my 来填充它"Cloud Datastore User"

所以,在本地,我的代码运行良好。我可以到达我的 Firestore 并执行我需要执行的所有操作。然而,一旦我部署到GKE,问题就出现了。

我按照此Google 文档为我的集群设置了工作负载身份,我创建了一个部署,并通过运行以下命令验证所有 Pod 是否都使用正确的 IAM 服务帐户:

kubectl exec -it POD_NAME -c CONTAINER_NAME -n NAMESPACE sh
> gcloud auth list
Run Code Online (Sandbox Code Playgroud)

我从文档中得到的印象是,只要上述内容成立,我的服务就会处理身份验证。我真的不确定为什么,但我的 Firestore() 实例的行为就好像它没有访问 Firestore 所需的凭据。

如果有帮助的话,下面是我的实例声明和实现:

kubectl exec -it POD_NAME -c CONTAINER_NAME -n NAMESPACE sh
> gcloud auth list
Run Code Online (Sandbox Code Playgroud)

更新: …

node.js kubernetes google-kubernetes-engine google-iam google-cloud-firestore

7
推荐指数
1
解决办法
3916
查看次数