【问题标题】:kubernetes development environment to reduce development timeKubernetes开发环境,减少开发时间
【发布时间】:2018-05-08 07:31:27
【问题描述】:

我是 devops 和 kubernetes 的新手,正在设置本地开发环境。 为了实现无障碍部署,我希望开发环境与部署环境尽可能相似。因此,为此,我将 minikube 用于单节点集群,这解决了我的很多问题,但据我所知,现在开发人员需要执行以下操作才能看到更改:

  1. 在本地编写代码,
  2. 创建容器镜像,然后将其推送到容器寄存器
  3. 使用更新的容器镜像应用 kubernetes 配置

但是这种方法的主要问题是开发时间长,你能推荐一些更好的方法来让我实时看到变化吗?

【问题讨论】:

    标签: docker kubernetes devops minikube


    【解决方案1】:

    Kubernetes 官方博客列出了几个用于构建基于 Kubernetes 的应用程序的 CI/CD 开发工具https://kubernetes.io/blog/2018/05/01/developing-on-kubernetes/

    但是,正如其他人所提到的,使用 CI/CD 方法进行开发时,开发周期可能会变得慢很多。因此,我和一位同事启动了 DevSpace CLI。它可以让你在 Kubernetes 中创建一个 DevSpace,让你可以直接访问终端和实时文件同步。这意味着您可以将它与任何 IDE 一起使用,甚至可以使用 热重载 工具,例如用于 nodejs 的 nodemon。

    GitHub 上的 DevSpace CLI:https://github.com/covexo/devspace

    【讨论】:

      【解决方案2】:

      如果您想在 Kubernetes 中拥有合适的 CI/CD 环境,恐怕前两个步骤实际上是强制性的。由于容器的短暂性,强烈建议不要在容器中执行修补程序,因为它们可能随时消失。

      有像helmkubecfg这样的工具可以帮助你完成第三步

      使用更新的容器镜像应用 kubernetes 配置

      它们允许版本控制和部署升级。您仍然需要学习如何使用,但它们有无数的优势。

      想到的另一个选择(没有 Kubernetes)是使用带有 Docker 的开发容器。在这种容器中,您的代码位于一个卷中,因此更容易测试更改。在最坏的情况下,您只需重新启动容器。

      开发容器示例(由 Bitnami 提供)(https://bitnami.com/containers):

      【讨论】:

      • 感谢小伙伴的回复,在此期间,我了解到Draft,微软的开发工具。你用过吗?
      【解决方案3】:

      我认为在组件开发过程中已经使用 Docker / Kubernetes 是错误的方法,正是因为这种缓慢的开发周期。我会按照我习惯的方式进行开发(例如,在 IDE 或本地应用程序服务器中运行组件),并且只有在我准备好部署某些东西后,才构建映像并开始在类似生产的环境中对其进行测试。我只使用本地 Docker 容器或我们的 Kubernetes 开发环境来运行当前开发的组件所依赖的组件:可能是数据库、其他微服务或其他任何东西。

      【讨论】:

        【解决方案4】:

        Jenkins X 项目中,我们非常喜欢使用 DevPods 进行快速开发 - 这基本上意味着您可以在与您的 CI/CD 运行使用完全相同的 kubernetes 集群内的 pod 中编译/测试/运行您的代码完全相同的工具(maven、git、kubectl、helm 等)。

        这让您可以使用您选择的桌面 IDE,而您的所有开发人员都可以使用完全相同的操作系统、容器和映像来开发工具。

        我确实喜欢 minikube,但开发人员在尝试使其运行时经常遇到问题(通常与 docker 或虚拟化问题有关)。此外,许多开发人员的笔记本电脑不够大,无法在 minikube 中运行大量服务,而且它的行为总是与您的真实集群不同——此外,开发人员的工具和操作系统通常与您的 CI/CD 和集群中运行的东西大不相同。

        这里是 a demo of how to automate your CI/CD on Kubernetes with live development with DevPods 来展示它是如何工作的

        【讨论】:

          【解决方案5】:

          我参与KubernetesDocker 的时间不长,但据我所知,我认为这是了解这是否可行以及如何对您的应用程序进行docker 化的第一步。

          Kubernetes 不是创建 docker 镜像的工具,它只是通过 Docker 拉取预先构建的镜像。

          Udemy 中有很多有用的课程,包括这门课程。 https://www.udemy.com/docker-and-kubernetes-the-complete-guide/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-07-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-13
            • 2011-03-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多