将微服务应用程序部署到清晰的Kubernetes集群

时间:2020-06-10 12:45:16

标签: kubernetes deployment microservices

让我们假设有一个应该在Kubernetes集群上运行的系统。已经建立并运行了一个开发环境。

然后,需要将其部署到另一个全新且空的群集中。 该系统由多个部署,一堆服务和入口组成。有一些卷和PVC。它们都是使用kubectl或Helm安装的,并使用密钥进行手动配置。

如果我们需要一种安装工具来设置现有集群的所有内容该怎么办?如果我们以后需要更新某些微服务怎么办?

是否有任何Kubernetes管理工具可以帮助部署整个应用程序或更新某些微服务? 我可以想象为每个使用的微服务创建一个bat文件来运行helm install多次,但是可能有一个更好的解决方案。

编辑:我应该对此更加清楚,但是假设有多个客户要使用一个应用程序,并且该应用程序需要部署到他们身边的不同集群中。构成应用程序的微服务可能是一堆Helm图表。我希望有一个工具,可以在将解决方案安装到其群集时尽可能地避免客户端运行控制台命令。理想情况下,它还应该允许我们选择性地更新一些微服务。 这不是关于CI / CD(它非常适合开发),而是关于将应用程序组件部署和升级到不同的客户群中。

2 个答案:

答案 0 :(得分:2)

假设您的组织正在开发微服务体系结构中的服务,并且正在kubernetes集群中进行部署,则必须使用某些CD工具(连续交付工具)来添加新的微服务服务,甚至更新服务。我的观点是,如果您正在使用kubectl更新生产或认证(甚至是开发)工作负载,那是错的,因为在微服务架构中,可移动部件的数量可以像以前从未见过的那样扩展,并且这种行为可以您处于微服务管理的地狱。

使用这种工具(CD工具)可以促进集群的迁移或在环境之间促进服务。

是否存在存在集群的配置集群?

最后一个(可使用的)Terraform(https://www.terraform.io/)和Ansible(https://www.ansible.com/)来看看,它有很多插件,并且支持shell脚本和/或bat文件执行,编写脚本和组织需求的代码。

如果以后我们可能需要更新一些微服务怎么办?

看看诸如Jenkins(https://www.jenkins.io),DroneIO(https://drone.io)之类的工具...一些组织使用Python脚本或Go等等,这种情况很接近您提出的情况使用bat文件,我个人不喜欢这种方法,我认为最好的解决方案是从Continuous Integration&Delivery组的CNCF Landscape(https://landscape.cncf.io/zoom=150)中选择一种工具,这些工具已在市场。

答案 1 :(得分:1)

为此,我使用了terraform,这使我可以声明性地指定部署状态。 (另一个声明性工具将是https://github.com/fluxcd/flux,但我完全没有经验。)

terraform的官方k8s提供程序不适用于kubectl applyhttps://github.com/hashicorp/terraform-provider-kubernetes/issues/141),因此对于通常通过kubectl apply应用的内容,我只是创建了一个包装器舵图。