当前位置: 首页 > 科技观察

解放开发商!K8S快速开发的3个工具

时间:2023-03-21 23:50:11 科技观察

简介在今天,Kubernetes变得越来越重要。它不仅是运维需要的,在开发界也是不可或缺的。因此,精通Kubernetes知识将备受追捧。然而,问题是开发人员是否需要亲身体验Kubernetes,还是必须完全理解Kubernetes。规避此问题的一种常见方法是通过提供平台或CI/CD管道将Kubernetes的复杂性从开发人员中抽象出来,使开发人员无需直接访问Kubernetes即可更轻松地在Kubernetes中测试应用程序。然而,允许开发人员直接访问Kubernetes并让他们直接在Kubernetes内部开发一些应用程序通常是有意义的,这样他们就可以在非常接近生产的环境中工作。这就提出了一个问题,即如何让开发人员使用Kubernetes而不会被其复杂性压倒。这个问题的答案可能是使用为Kubernetes准备的开发者工具,例如DevSpace。在本文中,我们将探讨开发人员如何使用DevSpace和Rancher来简化Kubernetes开发。DevSpace:使用Rancher轻松开发DevSpace是Kubernetes的客户端开源开发工具。它可以:直接在Kubernetes内部构建、测试和调试应用程序通过更新正在运行的容器来热重载开发,而无需重建镜像或重新启动容器统一团队内部以及跨开发、暂存和生产的部署工作流程自动化镜像构建和部署DevSpace的重复性任务,作为开发者的客户端工具,与Rancher相辅相成。开发人员在Rancher中获得分配的项目,然后直接在Kubernetes中开发或测试应用程序。这使开发环境更接近生产环境,让开发人员在发布新功能时更有信心,相信一切都能在生产环境中正常运行。首先设置DevSpace需要下载DevSpace二进制文件(https://devspace.sh/cli/docs/getting-started/installation)。接下来,通过在已经容器化的项目中运行devspaceinit来创建一个新项目。如果您没有方便的项目来进行试验,您可以使用我们的示例项目:https://devspace.sh/cli/docs/getting-started/initialize-project#choose-a-project$devspaceinit________|_\_______/___|____________||||/_\\//\___\|'_\/_`|/__/_\||_||__/\V/___)||_)|(_||(_|__/|____/\___|\_/|____/|.__/\__,_|\___\___||_|?你想如何初始化这个项目?使用Dockerfilein./Dockerfile?WhichregistrydoyouwanttouseforstoringyourDockerimages?Usehub.docker.com=>youareloggedinasdevspacecloud?WhichimagenamedoyouwanttouseonDockerHub?devspacecloud/quickstart?Whichportisyourapplicationlisteningon?(Entertoskip)8080[done]√项目成功initialized在您回答了几个关于应该初始化的项目的问题后,mlvSpace.ya将为您创建一个devspace。这个文件包含了如何使用DevSpace部署和开发项目,看起来如下所示:version:v1beta9#Thissectiondefinestheimagesthatshouldbebuiltimages:app:image:devspacecloud/quickstartpreferSyncOverRebuild:true#thisoptiontellsdevspacetoautomaticallywraptheDockerfileentrypointinmemory#withasmallrestarthelperscriptsothattheprocesscanbeeasilyrestartedfromwithinthe#container.injectRestartHelper:true#Definesanarrayofeverything(component,Helmchart,Kubernetesmaninfests)#thatwillbedeployedwithDevSpaceinthespecifiedorderdeployments:-name:quickstarthelm:#Usesaspecialhelmchartprovidedbydevspacetocomplementprojectsthatdon'thaveanown#helmchartcomponentChart:truevalues:containers:-image:devspacecloud/quickstartservice:ports:-port:8080#Configurationthatwillbeusedfordevelopingtheapplicationdev:#Portforwardcertainportsfromtheapplicationtothelocalcomputerports:-imageName:appforward:-port:8080#热重新加载更改而不是重建完整的docker图像始终同步:-imageName:app#ThistellsdevspacetorestarttheconcontainerafterafilewassyncedintoitonUpload:restartContainer:trueprofiles:...现在,您可以跨团队共享此配置,指定如何独立于本地设置在Kubernetes内开发应用程序。要开始开发应用程序,您需要访问Kubernetes集群或Rancher项目。最佳实践是为每个开发人员创建一个Rancher项目,或者为共享集群中的一组开发人员创建一个项目。为了确保不同项目和命名空间之间的简单隔离,使用了常见的Kubernetes资源,例如资源配额、网络策略、Pod安全策略和限制范围。要使用DevSpace开发应用程序,请运行命令devspace.dev以启动开发过程。这将执行以下操作:构建和部署您的应用程序流式传输部署期间部署的所有容器日志转发devspace.yaml中dev.ports中指定的所有端口根据dev.sync中的同步配置进行同步所有文件已更改,以便您可以重新启动应用程序在一个正在运行的容器中,无需重建图像或重新部署任何东西'docker'Step1/7:FROMnode:13.12-alpine...[done]√Doneprocessingimage'myusername/devspace'[done]√Deployedhelmchart(Releaserevision:0)[done]√成功部署quickstartwithhelm[done]√Port转发开始于3000:3000[完成]√同步开始于/devspace/examples/quickstart<->.(Pod:test/quickstart-5d7f4d8fd-w95cx)##########################################################################DevSpaceUI可用地址:http://localhost:8090#########################################################[info]Startinglogstreamingforcontainerthatuseimagesdefinedindevspace.yaml[快速启动][快速启动]>node-js-sample@0.0.1start/app[quickstart]>nodemonindex.js[quickstart][quickstart][nodemon]1.19.4[quickstart][nodemon]torestartatanytime,enter`rs`[quickstart][nodemon]watchingdir(s):*.*[quickstart][nodemon]watchingextensions:js,mjs,json[quickstart][nodemon]starting`nodeindex.js`[quickstart]Exampleapplisteningonport3000!在本地修改文件后,文件会同步到容器中。容器重启后,完全不需要通过Docker重新构建,大大加快了开发进程。DevSpace然后将启动一个本地UI,您可以在其中访问和检查创建的pod。这简化了与Kubernetes的交互,特别是对于不熟悉kubectl的用户。除了devspacedev之外,devspacedeploy命令还可以用于打包和部署应用程序,而无需热重载、端口转发或日志流。DevSpace提供了许多自定义功能来根据您的用例和设置定制其行为,包括:依赖项,允许您开发和部署依赖于其他项目的项目配置文件,允许在一个devspace.yaml中进行多个配置配置值允许为项目配置自定义命令可以在特定DevSpace事件上执行某些功能的Hooks自动向devspace命令添加标志的环境变量扩展DevSpace及其命令的插件DevSpace标准化和简化开发人员与Kubernetes交互的方式,Rancher在服务器端管理开发人员如何在Kubernetes中工作。Rancher允许您启动开发集群并将它们拆分为开发团队可以一起工作和测试的项目。除了公共的Kubernetes隔离资源,ResourceQuotas项目还可以在资源方面对团队进行约束,让团队在共享的Kubernetes集群中得到公平的使用。共享Kubernetes集群可以减少基础设施开销,并直接在Kubernetes内实现高效开发。为快速开发添砖加瓦:loftloft是另一个有用的工具,它在开发过程中增加了一些便利的特性,包括:虚拟集群,它比“真正的”集群成本更低,可以在几秒钟内创建和部署再次清洁,并且比简单的命名空间更强大提供开发人员在共享集群中为命名空间提供自助式(self-service)休眠模式,这会让命名空间在一段时间不活动后进入休眠状态,以节省计算成本您可以通过安装lofthelmchart(https//loft.sh/docs/getting-started/setup)。loftCLI也可用作DevSpace的插件。总结对于开发者来说,熟练使用Kubernetes上手并不容易,很多企业还在苦苦寻找一种方法来抽象Kubernetes的复杂性。这通常会导致自定义平台缺少许多功能,限制了Kubernetes的潜力,并且是另一个维护负担。结合DevSpace、Rancher和loft,开发人员只需一个命令即可直接访问Kubernetes:devspacedev。Rancher非常擅长创建和管理多个集群,DevSpace擅长为开发者提供工具。结合Rancher和DevSpace很简单,可以显着提高开发人员的工作效率。此外,loft为开发团队提供了更多有用的功能,让开发者在保持低成本的情况下随时获得Kubernetes工作环境。结合Rancher、DevSpace和loft这三个工具是使用Kubernetes的开发团队的理想设置。

猜你喜欢