透過 Migrate to Container 新的 CLI 工具迎接應用程式現代化

您有已經運行五年、十年或二十年的應用程式嗎?

恭喜,這代表您擁有相當受歡迎且具價值的應用程式!但是這些既有的應用程式往往建立在較舊的技術、平台之上,這可能使得它們難以維護和升級。將這些應用程式現代化成容器或無伺服器服務能產生大量的好處,包括:

  • 提升敏捷性:容器可以輕鬆部署和擴展,讓企業能更敏捷的回應需求變化
  • 提升性能:容器比傳統的虛擬機器更有效率,帶來更好的性能
  • 增強安全性:轉移到基於容器的架構讓導入 DevSecOps 更輕鬆,並且能夠引入供應鏈安全和映象檔安全掃描
  • 降低成本:容器可以採用 pay-as-you-go 的部署模式,且相較於虛擬機器,提高資源使用率,這能幫助企業節省大量 IT 成本
  • 導入新技術:使用容器化的基礎架構,並將舊的應用程式在容器上運行,更容易讓既有的應用程式使用雲原生技術,如 AI/ML 和分析。
  • 受益於現代化作業:讓既有的應用程式運行在容器上可以讓企業受益於維運成本的減少,例如使用宣告式 (declarative) 基礎架構和自動化 CI/CD。

應用程式現代化需要投資,但投資報酬率ROI)值得期待

現代化舊有的應用程式有許多種方法。其中一種是從頭開始重寫應用程式。然而,這可能相當耗時且昂貴;一個較為划算的方法是使用現代化的技術堆疊 (technology stack)。這可以透過使用雲端平台達成,如 Google Cloud 的容器化平台,像是 Google Kubernetes Engine或無伺服器平台 Google Cloud Run

企業運行既有的 workload 通常是其核心業務的組成,在其商業流程中扮演貢獻收入或支援生產的重要角色。企業發展雲端數位轉型計畫時,需要決定如何應對既有的應用程式。考量從頭重寫程式碼會產生的工作量和成本,企業尋求替代方案,如重構應用程式讓它能在容器上運行。Migrate to Containers 提供的方法將重複使用在 middleware 框架上執行的軟體執行檔 (software binaries),像是 Windows IIS、Tomcat、IBM WebSphere 或 JBoss,並讓這些執行檔能在容器上執行。透過轉移執行檔,應用程式層級 (application layer) 保持未更改的狀態。應用程式所需的底層服務過去由 middleware 框架和作業系統提供,而現在由 Kubernetes 生態系提供。

這裡您現代化的是 runtime 和計算主機,而不是應用程式架構或程式碼本身。

(圖一):Tomcat 應用程式重構範例圖
icon/enlarge

在哪裡重構最為合理?

現代化容器化對 IT 架構師和 CIO 來說聽起來很有吸引力,但它是否適用使用前述框架的軟體?這個問題的答案取決於軟體的架構和設計,而這有時對於負責容器化既有軟體的人員來說是未知的。例如,限制容器化的原因可能來自於寫在程式碼內的 IP 地址等其他資源的存取,或關於軟體部署的邏輯。因此,技術評估 (assessment) 檢查現有軟體架構並指出可能存在的障礙,以消除現代化的風險,扮演現代化的關鍵角色。Google Cloud 提供多種評估選項,包含  Fit Assessment Tool (mFit)。 mFit 工具檢查軟體的執行檔、配置文件和運行的服務,提供詳細的軟體容器化適配性評估。在某些情況下,需要更進一步使用程式碼掃描,則需要存取程式碼,此時可以使用 Google Cloud partners 提供的工具像是  CAST  或 vFunction

如何讓現代化到容器變得更容易?

