為什麼容器協調流程很重要?
- 7 分鐘
在此單元中,您可以參考Tailspin小組如何制定策略,以執行管理層的新指令。 小組會檢查 Kubernetes 如何協助轉換至微服務架構。
未來變得更小
Tailspin 的情況開始好轉。 在最近的管理層的外部會議中,Andy 向小組展示了他們最近在 Azure DevOps 的成功運用,並獲得了好評。 Andy 也展示了小組最近使用 Docker 容器的概念證明項目示範。 這些示範引發了一系列關於組織技術未來的富有成效的對話。 第二天,Andy 返回與Space Game Web團隊分享新聞。
安 迪: 昨天在我的異地演講中,事情進展非常順利。 管理對我們到目前為止所做的工作印象深刻,併發佈了一項特別的任務。
提姆: 哦, 哦。 我太有經驗了,我一看就知道這是陷阱。
安 迪: 不,對我們來說,這是一個很好的機會。 管理喜歡我們的 Docker 容器示範,並希望我們探索採用微服務架構。
Amita:微服務? 喜歡手機和手錶上的應用程式嗎?
Andy:否,微服務是典型的應用程式,例如我們的 Web 應用程式。 主要差異在於,我們不會建置和部署單一整合型應用程式,而是重構任何可更妥善維護及管理為自主服務的元件。 然後,我們會建置這些服務,使其精通所需功能,並部署它們以獨立運作。
蒂姆:我不確定我喜歡這個聲音。 我已經在處理我們環境中這麼多的服務。 我不知道自己是否想承擔更多責任。
Andy:這是一個可以理解的問題。 幸運的是,有一些絕佳的工具可在指定的環境中管理許多容器。 我們被要求針對使用 Kubernetes 進行協調的 Web 應用程式,推出多容器解決方案。 他們也想要知道其如何影響我們的 DevOps 程式。
Mara:我一直在研讀 Kubernetes。 Azure 透過 Azure Kubernetes Service 可以很好地加以支援,而且我知道 Azure DevOps 中對其有管線支援。
Amita:這個過程聽起來會變得很複雜。 它如何影響測試?
Mara:這不應該是一個重大的變化。 Kubernetes 提供一種方式,讓我們部署至不同的命名空間。 這可讓我們分割我們的部署,以便讓整個環境專用於測試與生產環境。 而且,由於它們全都在同一個叢集中執行並使用相同的容器,因此測試體驗應該提供我們預期在生產環境中看到的內容。
Amita:要持續追蹤什麼環境在何處會不會很難?
Mara:否,我們可以使用 Azure DevOps 環境來執行這一切。 您將能夠透過入口網站查詢每個服務的位置以及它們如何到達那裡。 這全都是透過管線自動化的,因此我們不需要手動追蹤。 我現在唯一擔心的是,它將對我們的開發過程產生多大影響。
Andy:好消息是影響最小。 假設我們已將專案設定為建置 Docker 容器,那麼我們要部署至 Kubernetes 所需的僅是一些描述服務及其部署的宣告文件。
Mara:您是否考慮過我們要重構成第二個容器的部分? 我知道有幾個小組要求我們透過 Web API 提供我們的排行榜。
Andy:我比你領先一步。 我昨晚分叉了 Docker 專案,並將排行榜數據功能重構為一個獨立的微服務。 這讓我們有一個網站容器,另一個容器用於排行榜 API。 這兩個容器都設定為有自己的公用端點,我們可以與任何想要使用網站或 API 的人員共用,而不論其應用程式所使用的技術堆棧為何。 如果這兩個容器的負載大幅成長,那麼,我們可以個別調整其容器。
Mara:這個專案聽起來真棒! 讓我們開始更新發行管線。
什麼是 Kubernetes?
Kubernetes 是開放原始碼容器協調流程平台,可將容器化應用程式的部署、調整和管理自動化。 它提供一個架構,以宣告式、回應式的方式執行分散式系統,並可跨多部主機執行容器,提供有效率的資源使用和更高的可靠性。
Tailspin 小組為此案例選取了 Kubernetes,因為它符合其所有需求:
多容器部署的複雜性:Kubernetes 首先設計為自動化部署和維護容器部署的程式。
環境與階段的一致性:就像容器確保其包含之應用程式的一致部署一樣,Kubernetes 可確保叢集所管理的容器部署一致。
Azure DevOps 支援:Azure DevOps 提供使用 Kubernetes 的第一級支援。
輕鬆開發:Kubernetes 對來源專案的影響與新增 Docker 支持的影響相當,這最小且僅限於宣告式組態。
採用 Kubernetes 可以大幅簡化微服務架構的採用過程,該架構利用多個 Docker 容器。