Docker 如何在云上运行Go请求gRPC服务器

Docker 如何在云上运行Go请求gRPC服务器,docker,go,google-cloud-platform,grpc,google-cloud-run,Docker,Go,Google Cloud Platform,Grpc,Google Cloud Run,我用go lang制作了gRPC服务器。 这是一个cafe cli应用程序 我将容器注册到GCR,并部署到云运行 #docker构建 docker build-t咖啡馆。 #套印图像 $docker tag cafe gcr.io/xxx/cafe $docker push gcr.io/xxx/cafe #部署到云运行 $gcloud测试版运行部署--项目xxx--映像gcr.io/xxx/cafe 请选择目标平台: [1] 云运行(完全管理) [2] 部署在谷歌云上的Anthos云运行 [

我用go lang制作了gRPC服务器。

这是一个cafe cli应用程序

我将容器注册到GCR,并部署到云运行

#docker构建
docker build-t咖啡馆。
#套印图像
$docker tag cafe gcr.io/xxx/cafe
$docker push gcr.io/xxx/cafe
#部署到云运行
$gcloud测试版运行部署--项目xxx--映像gcr.io/xxx/cafe
请选择目标平台:
[1] 云运行(完全管理)
[2] 部署在谷歌云上的Anthos云运行
[3] 针对部署在VMware上的Anthos的云运行
[4] 取消
请输入您的数字选择:1
要自己指定平台,请传递“---platform managed”。或者,要使其成为默认目标平台,请运行“gcloud config set run/platform managed”。
服务名称(咖啡厅):咖啡厅服务
是否允许对[咖啡馆服务]进行未经验证的调用(是/否)?N
将容器部署到项目[xxx]区域[us-central1]中的云运行服务[cafe service]
✓ 正在部署新服务。。。完成。
✓ 正在创建修订。。。
✓ 路由流量。。。
完成。
服务[cafe Service]修订版[cafe-Service-00001-pal]已部署并发布
服务于100%的流量https://cafe-service-xxx-uc.a.run.app
如何请求此gRPC服务器?
我尝试了以下方法

$curl-H\
“授权:持有人(gcloud auth打印身份令牌)”\
https://cafe-service-xxx-uc.a.run.app
401未经授权
错误:未经授权
您的客户端没有访问请求的URL的权限
/
。 $grpcurl-纯文本咖啡馆服务xxx uc.a.run.app:443列表 未能拨打目标主机“咖啡厅服务xxx uc.a.run.app:443”:超出上下文截止日期 $grpcurl-授权(gcloud auth打印身份令牌)-明文咖啡馆服务xxx uc.a.run.app:443列表 未能拨打目标主机“咖啡厅服务xxx uc.a.run.app:443”:超出上下文截止日期

我必须做什么?

首先要做的是创建一个新的服务并允许未经验证的:

“允许对[](y/N)进行未经验证的调用?y”

第二,如果您试图使用auth访问gRPC,请检查:


首先要尝试的是创建一个新的服务并允许未经验证的:

“允许对[](y/N)进行未经验证的调用?y”

第二,如果您试图使用auth访问gRPC,请检查:


curl命令中的授权标头错误。gcloud命令之前缺少一个
$
。改用这个:

curl -H \
  "Authorization: Bearer $(gcloud auth print-identity-token)" \
  https://cafe-service-xxx-uc.a.run.app

curl命令中的授权标头错误。gcloud命令之前缺少一个
$
。改用这个:

curl -H \
  "Authorization: Bearer $(gcloud auth print-identity-token)" \
  https://cafe-service-xxx-uc.a.run.app

这是一元流吗?您是否将云运行调用者角色附加到要为其生成标识令牌的IAM成员(服务帐户)上?使用标志
--允许未经身份验证的
部署您的服务
$
您忘记了
周围的
@guillaumeblaquiere,这是不需要的,因为此处和显式身份验证令牌被传递以作为用户的Google帐户进行身份验证。@AhmetB Google你是对的,我没有看到这一点。是的,美元被遗忘了。这是一元流吗?您是否将云运行调用者角色附加到要为其生成标识令牌的IAM成员(服务帐户)上?使用标志
--允许未经身份验证的
部署您的服务
$
您忘记了
周围的
@guillaumeblaquiere,这是不需要的,因为此处和显式身份验证令牌被传递以作为用户的Google帐户进行身份验证。@AhmetB Google你是对的,我没有看到这一点。是的,美元已经被忘记了。因为我用的是fish terminal,所以它没有丢失。如果你用的是fish terminal,你需要避开引号
curl-H \“Authorization:Bearer”(gcloud auth print identity token)
因为我使用了fish terminal,所以它没有丢失。如果您使用的是fish terminal,则需要转义引号<代码>curl-H \“授权:持有者”(gcloud auth打印身份令牌)