日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
解放開發(fā)者!3款工具實現(xiàn)快速K8S開發(fā)

 簡 介

時至今日,Kubernetes正在變得越來越重要,不僅僅是運維需要Kubernetes,在開發(fā)的世界里Kubernetes也不可或缺。因此能夠熟練掌握Kubernetes知識會備受追捧。然而問題是,開發(fā)人員是否需要直接上手操作Kubernetes,他們是否必須完全了解Kubernetes。

創(chuàng)新互聯(lián)成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、手機APP定制開發(fā)、手機網(wǎng)站制作設(shè)計、微信網(wǎng)站制作、軟件開發(fā)、IDC機房托管等實行標準化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。

規(guī)避這一問題的常見方法是通過提供一個平臺或CI/CD流水線,將Kubernetes的復(fù)雜性從開發(fā)人員身上抽象出來,使開發(fā)人員更容易在Kubernetes內(nèi)測試應(yīng)用程序,而無需直接訪問Kubernetes。

然而,允許開發(fā)人員直接訪問Kubernetes,讓他們直接在Kubernetes內(nèi)部開發(fā)一些應(yīng)用程序往往是有意義的,因為這樣可以在一個非常接近生產(chǎn)的環(huán)境中工作。

這就出現(xiàn)了一個問題,即如何讓開發(fā)人員使用Kubernetes工作,同時又不因其復(fù)雜性而使他們不堪重負。這個問題的答案可能是需要使用為Kubernetes而準備的開發(fā)者工具,例如DevSpace。在這篇文章中,我們將探討開發(fā)人員如何使用DevSpace和Rancher來簡化Kubernetes開發(fā)。

DevSpace: 使用Rancher輕松開發(fā)

DevSpace是一款面向Kubernetes的客戶端、開源的開發(fā)者工具。它可以:

  • 直接在Kubernetes內(nèi)部構(gòu)建、測試和調(diào)試應(yīng)用程序
  • 通過更新正在運行的容器而不需要重建鏡像或重啟容器來進行熱重載開發(fā)
  • 在團隊內(nèi)部以及在開發(fā)、暫存和生產(chǎn)中統(tǒng)一部署工作流程
  • 自動完成鏡像構(gòu)建和部署的重復(fù)性任務(wù)

DevSpace作為開發(fā)者的客戶端工具,是對Rancher的補充。開發(fā)者在Rancher內(nèi)獲得分配的項目,然后直接在Kubernetes內(nèi)開發(fā)或測試應(yīng)用。這使開發(fā)環(huán)境更接近生產(chǎn)環(huán)境,讓開發(fā)人員在發(fā)布新功能時更有把握,相信一切都能夠在生產(chǎn)環(huán)境中運行良好。

設(shè)置DevSpace

