文章转载:进击云原生
要点:
部署一个具备生产就绪所需所有依赖关系的Kubernetes集群需要数天时间。
如果不自动化这个过程,管理Kubernetes集群的浮动是非常困难的。
在多个集群提供商之间管理Kubernetes集群的浮动更加困难。
升级Kubernetes集群需要进行密集测试,以确保更改不会破坏任何功能。这不是像通常建议的那样按下“升级”按钮就够了。
管理一个Kubernetes集群很难,管理全球数百个Kubernetes集群又如何呢?
数百个Kubernetes集群,包含多个节点、服务、应用程序和负载均衡器。这就是我们在Qovery所做的:管理全球数百个Kubernetes生产集群,帮助16000多名开发者在AWS上部署应用。
运行和管理数百个Kubernetes集群需要什么?这就是本文分享的内容。
一些背景
有了Qovery,每个用户都可以在几秒钟内开始在AWS上部署应用程序。目标是将AWS转变为流畅的开发者体验。通常,我们的用户来自Heroku,希望跳入AWS。他们希望拥有Heroku的简单性和AWS的灵活性。这就是使用Qovery的意义所在。
为了在这条道路上取得成功,Qovery使用EKS(AWS托管的Kubernetes)来运行和扩展无状态应用程序。每个用户至少有一个或多个Kubernetes集群。Qovery的承诺是让Kubernetes集群生产就绪,这意味着Kubernetes的部署、运行和管理都由我们来完成。负责管理集群的软件称为Qovery Engine,它是开源的。
部署生产就绪的Kubernetes集群
为了在AWS上自动部署Kubernetes,我们创建了一个开源部署引擎,一个用Rust编写的应用程序。基本上,它为Kubernetes、ingress、auto scaler、Loki、S3初始化虚拟私有云(VPC),以存储Kubernetes日志,后是Kubernetes。Qovery引擎使用Terraform、Helm和AWS API。在AWS上,从零到生产就绪的Kubernetes集群需要30分钟,而不是几周。
在AWS帐户上使用Qovery时,会设置一个VPC和一个EKS集群。完全设置后,Qovery Engine将安装并连接到Qovery控制平面,以接收应用程序部署指令。
运行Kubernetes
由于Qovery依赖AWS(EKS)提供的托管Kubernetes,因此运行和管理Kubernetes变得简单(无需管理etcd、主节点和网络覆盖)。AWS通过管理负责整个集群完整性的主节点,确保集群始终处于运行状态。
Qovery的附加值是简化应用程序部署,确保这些应用程序正确运行。如果出现问题,这些应用程序和集群本身的所有信息都会实时报告给用户。这是由Qovery Engine和Qovery Agent处理的。
让Kubernetes保持新
Kubernetes每10周发布一个新版本。以这种速度,跟上时代是一项挑战。尤其是在发生重大变化时。在生产环境中进行升级之前,必须在临时集群上测试升级,但需要相当长的时间。
对我们来说也是如此。在Qovery,有一个专门的团队负责管理用户Kubernetes集群的升级。好消息是,一旦做了一次,它对每个集群的效果(几乎)都是一样的。
出于安全原因,Qovery Engine连接到Qovery控制平面,并提取集群更新指令。Qovery Engine负责所有Kubernetes worker节点上的滚动更新,更新版本和相关依赖关系(Loki、ingresses等)。Qovery Engine保证集群完全可运行,并准备好接收新的应用部署。
收尾
在本文中,我们已经看到了由数百个Kubernetes集群组成的浮动是如何由Qovery Engine管理的,Qovery Engine是一个用Rust编写的开源库。部署、运行和更新Kubernetes集群需要花费大量时间,并且需要自动化以保证其正常运行时间。
END