我是devops和kubernetes的新手,并且正在建立本地开发环境。 为了实现无障碍部署,我希望保持开发环境尽可能与部署环境相似。所以,为此,我使用minikube作为单节点集群,这解决了我的很多问题但是现在,根据我的知识,开发人员需要按照以下步骤查看更改:
但这种方法的主要问题是开发时间长,你能否建议一些更好的方法来实时看到变化?
答案 0 :(得分:2)
Kubernetes官方博客列出了几个 CI / CD开发工具,用于构建基于Kubernetes的应用程序:https://kubernetes.io/blog/2018/05/01/developing-on-kubernetes/
但是,正如其他人提到的那样,使用CI / CD进行开发的开发周期可能会变得很慢。因此,我和一位同事启动了DevSpace CLI。它使您可以在Kubernetes中创建一个DevSpace,从而可以直接进行终端访问和实时文件同步。这意味着您可以在任何IDE中使用它,甚至可以使用热重装工具,例如nodemon for nodejs。
GitHub上的DevSpace CLI:https://github.com/covexo/devspace
答案 1 :(得分:1)
如果你想在Kubernetes中拥有一个合适的CI / CD环境,我担心前两个步骤几乎是强制性的。由于容器的短暂性质,强烈建议不要在容器中执行修补程序,因为它们可能随时消失。
将kubernetes配置应用于更新的容器图像
它们允许版本控制和部署升级。您仍然需要学习如何使用,但它们具有无数的优势。
想到的另一个选择(没有Kubernetes)将使用Docker的开发容器。在这种容器中,您的代码在卷中,因此更容易测试更改。在最坏的情况下,您只需要重新启动容器。
开发容器的示例(由Bitnami提供)(https://bitnami.com/containers):
答案 2 :(得分:1)
我认为在开发组件期间已经使用Docker / Kubernetes是错误的方法,正是因为这种缓慢的开发周期。我会像以前那样开发(例如在IDE或本地应用服务器中运行组件),并且只有在我准备好部署之后才构建映像并开始在生产环境中测试它。我只使用本地Docker容器或我们的Kubernetes开发环境来运行当前开发的组件所依赖的组件:可能是数据库,或其他微服务,或其他任何东西。
答案 3 :(得分:0)
在Jenkins X项目中,我们非常喜欢使用DevPods进行快速开发 - 这基本上意味着您在与CI完全相同的kubernetes集群内的pod中编译/测试/运行代码/ CD使用完全相同的工具(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来展示一切是如何运作的
答案 4 :(得分:-1)
我参与Kubernetes
和Docker
的时间并不长,但是据我所知,我认为这是了解是否有可能以及如何对应用程序进行泊坞处理的第一步。
Kubernetes不是用于创建docker映像的工具,它只是由Docker拉取预先构建的映像。
Udemy中有很多有用的课程,包括本课程。 https://www.udemy.com/docker-and-kubernetes-the-complete-guide/