我们的基础设施目前有2个Kubernetes集群,其中一个集群( Cluster -1)在另一个集群( Cluster -2)中创建pods。因为我们使用的是kubernetes1.7.x,所以我们能够做到这一点。
然而,在1.8版本中,Kubernetes增加了对RBAC的支持,因此我们不能再在新集群中创建pods。
我们已经添加了对服务帐户的支持,并确保正确设置了RoleBindings。但是主要的问题是service-account没有在集群之外传播(这是正确的)。集群2接收请求的用户称为'client',因此当我们添加一个带有'client‘的RoleBinding作为用户时,一切都正常工作。
这肯定不是正确的解决方案,因为现在任何与Kubernetes API服务器通信的集群都可以创建pod。
是否支持跨集群工作的RBAC?或者,有没有办法将服务信息传播到我们想要在其中创建pod的集群?
附注:我们的Kubernetes集群目前在GKE上。但是,我们希望这在所有Kubernetes-engine上都能工作。
发布于 2018-03-28 04:14:24
您的cluster-1SA使用kubecfg (对于cluster-2),它解析为用户"client“。解决这个问题的唯一方法是生成一个kubecfg (对于cluster-2),并为您的cluster-1SA关联一个身份(证书/令牌)。有很多方法可以做到这一点:https://kubernetes.io/docs/admin/authentication/
最简单的方法是在cluster-2中创建一个相同的SA,并在cluster-1中的kubecfg中使用它的令牌。仅将RBAC提供给该SA。
https://stackoverflow.com/questions/49519684
复制相似问题