随着公司全球化战略的布局,业务呈点状分布在亚太、美东、欧洲等多个地域,云原生kubevela在跨地域多集群管控方面也遇到网络上的互通问题。
在公司网络规划上只允许一个区域的一个VPC跟另一个区域的一个VPC打通,同区域不同机房的网络都可以打通的网络架构基础上,由于一个区域可能有多个业务,业务的k8s分布在不同云厂商或机房,要让kubevela管理分布在各个地域机房的K8s集群,需要引入代理。
kubevela作为管控集群,需要管控分布在全球多个机房的k8s集群。考虑到成本计算的问题,以及业务的加入退出问题,我们在每个区域部署一个代理集群,在代理集群上部署四层代理Nginx,通过四层代理将kubevela发起的kubenetates api请求转发给目标k8s集群。
kubevela访问业务集群,是访问api-server,(client-go)通过kubeconfig new一个clinet去访问k8s的api。因此是需要使用https协议的,并且client会从kubeconfig里面获取集群的域名和ssl证书发起请求,kubeconfig是我们给kubevela添加业务集群的时候传给kubevela的。