我在我的应用程序中使用go-micro,目前我使用consul进行本地开发,但是当我将我的服务部署到登台和生产环境中时,我使用的是Kubernetes。我读到过关于Telepresence1的文章,它基本上是一个双代理,允许您访问对Kubernetes服务的依赖。所以我试着使用网真。此本地代码是使用网真部署的,使用测试命名空间创建新的部署,并允许其访问同一群集中不同命名空间中的另一个服务。然而,我的服务有这样的错误:
2019/01/29 13:11:18 stat
/var/run/secrets/kubernetes.io/serviceaccount: no such file or direct这有点奇怪,因为当我的服务不需要在Kubernetes集群中有任何依赖时,我可以使用相同的方法。另外,我在Google Cloud上使用GKE,每个名称空间都使用RBAC。
发布于 2019-02-08 15:07:28
这是因为,默认情况下,带有kubernetes的go micro将尝试找到能够在集群中部署应用程序所需的默认服务帐户。仅当我们在新部署模式中使用网真时,此选项才适用。因为Telepresence将创建一个新部署来打开代理连接,以便我们能够访问群集的所有资源。
我设法使用网真和go-micro来运行我的代码,我所要做的就是创建:
sudo mkdir -p /var/run/secrets/kubernetes.io/然后使用symlink:
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
https://stackoverflow.com/questions/54454510
复制相似问题