Docker 使用kubernetes进行本地开发的最佳实践是什么?

Docker 使用kubernetes进行本地开发的最佳实践是什么?,docker,kubernetes,google-cloud-platform,Docker,Kubernetes,Google Cloud Platform,我正在使用docker容器,并让docker为本地开发和生产环境编写文件。我想为我的新应用尝试谷歌云平台,特别是谷歌Kubernetes引擎。我的工具是Docker for Mac和本地机器上的Kubernetes 对于开发人员来说,能够为本地开发更改代码和实时查看更改是非常重要的 用例: 后端开发人员对基本Flask API(或任何您使用的)进行更改,并应立即在重新加载的应用程序上看到更改 前端开发人员对HTML布局进行更改,并应立即在网页上看到更改 目前,我正在使用docker compos

我正在使用docker容器,并让docker为本地开发和生产环境编写文件。我想为我的新应用尝试谷歌云平台,特别是谷歌Kubernetes引擎。我的工具是Docker for Mac和本地机器上的Kubernetes

对于开发人员来说,能够为本地开发更改代码和实时查看更改是非常重要的

用例:

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

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

  • 目前,我正在使用docker compose文件将源代码装载到本地容器中。但是Kubernetes不支持装载源代码的相对路径

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

    部署.spec.templates.spec.containers.volumes.hostPath

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

    /用户/后端开发者/代码/项目报告

    /用户/前端开发者/代码/项目回购

    显然,您不能在对源代码进行每一点更改之后提交和构建映像

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

    @tgogos是正确的。 实现目标的最好方法是使用

    每当它看到源代码中的更改时,就会重新生成容器

    Skaffold有一个可插拔的体系结构,允许您在开发人员工作流程中选择最适合您的工具:
    一种非常有前途的动态语言方法是最近由引入的混合方法,它允许利用通常的自动重新加载机制。您可以定义两组文件:

    • 更改第一个集合上的文件将触发完整的重建+推送+部署机制
    • 更改第二组上的文件只会在本地计算机和容器之间同步该文件
    这种混合方法非常适合于一大类技术堆栈,如Node.js、React、Angular、Python,在这些技术堆栈中,您可以使用本机热重新加载机制进行源代码更改,并仅在需要时触发完全重建(例如,添加依赖项)。这对保持低延迟有很大帮助


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

    您检查了吗?Helm允许您指定将注入yaml的值重写。我们有一个被忽略的“values.local.yaml”文件,它包含每个developerArtino的主机路径,谢谢您的回答。当你谈到skaffold单独的触发器时,你能告诉我你演讲中的时间码吗?视频长达4.3小时,生命短暂:)目前我正在使用Skaffold,但每次更改都必须重建图像。依赖项不是问题,如果我将requirements.txt(py)/package.json(JS)文件放在Dockerfile的第一行,就不会每次都安装依赖项。但网页包捆绑需要一些宝贵的时间。将React Hot Reload与Skaffold一起使用将非常好。谢谢。@ZhorzhAlexandr视频长达4小时,但我的演讲只有30分钟:)请看1:20:52