pubsub.NewClient 方法卡在 GKE golang 上

pubsub.NewClient method stuck on GKE golang

我正在开发一个使用 Google Pub/Sub 客户端库的 golang 应用程序。我正在使用 Google 容器引擎进行部署。我按照以下步骤进行部署 -

  1. 使用 CGO_ENABLED=0 GOOS=linux go build -o bin/app app.go
  2. 构建 golang 二进制文件
  3. 使用如下所示的 docker 文件构建 docker 图像。
  4. 创建 kubernetes 部署。

Dockerfile -

FROM scratch 
ADD bin/app /
CMD ["/app"]

应用程序启动正常,我可以看到一些初始调试日志。但是,当我尝试使用 client, err := pubsub.NewClient(ctx, projectId) 实例化 pub/sub 客户端时,方法调用从未 returns。我没有看到此语句后立即打印的日志消息。

我在我的 GKE 集群上启用了 "Cloud Pub/Sub" 权限。此外,该应用程序在我的本地计算机上运行没有任何问题。

可能是什么问题?

好的,所以我终于找到了问题及其解决方案。我的图像不包含 pub/sub 客户端(当然还有许多其他库)进行通信所需的任何 SSL 证书。

将我本地计算机的 /etc/ssl/certs/ca-certificates.crt 文件添加到 docker 图像的 /etc/ssl/certs/ 位置解决了问题。

在 codeship 上这个很棒的 post 是我学习这个解决方案的地方。