歡迎光臨
每天分享高質量文章

Azure Kubernetes服務是如何讓開發者更有效率的?

容器簡化了應用的部署,伸縮和執行。Kubernetes是編排和管理容器的平臺,它整合了虛擬環境中日益增加的應用所需要的元件。現代的app開發途徑近乎貪婪的胃口,已經在構建容器和Kubernetes技術的開源社群建立了一個強制功能。
Kubernetes生態系統仍然提供有關在生產中有效執行複雜的容器化應用程式的關鍵技術。但是對於現在將要使用容器的主流開發者而言,問題不是他們的app要不要執行在Kubernetes,而是如何在Kubernetes上執行的更有效。
憑藉強大的Kubernetes核心,現在是容器和Kubernetes發展的下一個階段。而今,開發人員的體驗將變得至關重要。這是Azure Kubernetes Service(AKS)架構師的核心信仰。從構建和測試容器映象到除錯和部署至生產線,AKS使開發人員體驗更簡單。
微軟的新AKS開發者工具反應了這種對開發者體驗的重視。基於Visual Studio的開發工具,簡化了Kubernetes的開發工作流程。此工具為執行在Kubernetes上,基於複雜的微服務的應用,設定一個更容易的開發環境,以及預生產測試,迭代開發和快速除錯。
“在分散式系統時代,開發人員是不容易的。在讓主流開發人員能夠使用容器和容器編排以及構建分散式應用程式方面,我們還有很長的路要走。” Gabe Monroy,微軟Azure容器團隊的專案經理說道。“ 業界一直以來專註於API和有原則的分層架構——這很好,我們需要這些——但是對於應用程式開發人員的體驗並沒有那麼多關註。我們如何使在這個新世界中開發軟體的過程感覺像以前一樣?


Kubernetes使開發者面臨從構建到部署的一系列挑戰

不熟悉Kubernetes的開發人員面臨著很高的進入門檻。想要利用好容器就可能意味著需要數小時的研究。他們首先學習如何編寫Dockerfile,清單和Helm圖表,以及使用Draft進行本地開發。然後他們逐步研究如何進行程式碼測試,內建到映象中,連結到Brigade的持續整合工作流,並安全地部署到叢集上,這需要建立審計日誌而沒有任何偶然的部署。
但是開發人員還需要設定他們的開發環境來處理容器,使其看上去,感覺上和表現地和生產環境一樣。它還必須和為了應用程式提供支援的所有其他微服務,容器和外部依賴項整合,這意味著在本地存根或模擬服務以匹配該服務。在一個大型專案中,每個開發人員都必須花時間來做這件事,即使他們可能只處理其中的一小部分。
此外,他們想在他們的環境中使用熟悉的,豐富的開發者工具,使用日誌,以便他們可以針對實時服務進行除錯,以及直接從IDE進行斷點和快速部署,以便他們可以測試更改程式碼。
“你肯定已經聽說過這樣一個業界的梗,Kubernetes對於開發人員來說還是太難了。” Monroy說道。“我們同意這是下一代基礎設施——沒有人可以使用它,它很棒!” 這是一個有點嚴肅的笑話。


微軟的Kubernetes開發者工具

一次又一次,微軟已經改變了不同領域的開發者的體驗,從Excel和Access到Logic Apps,現在是新的Azure Dev Spaces服務,用於針對AKS的快速開發。
微軟的標的是支援那些現在開始使用容器的主流開發者。為此,公司正在從其在開發者工具方面的歷史,以及從建立Helm,Brigade和Draft等開源工具中學到的知識。微軟也是Kubernetes上游專案的主要貢獻者——Kubernetes聯合創始人Brendan Burns領導了微軟容器小組——微軟是Cloud Native Computing Foundation(CNCF)的成員。
“微軟作為一家面向開發者的公司的基因已經被啟用,您將看到微軟開發部門的全部力量將在CNCF世界中釋放出來,” Monroy 說道。


AKS Dev Spaces中除錯微服務只需5分鐘