首先需要下載DevSpace二進制文件(https://devspace.sh/cli/docs/getting-started/installation),接下來,在一個已經(jīng)容器化的項目中通過運行devspace init創(chuàng)建一個新的項目。如果你現(xiàn)在手邊沒有一個可以用來進行試驗的項目,你可以使用我們的示例項目:

https://devspace.sh/cli/docs/getting-started/initialize-project#choose-a-project

 
 
 
 
  1. $ devspace init 
  2.  
  3.      ____              ____ 
  4.     |  _ \  _____   __/ ___| _ __   __ _  ___ ___ 
  5.     | | | |/ _ \ \ / /\___ \| '_ \ / _` |/ __/ _ \ 
  6.     | |_| |  __/\ V /  ___) | |_) | (_| | (_|  __/ 
  7.     |____/ \___| \_/  |____/| .__/ \__,_|\___\___| 
  8.                             |_| 
  9.  
  10.  
  11. ? How do you want to initialize this project? 
  12.  Use the Dockerfile in ./Dockerfile 
  13.  
  14. ? Which registry do you want to use for storing your Docker images? 
  15.  Use hub.docker.com => you are logged in as devspacecloud 
  16.  
  17. ? Which image name do you want to use on Docker Hub? devspacecloud/quickstart 
  18.  
  19. ? Which port is your application listening on? (Enter to skip) 8080 
  20.  
  21. [done] √ Project successfully initialized 

在你回答了幾個關(guān)于應(yīng)該被初始化的項目的問題之后,DevSpace將為你創(chuàng)建一個devspace.yaml。這個文件包含了如何使用DevSpace部署和開發(fā)項目,看起來如下所示:

 
 
 
 
  1. version: v1beta9 
  2. # This section defines the images that should be built 
  3. images: 
  4.   app: 
  5.     image: devspacecloud/quickstart 
  6.     preferSyncOverRebuild: true 
  7.     # this option tells devspace to automatically wrap the Dockerfile entrypoint in memory 
  8.     # with a small restart helper script so that the process can be easily restarted from within the 
  9.     # container. 
  10.     injectRestartHelper: true 
  11. # Defines an array of everything (component, Helm chart, Kubernetes maninfests) 
  12. # that will be deployed with DevSpace in the specified order 
  13. deployments: 
  14. - name: quickstart 
  15.   helm: 
  16.     # Uses a special helm chart provided by devspace to complement projects that don't have an own 
  17.     # helm chart 
  18.     componentChart: true 
  19.     values: 
  20.       containers: 
  21.       - image: devspacecloud/quickstart 
  22.       service: 
  23.         ports: 
  24.         - port: 8080 
  25. # Configuration that will be used for developing the application 
  26. dev: 
  27.   # Port forward certain ports from the application to the local computer 
  28.   ports: 
  29.   - imageName: app 
  30.     forward: 
  31.     - port: 8080 
  32.   # Hot reload changes instead of rebuilding the complete docker image all the time 
  33.   sync: 
  34.   - imageName: app 
  35.     # This tells devspace to restart the container after a file was synced into it 
  36.     onUpload: 
  37.       restartContainer: true 
  38. profiles: 
  39. ... 

現(xiàn)在,你可以跨團隊分享這個配置。它指定了如何在Kubernetes內(nèi)部獨立于本地設(shè)置開發(fā)應(yīng)用程序。

要開始開發(fā)應(yīng)用程序,你需要訪問一個Kubernetes集群或Rancher項目。最佳實踐是為每個開發(fā)人員創(chuàng)建一個Rancher項目或者為一個共享集群內(nèi)的開發(fā)者團隊創(chuàng)建一個單一項目。

為了在不同項目和命名空間之間確保簡單的隔離,使用常見的Kubernetes資源,如Resource Quotas、網(wǎng)絡(luò)策略、Pod安全策略和Limit Ranges等。

使用DevSpace開發(fā)應(yīng)用程序

運行命令devspace.dev來開啟開發(fā)流程。這將起到以下作用:

  • 構(gòu)建和部署你的應(yīng)用程序
  • 流式傳輸在部署過程中部署的所有容器日志
  • 轉(zhuǎn)發(fā)在devspace.yaml中的dev.ports指定的所有端口
  • 根據(jù)dev.sync中的同步配置來同步所有的文件更改,這樣你就可以在運行的容器中重啟應(yīng)用程序,而無需重建鏡像或重新部署任何東西
 
 
 
 
  1. $ devspace dev -n test 
  2. [info]   Using kube context 'docker-desktop' 
  3. [info]   Using namespace 'test' 
  4. [done] √ Created namespace: test 
  5. [info]   Building image 'myusername/devspace:C5992q4' with engine 'docker' 
  6. Step 1/7 : FROM node:13.12-alpine 
  7. ... 
  8. [done] √ Done processing image 'myusername/devspace' 
  9. [done] √ Deployed helm chart (Release revision: 0) 
  10. [done] √ Successfully deployed quickstart with helm 
  11. [done] √ Port forwarding started on 3000:3000 
  12. [done] √ Sync started on /devspace/examples/quickstart <-> . (Pod: test/quickstart-5d7f4d8fd-w95cx) 
  13.  
  14. ######################################################### 
  15. [info]   DevSpace UI available at: http://localhost:8090 
  16. ######################################################### 
  17.  
  18. [info]   Starting log streaming for containers that use images defined in devspace.yaml 
  19.  
  20. [quickstart] 
  21. [quickstart] > node-js-sample@0.0.1 start /app 
  22. [quickstart] > nodemon index.js 
  23. [quickstart] 
  24. [quickstart] [nodemon] 1.19.4 
  25. [quickstart] [nodemon] to restart at any time, enter `rs` 
  26. [quickstart] [nodemon] watching dir(s): *.* 
  27. [quickstart] [nodemon] watching extensions: js,mjs,json 
  28. [quickstart] [nodemon] starting `node index.js` 
  29. [quickstart] Example app listening on port 3000! 

本地修改文件后,文件會同步到容器中。容器重啟后無需通過Docker完全重建,大大加快了開發(fā)進程。

然后DevSpace會啟動一個本地UI,你可以訪問和檢查創(chuàng)建的pod。這簡化了與Kubernetes的交互,特別是對于不熟悉kubectl的用戶。

除了devspace dev,devspace deploy命令可以用于打包和部署應(yīng)用程序,而不需要熱重載、端口轉(zhuǎn)發(fā)或日志流。DevSpace提供了許多自定義功能,以根據(jù)你的用例和設(shè)置調(diào)整其行為,包括:

  • 依賴項,可以讓你開發(fā)和部署依賴于其他項目的項目
  • Profiles,可以在一個devspace.yaml中進行多種配置
  • 允許指定動態(tài)配置值的變量
  • 允許為項目配置自定義命令的命令
  • 可以在特定的DevSpace事件上執(zhí)行某些功能的Hooks
  • 自動為devspace命令添加標志(flag)的環(huán)境變量
  • 擴展DevSpace和其命令的插件

DevSpace標準化和簡化了開發(fā)人員與Kubernetes的交互方式的同時,Rancher在服務(wù)器端管理著開發(fā)者如何在Kubernetes內(nèi)部工作。Rancher可以讓你啟動開發(fā)集群并將它們分到不同的項目中,在這些項目中開發(fā)團隊可以一起工作和測試。

Resource Quotas項目除了常見的Kubernetes隔離資源外,還可以在資源方面約束團隊,讓團隊在共享Kubernetes集群中得到公平的使用。共享Kubernetes集群可以減少基礎(chǔ)設(shè)施的開銷并且可以直接在Kubernetes內(nèi)部進行有效開發(fā)。

再為快速開發(fā)添磚加瓦:loft

loft是另一個很有用的工具,它可以在開發(fā)過程中添加一些比較方便的功能,包括:

  • 虛擬集群,比“真實的”集群成本更低,并且可以在數(shù)秒內(nèi)創(chuàng)建并再次清理,而且功能比簡單的命名空間更強大
  • 在共享集群中為開發(fā)人員提供命名空間的自助服務(wù)(self-service)
  • 睡眠模式,在一定時間不活動后,將命名空間置于睡眠狀態(tài),以節(jié)省計算成本

你可以通過安裝loft helm chart(https://loft.sh/docs/getting-started/setup)輕松地將loft添加到Rancher。loft CLI也可以作為DevSpace的插件。

總 結(jié)

對于開發(fā)人員而言,熟練上手使用Kubernetes并不簡單,目前許多企業(yè)仍然在努力尋找一種方法來抽象Kubernetes的復(fù)雜性。這往往導(dǎo)致定制化的平臺缺乏許多功能,限制了Kubernetes的潛力,并且是另一個維護負擔(dān)。

將DevSpace、Rancher和loft結(jié)合起來,讓開發(fā)者可以直接訪問Kubernetes,并且只需要一個命令:devspace dev。

Rancher十分擅長創(chuàng)建和管理多個集群,DevSpace擅長為開發(fā)者提供工具。將Rancher和DevSpace相結(jié)合是十分簡單的,并且可以顯著提升開發(fā)人員的生產(chǎn)力。

此外,loft為開發(fā)團隊提供了更多有用的功能,讓開發(fā)者可以隨時獲得Kubernetes的工作環(huán)境,同時保持低成本。將Rancher、DevSpace和loft這三個工具結(jié)合起來,對于使用Kubernetes的開發(fā)團隊來說,是一個十分理想的設(shè)置。


本文名稱:解放開發(fā)者!3款工具實現(xiàn)快速K8S開發(fā)
地址分享:http://www.dlmjj.cn/article/djeiojc.html