使用kubernetes进行本地开发的最佳做法是什么?

时间:2018-05-11 14:05:05

标签: docker kubernetes google-cloud-platform

我正在使用docker容器,并为本地开发和生产环境提供docker-compose文件。我想为我的新应用程序和特别是Google Kubernetes Engine试用Google Cloud Platform。我的工具是Docker for Mac,在本地计算机上使用Kubernetes。

对于开发人员而言,能够更改代码并查看本地开发的实时更改非常重要。

用例:

  1. 后端开发人员对基本的Flask API(或您使用的任何内容)进行更改,并应立即在重新加载的应用上看到更改。

  2. 前端开发人员对HTML布局进行更改,并应立即在网页上看到更改。

  3. 目前我使用docker-compose文件将源代码安装到本地容器。但是Kubernetes不支持安装源代码的相对路径。

    理想情况下,我应该能够设置变量

      

    Deployment.spec.templates.spec.containers.volumes.hostPath

    作为我的回购的相对路径。例如,在我们的团队开发人员克隆回购到此文件夹:

      

    /用户/ BACKEND_developer /代码/ project_repo

         

    /用户/ FRONTEND_developer /代码/ project_repo

    显然,在每次对源代码进行少许更改后,您都无法提交和构建映像。

    那么Kubernetes的本地开发最佳实践是什么?我是否需要一些额外的工具来为每个开发人员修改.yaml文件?

1 个答案:

答案 0 :(得分:1)

动态语言的一种非常有前途的方法是Skaffold最近引入的混合方法,它可以利用通常的自动重装机制。您可以定义两组文件:

  • 在第一个集合上更改文件会触发完整的rebuild + push + deploy机制。
  • 在第二组上更改文件只会在本地计算机和容器之间同步文件。

这种混合方法非常适用于大型技术堆栈,例如Node.js,React,Angular,Python,您可以在其中使用本机热重载机制进行源代码更改,并仅触发完全重建在需要时(例如,添加依赖项)。这有助于将等待时间保持在较低水平。

我最近在全天Devops的talk中谈到了这一点。 Here,有一个基于Node.JS的示例。