pubsub.NewClient 方法卡在 GKE golang
Posted
技术标签:
【中文标题】pubsub.NewClient 方法卡在 GKE golang【英文标题】:pubsub.NewClient method stuck on GKE golang 【发布时间】:2018-03-19 00:56:52 【问题描述】:我正在开发一个使用 Google Pub/Sub 客户端库的 golang 应用。我正在使用 Google 容器引擎进行部署。我按照以下步骤进行部署 -
-
使用
CGO_ENABLED=0 GOOS=linux go build -o bin/app app.go
构建 golang 二进制文件
使用如下所示的 dockerfile 构建 docker 映像。
创建 Kubernetes 部署。
Dockerfile -
FROM scratch
ADD bin/app /
CMD ["/app"]
应用程序启动正常,我可以看到一些初始调试日志。但是,当我尝试使用client, err := pubsub.NewClient(ctx, projectId)
实例化发布/订阅客户端时,方法调用永远不会返回。我没有看到此语句之后立即打印的日志消息。
我在 GKE 集群上启用了“Cloud Pub/Sub”权限。此外,该应用程序在我的本地计算机上运行没有任何问题。
可能是什么问题?
【问题讨论】:
永不返回?没有错? @MIkCode 是的,该函数永远不会返回。如果我在那一行之后写fmt.Println("here")
,“这里”永远不会打印。没有错。
【参考方案1】:
好的,我终于找到了问题及其解决方案。我的图像不包含发布/订阅客户端(当然还有许多其他库)进行通信所需的任何 SSL 证书。
将我本地机器的 /etc/ssl/certs/ca-certificates.crt
文件添加到 docker 镜像的 /etc/ssl/certs/
位置解决了这个问题。
codeship 的这个很棒的 post 是我学习这个解决方案的地方。
【讨论】:
非常感谢您解决这个问题 - 为我节省了几个小时!以上是关于pubsub.NewClient 方法卡在 GKE golang的主要内容,如果未能解决你的问题,请参考以下文章