pubsub.NewClient 方法卡在 GKE golang 上
pubsub.NewClient method stuck on GKE golang
我正在开发一个使用 Google Pub/Sub 客户端库的 golang 应用程序。我正在使用 Google 容器引擎进行部署。我按照以下步骤进行部署 -
- 使用
CGO_ENABLED=0 GOOS=linux go build -o bin/app app.go
构建 golang 二进制文件
- 使用如下所示的 docker 文件构建 docker 图像。
- 创建 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 是我学习这个解决方案的地方。
我正在开发一个使用 Google Pub/Sub 客户端库的 golang 应用程序。我正在使用 Google 容器引擎进行部署。我按照以下步骤进行部署 -
- 使用
CGO_ENABLED=0 GOOS=linux go build -o bin/app app.go
构建 golang 二进制文件
- 使用如下所示的 docker 文件构建 docker 图像。
- 创建 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 是我学习这个解决方案的地方。