0

我正在为我的应用程序使用 go-micro,目前我正在使用 consul 进行本地开发,但是当我将我的服务部署到登台和生产环境时,我正在使用 Kubernetes。我读到了 Telepresence[1],它基本上是一个双重代理,允许您访问对 Kubernetes 服务的依赖。所以我尝试使用 Telepresence。此本地代码是使用 Telepresence 部署的,使用测试命名空间创建新部署,并允许它访问同一集群内不同命名空间中的另一个服务。但是我的服务有这种错误:

2019/01/29 13:11:18 stat
/var/run/secrets/kubernetes.io/serviceaccount: no such file or direct

这有点奇怪,因为当我的服务不需要在 Kubernetes 集群中有任何依赖关系时,我可以使用相同的方法。作为另一个说明,我在 Google Cloud 上使用 GKE,并为每个命名空间使用 RBAC。

[1] https://www.telepresence.io/

4

1 回答 1

0

这是因为,默认情况下,带有 kubernetes 的 go micro 将尝试找到能够在集群中部署应用程序所需的默认服务帐户。这仅适用于我们在新部署模式下使用 Telepresence。因为 Telepresence 将创建一个新部署来打开代理连接,以便我们能够访问集群的所有资源。

我设法使用带有 go-micro 的远程呈现运行我的代码,我应该做的就是创建:

sudo mkdir -p /var/run/secrets/kubernetes.io/

然后使用符号链接:

sudo ln -s $TELEPRESENCE_ROOT/var/run/secrets/kubernetes.io/serviceaccount/ /var/run/secrets/kubernetes.io

然后运行:

go main.go --selector=static --server_address=0.0.0.0:<port>

这里的静态标志很重要 [1]

参考资料: 1. https://github.com/micro/go-plugins/tree/master/selector/static

于 2019-02-08T07:07:27.857 回答