在Kubernetes叢集中,Dev Spaces為每個開發者在專案中建立一個獨立的沙盒空間。他們可以從熟悉的IDEs直接使用這個空間,如,Visual Studio和Visual Studio Code(Windows,Mac or Linux),或者是命令列。他們執行在線上的雲端Kubernetes叢集,使開發環境就像生產環境一樣,擁有app所需的所有的依賴庫和微服務以及互動的服務。那些沒有許可權或技能去設定這些服務的開發者仍然能夠測試這些執行在雲端的服務。但是他們直接進入到程式碼所在的容器,並且獨立的除錯和迭代他們;不會影響其團隊中的開發者。
使用namespace隔離和多租戶控製為Kubernetes叢集設定隔離通常非常複雜; 而這僅是Dev Spaces中Azure access模組所附帶的功能。但是因為AKS是完整的Kubernetes,Dev Spaces是使用原生Kubernetes概念實現的現有AKS叢集的附加元件,你可以使用其他Azure服務或第三方工具。如果你想使用Azure Key Vault或Hashicorp Vault來註入秘密,那麼不用將它們儲存在程式碼中,就能生效。
但與Visual Studio整合的優點在於,除了容器和雲服務的所有功能外,開發者還可以獲得熟悉的工具和工作流程的生產力。他們可以從建立一個新專案到設定斷點,然後點選F5來除錯他們的程式碼,就像他們在自己的系統上執行程式碼一樣。就像編寫任何其他型別的應用程式時一樣,他們獲得IntelliSense和新的IntelliCode AI支援,用於編寫程式碼甚至是Visual Studio Live Share的協作編輯。但是因為執行在AKS上,他們也能看到容器執行的健康狀態和搜尋生產日誌以確定哪裡出了問題。一旦發現了Bug,他們就能修複並且按F5直接傳送這些更改到AKS並且執行他們。
“隨著世界已經接受了這些複雜的微服務環境,現在開發人員走向環境並提高工作效率變得非常困難。” Monroy指出。
當一個應用程式可以包含數百個微服務,每個微服務都有自己的資料儲存排列,修複一個服務中的錯誤就像在大海撈針一樣。在膝上型電腦上設定一百個服務或模擬它們以及所有後備儲存對於開發人員而言非常耗時。只需設定他們的環境,以便他們可以找到並修複過去需要一天的整體應用程式。現在,準備好處理複雜的分散式應用程式可能需要數周時間,如果開發人員甚至可以正確設定它。
“Dev Spaces提供了使用Azure帳戶進行操作的功能,您可以在五分鐘內修複錯誤,” Monroy 說道。
在幕後,Dev Spaces將開發人員在本地工作的程式碼中的更改直接同步到容器中。對於大多數更改,更新時不需要重建和重新部署容器映像。意味著開發人員在等待檢視更改是否修複了錯誤時不會丟失編碼流程。對於Node.js開發人員來說,每次檢測到檔案更改時,nodemon都會自動為他們重新啟動節點服務,並且只需要掃清瀏覽器以檢視他們的新程式碼,這將感覺熟悉且高效。
Dev Spaces使用服務網格路由來允許開發人員除錯非常複雜的分散式應用程式,Monroy解釋說。“透過在URL中附加字首,您可以指示服務網格將流量路由到正在進行開發的容器中。”
“現有的開源生態系統中沒有任何東西可以進行智慧程式碼同步或流量路由,” Monroy 指出。“如果您在GKE上有一個應用程式並且您在GKE上使用Draft,那麼您可以將相同的應用程式帶到Azure,並透過更快的迭代迴圈,整合空間和流量路由獲得Dev Spaces的更好體驗。”
Visual Studio,Dev Spaces和AKS之間的緊密整合意味著在Azure上使用Kubernetes的開發人員在開始使用雲原生工具時不會失去他們用於本地開發的生產力。
原文連結:https://thenewstack.io/how-the-azure-kubernetes-service-makes-developers-more-productive/

Kubernetes實戰培訓

Kubernetes應用實戰培訓將於2018年10月12日在深圳開課,3天時間帶你係統學習Kubernetes本次培訓包括:容器基礎、Docker基礎、Docker進階、Kubernetes架構及部署、Kubernetes常用物件、Kubernetes網路、儲存、服務發現、Kubernetes的排程和服務質量保證、監控和日誌、Helm、專案實踐等,點選下方圖片檢視詳情。

贊(0)

分享創造快樂