时至今日,Kubernetes正在变得越来越重要,不仅仅是运维需要Kubernetes,在开发的世界里Kubernetes也不可或缺。因此能够熟练掌握Kubernetes知识会备受追捧。然而问题是,开发人员是否需要直接上手操作Kubernetes,他们是否必须完全了解Kubernetes。

创新互联成立以来不断整合自身及行业资源、不断突破观念以使企业策略得到完善和成熟,建立了一套“以技术为基点,以客户需求中心、市场为导向”的快速反应体系。对公司的主营项目,如中高端企业网站企划 / 设计、行业 / 企业门户设计推广、行业门户平台运营、手机APP定制开发、手机网站制作设计、微信网站制作、软件开发、IDC机房托管等实行标准化操作,让客户可以直观的预知到从创新互联可以获得的服务效果。
规避这一问题的常见方法是通过提供一个平台或CI/CD流水线,将Kubernetes的复杂性从开发人员身上抽象出来,使开发人员更容易在Kubernetes内测试应用程序,而无需直接访问Kubernetes。
然而,允许开发人员直接访问Kubernetes,让他们直接在Kubernetes内部开发一些应用程序往往是有意义的,因为这样可以在一个非常接近生产的环境中工作。
这就出现了一个问题,即如何让开发人员使用Kubernetes工作,同时又不因其复杂性而使他们不堪重负。这个问题的答案可能是需要使用为Kubernetes而准备的开发者工具,例如DevSpace。在这篇文章中,我们将探讨开发人员如何使用DevSpace和Rancher来简化Kubernetes开发。
DevSpace是一款面向Kubernetes的客户端、开源的开发者工具。它可以:
DevSpace作为开发者的客户端工具,是对Rancher的补充。开发者在Rancher内获得分配的项目,然后直接在Kubernetes内开发或测试应用。这使开发环境更接近生产环境,让开发人员在发布新功能时更有把握,相信一切都能够在生产环境中运行良好。
设置DevSpace
首先需要下载DevSpace二进制文件(https://devspace.sh/cli/docs/getting-started/installation),接下来,在一个已经容器化的项目中通过运行devspace init创建一个新的项目。如果你现在手边没有一个可以用来进行试验的项目,你可以使用我们的示例项目:
https://devspace.sh/cli/docs/getting-started/initialize-project#choose-a-project
- $ devspace init
 - ____ ____
 - | _ \ _____ __/ ___| _ __ __ _ ___ ___
 - | | | |/ _ \ \ / /\___ \| '_ \ / _` |/ __/ _ \
 - | |_| | __/\ V / ___) | |_) | (_| | (_| __/
 - |____/ \___| \_/ |____/| .__/ \__,_|\___\___|
 - |_|
 - ? How do you want to initialize this project?
 - Use the Dockerfile in ./Dockerfile
 - ? Which registry do you want to use for storing your Docker images?
 - Use hub.docker.com => you are logged in as devspacecloud
 - ? Which image name do you want to use on Docker Hub? devspacecloud/quickstart
 - ? Which port is your application listening on? (Enter to skip) 8080
 - [done] √ Project successfully initialized
 
在你回答了几个关于应该被初始化的项目的问题之后,DevSpace将为你创建一个devspace.yaml。这个文件包含了如何使用DevSpace部署和开发项目,看起来如下所示:
- version: v1beta9
 - # This section defines the images that should be built
 - images:
 - app:
 - image: devspacecloud/quickstart
 - preferSyncOverRebuild: true
 - # this option tells devspace to automatically wrap the Dockerfile entrypoint in memory
 - # with a small restart helper script so that the process can be easily restarted from within the
 - # container.
 - injectRestartHelper: true
 - # Defines an array of everything (component, Helm chart, Kubernetes maninfests)
 - # that will be deployed with DevSpace in the specified order
 - deployments:
 - - name: quickstart
 - helm:
 - # Uses a special helm chart provided by devspace to complement projects that don't have an own
 - # helm chart
 - componentChart: true
 - values:
 - containers:
 - - image: devspacecloud/quickstart
 - service:
 - ports:
 - - port: 8080
 - # Configuration that will be used for developing the application
 - dev:
 - # Port forward certain ports from the application to the local computer
 - ports:
 - - imageName: app
 - forward:
 - - port: 8080
 - # Hot reload changes instead of rebuilding the complete docker image all the time
 - sync:
 - - imageName: app
 - # This tells devspace to restart the container after a file was synced into it
 - onUpload:
 - restartContainer: true
 - profiles:
 - ...
 
现在,你可以跨团队分享这个配置。它指定了如何在Kubernetes内部独立于本地设置开发应用程序。
要开始开发应用程序,你需要访问一个Kubernetes集群或Rancher项目。最佳实践是为每个开发人员创建一个Rancher项目或者为一个共享集群内的开发者团队创建一个单一项目。
为了在不同项目和命名空间之间确保简单的隔离,使用常见的Kubernetes资源,如Resource Quotas、网络策略、Pod安全策略和Limit Ranges等。
运行命令devspace.dev来开启开发流程。这将起到以下作用:
- $ devspace dev -n test
 - [info] Using kube context 'docker-desktop'
 - [info] Using namespace 'test'
 - [done] √ Created namespace: test
 - [info] Building image 'myusername/devspace:C5992q4' with engine 'docker'
 - Step 1/7 : FROM node:13.12-alpine
 - ...
 - [done] √ Done processing image 'myusername/devspace'
 - [done] √ Deployed helm chart (Release revision: 0)
 - [done] √ Successfully deployed quickstart with helm
 - [done] √ Port forwarding started on 3000:3000
 - [done] √ Sync started on /devspace/examples/quickstart <-> . (Pod: test/quickstart-5d7f4d8fd-w95cx)
 - #########################################################
 - [info] DevSpace UI available at: http://localhost:8090
 - #########################################################
 - [info] Starting log streaming for containers that use images defined in devspace.yaml
 - [quickstart]
 - [quickstart] > node-js-sample@0.0.1 start /app
 - [quickstart] > nodemon index.js
 - [quickstart]
 - [quickstart] [nodemon] 1.19.4
 - [quickstart] [nodemon] to restart at any time, enter `rs`
 - [quickstart] [nodemon] watching dir(s): *.*
 - [quickstart] [nodemon] watching extensions: js,mjs,json
 - [quickstart] [nodemon] starting `node index.js`
 - [quickstart] Example app listening on port 3000!
 
本地修改文件后,文件会同步到容器中。容器重启后无需通过Docker完全重建,大大加快了开发进程。
然后DevSpace会启动一个本地UI,你可以访问和检查创建的pod。这简化了与Kubernetes的交互,特别是对于不熟悉kubectl的用户。
除了devspace dev,devspace deploy命令可以用于打包和部署应用程序,而不需要热重载、端口转发或日志流。DevSpace提供了许多自定义功能,以根据你的用例和设置调整其行为,包括:
DevSpace标准化和简化了开发人员与Kubernetes的交互方式的同时,Rancher在服务器端管理着开发者如何在Kubernetes内部工作。Rancher可以让你启动开发集群并将它们分到不同的项目中,在这些项目中开发团队可以一起工作和测试。
Resource Quotas项目除了常见的Kubernetes隔离资源外,还可以在资源方面约束团队,让团队在共享Kubernetes集群中得到公平的使用。共享Kubernetes集群可以减少基础设施的开销并且可以直接在Kubernetes内部进行有效开发。
loft是另一个很有用的工具,它可以在开发过程中添加一些比较方便的功能,包括:
你可以通过安装loft helm chart(https://loft.sh/docs/getting-started/setup)轻松地将loft添加到Rancher。loft CLI也可以作为DevSpace的插件。
对于开发人员而言,熟练上手使用Kubernetes并不简单,目前许多企业仍然在努力寻找一种方法来抽象Kubernetes的复杂性。这往往导致定制化的平台缺乏许多功能,限制了Kubernetes的潜力,并且是另一个维护负担。
将DevSpace、Rancher和loft结合起来,让开发者可以直接访问Kubernetes,并且只需要一个命令:devspace dev。
Rancher十分擅长创建和管理多个集群,DevSpace擅长为开发者提供工具。将Rancher和DevSpace相结合是十分简单的,并且可以显著提升开发人员的生产力。
此外,loft为开发团队提供了更多有用的功能,让开发者可以随时获得Kubernetes的工作环境,同时保持低成本。将Rancher、DevSpace和loft这三个工具结合起来,对于使用Kubernetes的开发团队来说,是一个十分理想的设置。
                本文标题:解放开发者!3款工具实现快速K8S开发
                
                网址分享:http://www.csdahua.cn/qtweb/news9/403959.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网