pubsub.NewClient方法卡在GKE golang上

pubsub.NewClient方法卡在GKE golang上,go,google-cloud-platform,google-kubernetes-engine,google-cloud-pubsub,Go,Google Cloud Platform,Google Kubernetes Engine,Google Cloud Pubsub,我正在开发一个使用Google Pub/Sub客户端库的golang应用程序。我正在使用Google容器引擎进行部署。我按照以下步骤进行部署- 使用CGO\u ENABLED=0 GOOS=linux go Build-o bin/app app.go构建golang二进制文件 使用dockerfile构建docker映像,如下所示 创建kubernetes部署 Dockerfile- FROM scratch ADD bin/app / CMD ["/app"] 该应用程序启动良好,我可以

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

  • 使用
    CGO\u ENABLED=0 GOOS=linux go Build-o bin/app app.go构建golang二进制文件
  • 使用dockerfile构建docker映像,如下所示
  • 创建kubernetes部署
  • Dockerfile-

    FROM scratch 
    ADD bin/app /
    CMD ["/app"]
    
    该应用程序启动良好,我可以看到一些初始调试日志。但是,当我尝试使用
    客户机,err:=pubsub.NewClient(ctx,projectd)
    实例化发布/订阅客户机时,方法调用永远不会返回。我没有看到在这句话之后马上打印的日志消息

    我在GKE集群上启用了“云发布/订阅”权限。此外,该应用程序在我的本地计算机上运行时没有任何问题


    可能是什么问题

    好吧,我终于找到了问题和解决办法。我的映像不包含发布/订阅客户端(当然还有许多其他库)通信所需的任何SSL证书

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


    这是我在codeship上学到的解决方案。

    永不回头?没有错误?@MIkCode是,函数永远不会返回。如果我在那行后面写
    fmt.Println(“此处”)
    ,那么“此处”永远不会打印。没有错。非常感谢你弄明白了这一点-节省了我几个小时!