容器化是一種將應用程式元件和其相依性封裝成單一單位的過程,以方便部署和管理。這讓應用程式更容易在不同環境之間遷移,並且提高效能和安全性。Google Cloud 正在推出一個新的 Migrate to Containers CLI 工具,這讓您可以將既有的軟體現代化成能夠在 GKE (Standard)、GKE Autopilot、Cloud Run 或 Anthos clusters 上運行的容器。Migrate to Containers CLI 工具基於現有的 Migrate to Containers 服務,並引入了容器化功能。使用獨立、易於操作的 CLI 工具幫助您容器化既有的應用程式。這個新的 CLI 工具自動化了將應用程式轉換為容器的過程。它能夠將基於 Tomcat、WebSphere、Apache、JBoss 和 WordPress 等框架的各種軟體容器化。其他框架也正在被開發,如 Windows IIS 應用程式和 Linux 系統上的軟體現代化。

如何使用 Migrate to Container 新的 CLI 工具現代化既有的應用程式?

要將既有的應用程式容器化。您通常需要經歷以下階段:Assess、Copy、Analyze、Generate 和 Deploy。

  • Assess: 應用程式進行適配性評估
  • Copy: 複製應用程式檔案至本地端
  • Analyze: 分析本地端的應用程式檔案
  • Generate: 生成將應用程式以容器運行所需的 artifact
  • Deploy: 部署至目標機器並更新 pipeline 腳本 (skaffold)
(圖二):應用程式容器化各階段
icon/enlarge

以下的範例中我們將使用開發者本地端的工具,現代化 Tomcat 應用程式,將它從 source 機器移植到 Google Kubernetes Engine。

(圖三):Tomcat 應用程式現代化流程圖
icon/enlarge

1.下載並安裝 Google 現代化工具 mFit 和 Migrate to Containers (M2C) CLI 工具的執行檔到您的本地端環境。

    1. 使用以下指令下載安裝 mFit:
1curl -O "https://mfit-release.storage.googleapis.com/$(curl -s https://mfit-release.storage.googleapis.com/latest)/mfit" 2chmod +x ./mfit

             b. 使用以下指令下載安裝 M2C CLI 工具:

1curl -O "https://m2c-cli-release.storage.googleapis.com/$(curl -s https://m2c-cli-release.storage.googleapis.com/latest)/linux/amd64/m2c" 2​ 3chmod +x ./m2c

2. Assess 應用程式 使用以下指令在來源機器上對您既有的應用程式進行適配性評估。這個工具會在來源機器上執行收集 (collection) 腳本,且您不需要停止正在運行的程序。如果想了解透過 SSH 收集的更多資訊請參閱官方文件

1./mfit discover ssh source_machine

接著產生一份 HTML 報告。

1./mfit report --format html --full > report.html
(圖四):本地端瀏覽器檢視評估報告頁面
icon/enlarge

3. 複製使用以下指令複製來源機器上的應用程式資料夾到您的本地端機器。

1./m2c copy ssh myuser@source_machine -i <path/to/private/key> -o <output/tar/path>

4. 分析:使用以下指令分析應用程式檔案,並使用與您的應用程式相關的參數

1./m2c analyze -s <output/tar/path> -p tomcat-container -o <output/path> -r catalina-home=<path/to/catalina/home> 2-r catalina-base=<path/to/catalina/base>

在這個範例中我們使用了容器化 Tomcat 應用程式的指令。在這個階段你可以編輯產生出來的遷移 YAML 檔以配置參數,如 server 名稱、要 expose 的 port、需要的 deployment 檔案,或是您希望從產生出來的容器 image 移除的敏感資料。

5. 生成:使用以下指令生成出容器 image、artifacts.yaml 和 skaffold.yaml

1./m2c generate -i <analysis/path> -o <output/path>

6. 部署:使用產生的 Skaffold 配置文件在目標 cluster 上部署產生出來的 artifact。您可以使用一個單一的指令建置和部署至您的 GKE cluster。先選擇一個對目 cluster 可用的 image repository 存放您的 image。接著,在產生出來的 artifact 的目錄中,執行以下指令。

1skaffold run -d <image-repository>
訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。