容器正迅速成為企業應用程序的打包和部署工具。然而,許多IT人員仍然隻是将容器視為從物理服務器向虛拟機遷移進程中的一個邏輯環節而已,他們認為,相對于運行在物理服務器上的虛拟機數量而言,容器在計算密度上又增加了一個量級。
雖然這種觀點認識到了容器意味着IT部門需要管理的事物在數量級上又将出現一次爆炸,但他們沒有認識到容器生态系統帶來的最重要的變化,即容器将導緻軟件交付工作流程發生根本性變革。
在傳統的軟件交付工作流程中,兩個獨立的團隊負責堆棧的不同層:運維團隊負責操作系統鏡像,開發團隊負責應用程序構件。在這一工作流程中,應用程序構件和相關性将通過操作系統打包方式,如RPM(紅帽打包管理器)、MSI(Windows打包管理)等等……由開發轉至運維。運維團隊會将這些構件部署在符合公司策略且包含有監測和日志記錄軟件的操作系統鏡像上。随後,這一複合鏡像會在生産中運行。開發團隊會通過将新軟件包交給運維團隊的方式來不斷推動應用程序的發展,同時運維團隊會通過使用腳本或配置管理軟件的方式部署這些更新以及任何其他的更新(例如解決操作系統漏洞的補丁)。
基于容器的軟件交付方式不同于傳統方式
容器交付工作流程完全不同于傳統的軟件交付工作流程。開發團隊和運維團隊将合作創建一個由不同層組成的單一容器鏡像。這些層從操作系統開始,然後添加相關性(每個都在自己的層中),最後是應用程序構件。更重要的是,容器鏡像在軟件交付過程中被視為不可變的鏡像:對底層軟件的任何改動都需要重建整個容器鏡像。通過使用聯合文件系統将基本操作系統鏡像與應用程序及相關性組合在一起,容器技術和Docker鏡像比虛拟機鏡像結構等早期方法更具實用性。對每個層的修改隻需要重建該層即可。這使得每個容器鏡像的重建比重新創建一個完整的虛拟機鏡像要便宜許多。此外,架構出色的容器隻運行一個前台進程,這也與将應用程序分解為衆多微服務的實踐完全相符。因此,與傳統的操作鏡像相比,容器鏡像更小且更容易重建,這也使得後者的部署和啟動時間大幅降低。
不可變性和微服務架構的一個重要影響是,運維團隊用于進行配置管理、監視和日志記錄的軟件代理通常無法在容器鏡像中找到。相反,如果軟件必須進行修改,那麼容器化應用要重建整個鏡像。日志記錄和監視同樣要外部化到容器編排系統。換言之,代理不會在運行時進行軟件修改,因為它們是在構建時創建的。通過使用自動化的構建/測試/部署周期(通常稱為持續集成/持續交付,CI/CD),自動化工作從運行時活動轉變成了構建時活動。
在容器範式背景下交付IT
當然,我們在IT中所關注的核心問題并沒有消失,即我們需要一些機制來确保應用程序沒有漏洞,運行已經過IT認證的最新軟件版本,讓它們可以随負載進行擴展,同時能夠提供數據痕迹從而使記錄和監測系統能夠幫助我們發現問題,甚至在問題發生之前對其進行預測。
為了充分利用容器帶來的敏捷性,以及為我們提供運營業務所需的安全、管理、合規和審計跟蹤,我們必須重新設計軟件交付工作流程。容器編排系統和容器交付管道是我們當前需要維護和運營的兩個最重要的技術。
關于前者,在過去兩年中,Kubernetes已成為多廠商開源标準。Kubernetes提供的功能曾經是每個IT部門都需要掌握的:工作負載調度、日志聚合、擴展、運行狀況監控和無縫應用程序升級。IT部門不是通過保留舊的工作流程和工具來對抗這些内置功能,而是需要接受它們作為新“操作系統”的一部分,并圍繞Kubernetes提供的内容構建其工作流程。
第二個關鍵組件是容器交付管道。這個系統可以為每個代碼簽入實現構建/測試周期自動化,并将成功的簽入部署到容器編排系統中。運維工作流程中最關鍵的變化是将軟件交付生命周期的核心部分(如漏洞修複)移出生産系統的運行時監控并将其轉入構建管道。例如,運維團隊不需要在正在運行的容器上修補易受攻擊的軟件包,取而代之的是需要使用容器檢查工具标記易受攻擊的軟件包版本,觸發容器鏡像的重建,掃描鏡像以查找CI/CD管道中易受攻擊的軟件包,以及僅部署通過這些掃描的鏡像。
通過新的容器工作流程統一開發與運維
對于IT來說,他們可能會認為這是一個可怕的轉變,但實際上這一轉變與向開發運維的轉變完全一緻。通過讓開發和運維在應用程序的構建階段協同工作,可以在軟件交付生命周期的早期發現問題,并且通過為開發和運維提供更密切的工作流程,可消除為解決這些問題所帶來的大量浪費。
IT現在有兩個額外的任務關鍵系統可為業務進行标準化和運維:容器編排系統和容器交付管道。但是,配置管理系統、日志聚合系統和監控系統等常見IT設備會發生什麼?它們不會在容器世界中消失。相反,他們承擔不同的角色。配置管理系統用于部署和管理核心分布式系統的生命周期,例如容器編排系統、容器交付管道以及未在容器中運行的數據管理系統等其他相關的東西。日志聚合系統通過提供來自容器編排系統和容器交付管道的日志,繼續為審計、取證和預測分析提供關鍵功能。監控系統則将對來自容器編排系統的數據與其他外部數據源進行聚合。
利用開發運維和容器建立結構性競争優勢
那些能夠将引入的企業标準容器編排系統和容器交付管道與開發運維轉型相結合的企業将享受到這一新工作流程與生俱來的敏捷性優勢,能夠更快地進行測試和從客戶那裡總結經驗,并最終比競争對手更快地向客戶提供适當功能。這些有遠見的企業将建立起重要的結構性競争優勢,并将成為新的開發運維和容器領域中的主要受益者。
本文作者OmriGazitt為自動化運維軟件企業Puppet的首席産品官,負責監督工程、産品管理、下一代技術和相關宣傳工作。
原文網址
https://www.infoworld/article/3268806/containers/containers-areeating-the-world.html