Google cloud platform 如何解决在GCP上使用Pubsub时身份验证范围不足的问题
我正在尝试构建2个微服务(在JavaSpringBoot中),以使用GCPPub/Sub相互通信 首先,我测试了在本地笔记本电脑()中作为eXecuted运行的程序(在Eclipse中),即一个微服务发布消息,另一个使用GCP中创建的主题/订户(以及凭据私钥:mypubsub.json)成功接收消息 然后,我部署了相同的程序来运行GCP,并得到以下错误:Google cloud platform 如何解决在GCP上使用Pubsub时身份验证范围不足的问题,google-cloud-platform,google-kubernetes-engine,publish-subscribe,Google Cloud Platform,Google Kubernetes Engine,Publish Subscribe,我正在尝试构建2个微服务(在JavaSpringBoot中),以使用GCPPub/Sub相互通信 首先,我测试了在本地笔记本电脑()中作为eXecuted运行的程序(在Eclipse中),即一个微服务发布消息,另一个使用GCP中创建的主题/订户(以及凭据私钥:mypubsub.json)成功接收消息 然后,我部署了相同的程序来运行GCP,并得到以下错误: - 2020-03-21 15:53:16.831 WARN 1 --- [bsub-publisher2] o.s.c.g.p.c.p.Pu
- 2020-03-21 15:53:16.831 WARN 1 --- [bsub-publisher2] o.s.c.g.p.c.p.PubSubPublisherTemplate : Publishing to json-payload-sample-topic topic failed
- com.google.api.gax.rpc.PermissionDeniedException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Request had insufficient authentication scopes. at com.google.api.gax.rpc.ApiExceptionFactory
我如何部署程序(在容器中)以在GCP/Kubernetes引擎上运行:
是否有人可以提供一个提示,说明如何检查以解决问题?问题已通过以下指南解决: 简单地说,解决方案是在deployment.yaml中添加以下行以加载凭据密钥:
- name: google-cloud-key
secret:
secretName: pubsub-key
containers:
- name: my_container
image: gcr.io/my_image_file
volumeMounts:
- name: google-cloud-key
mountPath: /var/secrets/google
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /var/secrets/google/key.json
该问题已通过以下指南解决: 简单地说,解决方案是在deployment.yaml中添加以下行以加载凭据密钥:
- name: google-cloud-key
secret:
secretName: pubsub-key
containers:
- name: my_container
image: gcr.io/my_image_file
volumeMounts:
- name: google-cloud-key
mountPath: /var/secrets/google
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /var/secrets/google/key.json
编辑您的问题以澄清。你提到云外壳、计算引擎和Kubernetes。你在用什么?用哪一部分?您为容器正在使用的服务帐户分配了哪些角色?这与计算引擎无关。基本上,我使用Cloud Shell作为工具,将我的程序部署为在GCP上运行的容器(即使用Google Kubernetes引擎运行我的应用程序的容器,而不是云运行)。我将服务帐户指定为我的程序试图为其发布消息的主题的发布/订阅管理员。那你为什么这么说“我还试图停止VM实例,然后更新服务帐户”?”?你的问题需要在焦点和清晰度上有所改进。正如我所写的,我甚至无法重现你所做的,也无法找出你真正的问题是什么。再次阅读我的第一条评论,然后阅读此链接:@John:这是我的理解问题:我认为我必须创建一个VM实例,即使我在GCP上通过Contrainer(GKE)运行我的应用程序,因此我在谷歌上搜索了一个解决方案,即在停止VM实例后更新服务帐户以“允许完全访问所有云API”。在您最后的评论中,我意识到我的项目与计算引擎无关,因此可能根本不需要创建VM实例。我只是试图停止VM实例并在GCP上重新运行我的服务,但仍然存在相同的问题。。。我从我的问题中删除了与虚拟机相关的部分,以免混淆其他人。编辑你的问题以澄清。你提到云外壳、计算引擎和Kubernetes。你在用什么?用哪一部分?您为容器正在使用的服务帐户分配了哪些角色?这与计算引擎无关。基本上,我使用Cloud Shell作为工具,将我的程序部署为在GCP上运行的容器(即使用Google Kubernetes引擎运行我的应用程序的容器,而不是云运行)。我将服务帐户指定为我的程序试图为其发布消息的主题的发布/订阅管理员。那你为什么这么说“我还试图停止VM实例,然后更新服务帐户”?”?你的问题需要在焦点和清晰度上有所改进。正如我所写的,我甚至无法重现你所做的,也无法找出你真正的问题是什么。再次阅读我的第一条评论,然后阅读此链接:@John:这是我的理解问题:我认为我必须创建一个VM实例,即使我在GCP上通过Contrainer(GKE)运行我的应用程序,因此我在谷歌上搜索了一个解决方案,即在停止VM实例后更新服务帐户以“允许完全访问所有云API”。在您最后的评论中,我意识到我的项目与计算引擎无关,因此可能根本不需要创建VM实例。我只是试图停止VM实例并在GCP上重新运行我的服务,但仍然存在相同的问题。。。附言:我从我的问题中删除了与虚拟机相关的部分,以免混淆其他人。