【发布时间】:2020-04-28 16:23:52
【问题描述】:
我通过 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
我必须做什么?
【问题讨论】:
-
这是一元流吗?您是否将 Cloud Run Invoker 角色附加到要为其生成身份令牌的 IAM 成员(服务帐号)?
-
使用标志
--allow-unauthenticated部署您的服务 -
您在
()周围忘记了$。 -
-
@AhmetB-Google 你说得对,我没有看到这个。是的,$ 已被遗忘。
标签: docker go google-cloud-platform grpc google-cloud-run