如何在Kubernetes中部署复杂的应用程序

时间:2019-10-24 12:39:29

标签: kubernetes deployment

假设我有

的经典应用程序
  • 网络
  • 后端
  • 数据库

如果我理解正确,我将为他们每个人创建部署。如果我要一步一步部署全部怎么办?我应该如何对部署进行分组。我已经阅读了有关标签和服务的内容,但我完全不确定哪个概念是正确的。面向外部有两个端口(http和debug)。为了清楚起见,跳过任何数据库初始化和就绪性探查。

如何立即部署所有内容?

2 个答案:

答案 0 :(得分:4)

为此您需要多个Kubernetes对象,并且有多种解决方法。

网络-这取决于它是什么。它只是静态 JavaScript文件吗?在这种情况下,最容易在任何云提供商,本地解决方案上使用CDN解决方案部署它,或者使用基于Kubernetes的产品(例如KubeCDN

后端-使用Kubernetes时,我们遵循Twelve Factor原则将后端设计为无状态。此类应用程序使用Deployment部署在Kubernetes上,该应用程序将部署您的一个或多个应用程序实例,并可能根据负载进行弹性扩展。在所有实例之前,您需要一个Service,并且您想使用Ingress通过负载均衡器/代理来公开此服务。

数据库-这是一个有状态应用程序,如果部署在Kubernetes上,则该应用程序将作为StatefulSet部署,您还需要考虑一下如何使用这种方式处理存储,可能可以使用Kubernetes Persistent Volume处理。

如您所见,此设置需要许多Kubernetes对象。如果您使用普通的声明性Kubernetes yaml文件,则可以将它们放在目录my-application/中,并使用单个命令部署所有文件:

kubectl apply -f my-application/

但是,还有更多替代方法,例如使用Helm

答案 1 :(得分:2)

使用头盔。您可以为每个应用程序创建一个Helm图表,还可以将它们与依赖项关联(requirements)。然后,您可以轻松地将它们作为一个应用程序进行部署。