如何请求在 Cloud Run 上运行的 Go 制作的 gRPC 服务器

我通过 go lang 制作了 gRPC 服务器。

https://github.com/takat0-h0rikosh1/grpc-with-go


这是一个 cafe-cli 应用程序。


我将容器注册到 GCR,并部署到 Cloud Run。


# docker build

docker build -t cafe .


# register image

$ docker tag cafe gcr.io/xxx/cafe

$ docker push gcr.io/xxx/cafe 


# deploy to cloud run

$ gcloud beta run deploy --project xxx --image gcr.io/xxx/cafe

Please choose a target platform:

 [1] Cloud Run (fully managed)

 [2] Cloud Run for Anthos deployed on Google Cloud

 [3] Cloud Run for Anthos deployed on VMware

 [4] cancel

Please enter your numeric choice:  1


To specify the platform yourself, pass `--platform managed`. Or, to make this the default target platform, run `gcloud config set run/platform managed`.


Service name (cafe):  cafe-service

Allow unauthenticated invocations to [cafe-service] (y/N)?  N


Deploying container to Cloud Run service [cafe-service] in project [xxx] region [us-central1]

✓ Deploying new service... Done.

  ✓ Creating Revision...

  ✓ Routing traffic...

Done.

Service [cafe-service] revision [cafe-service-00001-pal] has been deployed and

is serving 100 percent of traffic at https://cafe-service-xxx-uc.a.run.app

如何向这个 gRPC 服务器请求?

我尝试了以下。


$ curl -H \

  "Authorization: Bearer (gcloud auth print-identity-token)" \

  https://cafe-service-xxx-uc.a.run.app


<html><head>

<meta http-equiv="content-type" content="text/html;charset=utf-8">

<title>401 Unauthorized</title>

</head>

<body text=#000000 bgcolor=#ffffff>

<h1>Error: Unauthorized</h1>

<h2>Your client does not have permission to the requested URL <code>/</code>.</h2>

<h2></h2>

</body></html>


$ grpcurl -plaintext cafe-service-xxx-uc.a.run.app:443 list

Failed to dial target host "cafe-service-xxx-uc.a.run.app:443": context deadline exceeded


$ grpcurl -authority (gcloud auth print-identity-token) -plaintext cafe-service-xxx-uc.a.run.app:443 list

Failed to dial target host "cafe-service-xxx-uc.a.run.app:443": context deadline exceeded

我必须做什么?


HUX布斯
浏览 139回答 2
2回答

素胚勾勒不出你

首先要尝试的是创建一个新服务并允许未经身份验证:“允许未经身份验证的调用 [] (y/N)?y”其次,如果您尝试使用 auth 访问 gRPC,请检查:https://medium.com/google-cloud/grpc-authentication-with-cloud-run-72e4d6c44739

慕斯709654

您的 curl 命令中的 Authorization 标头是错误的。它$在 gcloud 命令之前缺少 a 。改用这个:curl -H \&nbsp; "Authorization: Bearer $(gcloud auth print-identity-token)" \&nbsp; https://cafe-service-xxx-uc.a.run.app
打开App,查看更多内容
随时随地看视频慕课网APP