Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何解决在GCP上使用Pubsub时身份验证范围不足的问题_Google Cloud Platform_Google Kubernetes Engine_Publish Subscribe - Fatal编程技术网

Google cloud platform 如何解决在GCP上使用Pubsub时身份验证范围不足的问题

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

我正在尝试构建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.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引擎上运行:

  • 切换到我的项目进行Pubsub测试后登录云Shell
  • Git克隆了我在Eclipse中测试的程序
  • 将mypubsub.json文件移动到/home/my_user_id下
  • 导出GOOGLE_应用程序_凭据=“/home/my_user_id/mp6key.json”
  • 运行“mvn清理包”以构建miscroservice程序
  • 运行“docker build”创建图像文件
  • 运行“docker push”将图像文件推送到gcr.io repo
  • 运行“kubectl create”创建部署并公开服务
  • 一旦部署并公开了这两个微服务,当我尝试在浏览器中访问它们时,发布消息的微服务在从数据库检索数据并处理数据时运行良好,然后在尝试访问GCP Pubsub API以发布消息时失败,出现上述错误


    是否有人可以提供一个提示,说明如何检查以解决问题?

    问题已通过以下指南解决:

    简单地说,解决方案是在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上重新运行我的服务,但仍然存在相同的问题。。。附言:我从我的问题中删除了与虚拟机相关的部分,以免混淆其他人。