5

我试图了解如何使用 dockerized 应用程序有效地完成开发,特别是在 Kubernetes 上。我正在努力寻找进行实时编辑容器的正确方法。

在过去使用 Docker 时,我只会使用 Nodemon 之类的东西来监视本地文件的变化,然后当我完成应用程序时,我会将其 dockerize 并部署。对于 Kubernetes (minikube),我的第一印象是我应该在每次编辑时重建容器。当然,这不可能是人们在这里发展的方式——我错过了什么?我应该在本地编辑然后 dockerize->k8s 部署吗?那似乎不对。

我正在寻找一种将所有本地更改同步到 docker 容器的方法,然后使用新更改重新启动 kubernetes pod,以便在开发期间从日志中读取。如果这很奇怪,请向我推荐一种更好的方法。

谢谢

4

2 回答 2

5

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

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

  • 在本地 docker 容器中开发您的应用程序。不断迭代,直到你满意为止。
  • 创建快照版本,标记 docker 映像并将其推送到存储库
  • 然后部署它。
  • 当您需要更新时,请应用新标签。

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

Minikube 不适合本地开发,它是供人们在本地测试 kubernetes,并且可能自己开发 kubernetes,它不是作为流浪的替代品而设计的。

于 2017-04-03T17:17:36.757 回答
0

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

看看以下在 Kubernetes 之上添加容器构建工作流的产品:

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

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

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

于 2017-04-04T02:06:32.010 回答