在Minikube和Docker上的开发工作流程

5
我正在尝试理解如何通过Kubernetes高效地开发docker应用程序。我正在努力寻找一种适当的方式去实时编辑容器。以前使用Docker时,我会使用像Nodemon这样的工具来监视本地文件的更改,然后完成应用程序后将其docker化并部署。在Kubernetes(minikube)中,我的第一印象是应该在每次编辑时重新构建容器。但人们肯定不是这样在这里开发的-我错过了什么吗?难道我应该在本地进行编辑,然后将其dockerize-> k8s deploy?那看起来不太对。我正在寻找一种方法来将我所有的本地更改同步到docker容器中,然后使用新更改重新启动Kubernetes Pod,以便我可以在开发期间从日志中读取。如果这很奇怪,请推荐我更好的方法。谢谢。
2个回答

5

Kubernetes 是一个容器编排工具,它不是开发平台,旨在简化部署数百个容器并处理生命周期、网络和存储问题。

如果你正在开发应用程序,目前真的不需要使用 Kubernetes/minikube。我建议的工作流程是:

  • 在本地 Docker 容器中开发您的应用程序。在迭代过程中,直到您满意为止。
  • 创建快照发布,标记 Docker 镜像并将其推送到仓库。
  • 然后部署它。
  • 当您需要更新时,请应用新标记。

使用 Docker 的好处是,它在本地笔记本电脑上以及生产 k8s 集群上部署完全相同,因此一旦您准备好标记/推送镜像,您可以确保部署过程完全相同。

Minikube 并不是用于本地开发,而是用于人们测试本地 Kubernetes,并可能开发 Kubernetes 本身,它不是旨在成为 Vagrant 替代品。


如果我想为每个客户创建一个新的 pod,我该如何做?是制作一个模板镜像,然后用存储在 DB 容器中的数据填充它吗?我本来想直接生成一个新的 pod,但如果我在本地开发,我想不出一种测试的方法。 - dallinn
Pod是Kubernetes中的一个逻辑单元,仅此而已。为什么不在开发过程中为每个客户端启动一个新的Docker容器来验证数据呢?你真的可能在开发周期中拥有5或10个不同的客户端容器吗?我认为你需要退一步,尽量不要把事情搞得太复杂。 - jaxxstorm

0

Kubernetes是一个容器运行时系统,旨在支持不可变部署模式。容器不会在原地打补丁,而是重新构建和重新部署。为了支持这一点,您需要具备实现Kubenetes作为目标的ALM(应用程序生命周期管理)工作流程的功能。

请查看以下产品,它们在Kubernetes之上添加了容器构建工作流程:

如果您是Java开发人员,则以下项目可以为您的代码部署基于Jenkins的CD / CD管道:

Netflix项目Spinnaker现在支持将Kubernetes作为托管应用程序的部署目标。

除了Openshift(请参见minishift),上述项目都可以作为minikube的应用程序部署。玩得开心!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接