使用Minikube部署多个应用到Kubernetes

75次阅读
没有评论

问题描述

想要在Minikube上部署多个应用程序,但是Kubernetes的快速入门示例只是用于部署单个简单的应用程序,而不是多个应用程序。用户想知道如何创建一个可以使用Minikube部署多个应用程序的yaml文件。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在容器编排工具中,将多个应用程序安装到单个容器中被认为是不良实践。现在的部署方式是将每个应用程序作为一个独立的容器,您的构建工具(如maven)将servlet容器和应用程序打包到一个文件中。然后,每个容器可以独立部署到Kubernetes,并进行独立的扩展和重启。它们还可以有内存泄漏和崩溃,而不会相互影响。

一个很好的例子是springboot,在您的pom.xml中,您可以告诉它构建一个可执行的JAR。这个JAR文件会很大,因为它会将Tomcat包含在内。当您运行可执行文件时,它将启动Java和Tomcat,并绑定到一个端口并运行您的应用程序。您不必使用springboot,您可以简单地将Tomcat或Jetty插件添加到您的maven项目中,并让容器只运行”mvn jetty:run”或”mvn tomcat7:run”。

我建议您尝试minishift,它类似于minikube,但是使用了更多的DevOps功能的Kubernetes的openshift发行版。如果您想部署Java Servlet应用程序,您只需使用其内置的目录,选择”Open JDK”,提供git仓库,它将检出您的代码,使用maven构建应用程序,创建容器映像,并部署它,使用一个路由和URL来访问它。然而,您也可以从头开始创建,目录只是创建所有必要的YAML。这是您将用作maven项目的示例代码,可以通过”Open JDK”目录构建和运行。pom.xml显示了当使用mvn -P openshift package构建代码时,它将war文件放入部署文件夹中,并在容器启动时运行它。如果您不喜欢jboss,那么您可以添加一个.s2i/bin/run脚本,以另一种方式启动已编译的应用程序(例如”mvn jetty:run”或”mvn tomcat 7:run”)。

Helm是Kubernetes的包管理器,它也可以与openshift扩展一起使用。Helm跟踪您安装的内容,并允许您回滚。官方的chart仓库有现成的图表可以安装数据库和redis等。我制作了一个通用的图表,可以在openshift kubernetes上运行任何容器,我们使用它来安装我们的所有应用程序,无论是mode.js还是php或其他任何东西。它使用与内置模板相同的YAML。

当您想要安装多个图表时,您可以使用Helmfile。您的Helmfile包含了安装所有Helm图表所需的所有YAML。最好的功能是它只修改了发生变化的内容。如果您修改了Helmfile中配置多个应用程序的一个设置,它只会更新一个应用程序。并且让您查看存储在k8s中的应用程序的先前版本,并让您轻松回滚到上一个工作状态。

我正在开源我们运行业务的东西,名为“OCD”,您可以在git中更改配置,然后webook将运行Helmfile来更新您的Kubernetes环境。这是minishift演示的如何

方案2

如果您遇到任何问题,请随时向我求助。
根据我理解,您需要运行一个加载Servlet容器并使用反向代理来提供静态内容的应用程序,并且您还希望您的sample.war和其他配置保持不变,而不受容器生命周期的影响。

这是一个示例项目,完全符合您的要求。请在Github上查看这个项目:https://github.com/savicprvoslav/kubernetes-front-end-backend-example

如果您在任何地方遇到困难,请告诉我。我很乐意帮助您。

正文完