本文來自Rancher Labs
前 言
實際上,沒有一個遷移路徑能夠適用於將所有傳統應用程序遷移到雲。這些應用程序通常在物理機、虛擬機或本地。雖然一般情況下是重新設計應用程序架構以適用雲原生服務,但這並非是唯一的答案。將一個現有的應用程序的架構重新構建為微服務架構或雲原生架構會面臨諸多挑戰,如重構成本、復雜性以及應用程序的依賴性。
雖然將應用程序的架構現代化有諸多好處,但許多組織仍在Windows 2003 Servers上運行現有服務。而微軟不再支持Windows 2003為此帶來了一些挑戰。首先,人們不得不開始決定要如何處理這些應用程序,特別是Windows 2008的生命周期也即將結束。
許多企業想要遷移到現代架構中,期望以此能讓他們的應用程序獲得復雜性、安全性和可用性。而容器提供了使應用程序現代化並將其移至雲原聲服務的靈活性。在本文中,我們將重點介紹能夠遷移到容器的應用程序,一般是.Net、Web、SQL和其他沒有依賴性但在Windows2003上運行的應用程序。你可以無需更改代碼就能將這些應用程序遷移到容器,並且使它們在將來具備可移植性。你將會享受到在Kubernetes上運行容器的好處,如可編排、可用性、更高的彈性伸縮和密度。
請注意:不是所有的應用程序和服務都能運行在容器中。有些應用程序存在核心依賴項(如數據庫、存儲需求等),這些都需要解決。此外,需要根據業務決定應用程序的持續壽命。
商業層面:遷移到Kubernetes的優勢
將這些應用程序遷移到容器有一些關鍵的業務原因,如:
-
投資回報率高
-
傳統的基於Web的服務可以獲得可移植性
-
應用程序安全性提升
-
節省企業重新評估現有應用程序的時間
既然Kubernetes支持Windows的worker節點,那么你可以遷移傳統的Windows應用程序到現代架構中。Windows worker和Linux worker可以共存在同一個Kubernetes平台中,也就是說,運維團隊可以適用同一套工具、實踐以及過程。
Step1:分析從Windows遷移到K8S的過程
將傳統應用程序遷移到Kubernetes需要大量的分析和計划。但是,有一些關鍵的實踐是十分必要的,比如:
-
分解應用程序:將應用程序拆分為原始形式,以了解哪些組件正在運行,它們如何運行以及它們的依賴關系
-
發現應用程序提供的服務以及在數據、網絡等方面產生的調用
-
從應用程序中解耦出數據層
-
確定並映射服務依賴項
-
測試、測試再測試
Step2:規划從Windows到K8S的遷移過程
遷移到容器化、基於.Net的平台是一個復雜的流程,中間會涉及許多步驟。因此,在執行這一流程時需要做出一些關鍵的決定。以下過程提供了一些有關遷移舊Windows系統以在Kubernetes上運行的要求的指導。
-
確定你的容器所需要的操作系統——Server Core或Nano Server。這需要根據應用程序的依賴項進行選擇。
-
遵循兼容性准則。運行Windows容器會為主機的OS版本和容器正在運行的基本鏡像添加嚴格的兼容性規則。它們必須運行Windows 2019,因為容器及底層主機共享一個內核。截至成文時,僅支持服務器隔離進程。然而,很快會開始支持Hyper-V隔離(具體時間未知),這將有助於主機和容器的兼容。
-
打包你的傳統應用程序。
-
使用應用程序包構建基於Docker的初始容器。
-
在你所選擇的倉庫中部署一個新的Docker容器
-
充分利用現有的DevOps工具(CI/CD構建和發布流水線)
-
部署新的Windows應用程序到你所構建的支持Windows的Kubernetes環境中
-
測試、測試,再測試
將Windows應用程序遷移至K8S的關鍵優勢
通過從Windows遷移到Kubernetes,你的舊應用程序將享有你現有基於容器的應用程序的優勢。此外,你的Windows容器也將會從Kubernetes平台本身獲得優勢。而且,它們可以使用Kubernetes生態中的工具和系統,包括安全性工具、服務網格、監控/告警等。
這些優勢疊加在一起,可以讓你處於有利地位,以便於對應用程序做出關鍵決策並發掘業務用例。對於無法遷移的應用程序,由於缺乏對底層操作系統的支持,因此你不能對此放任不管,仍然需要決定如何處理它們。而且由於沒有其他可用的補丁或安全補救措施,因此你的企業容易受到漏洞和攻擊,所以應該及時采取行動。
從Windows遷移到K8S的關鍵要點
-
基於容器的解決方案可以節省成本
-
容器減少依賴項並為應用程序提供可移植性
-
Docker已經是運行容器的事實標准,同時Kubernetes是容器編排引擎的事實標准
-
Kubernetes可以托管可伸縮、可靠且具有彈性的基於Windows容器的應用程序以及基於Linux的應用程序
-
運行Kubernetes平台的組織可以將傳統應用程序集成到他們的DevOps文化和工具中
-
利用原生和基於生態系統的Kubernetes工具可以提高安全性並為傳統應用程序增加額外的保護層
在Rancher 2.3中,GA了對Windows容器的支持。通過把Kubernetes的所有優勢引入Windows,Rancher 2.3極大降低了企業使用Windows容器的復雜性,並為基於Windows遺留應用程序的現代化提供快捷的途徑——無論這些程序是在本地運行還是在多雲環境中運行。此外,Rancher 2.3還可以將它們容器化並將其轉換為高效、安全和可遷移的多雲應用程序,從而省去重寫應用程序的工作。
作者簡介
Kelly Griffin是基礎架構,安全和微服務顧問,在提供企業解決方案方面擁有20多年的經驗。他所服務過的企業遍布全球,包括澳大利亞、新加坡、新西蘭等。他在使用Docker和Kubernetes的容器化方面有豐富的經驗。