Minikube 和 docker 上的开发工作流

Development workflow on Minikube and docker

我正在尝试了解如何使用 docker 化应用程序(尤其是在 Kubernetes 上)高效地完成开发。我正在努力寻找进行实时编辑容器的正确方法。

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

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

谢谢

Kubernetes 是一个容器编排工具。它不是一个开发平台。它旨在简化数百个容器的部署,并处​​理 lifecycle/networking/storage 问题。

如果您正在开发应用程序,目前确实不需要 kubernetes/minikube。我建议的工作流程是:

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

使用 Docker 的好处是它会在您的本地笔记本电脑和生产 k8s 集群上进行完全相同的部署,所以一旦您到达准备就绪的阶段tag/push 个图像,您可以放心,部署过程将完全相同。

Minikube 不适合本地开发,它是供人们在本地测试 kubernetes,并可能开发 kubernetes 本身,它不是设计为 vagrant 替代品。

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

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

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

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

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