ASP.NET 應用程式容器化和移轉至 Azure App Service
在本文中,您將了解如何使用 Azure Migrate 應用程式容器化工具,以將 ASP.NET 應用程式容器化,並將其移轉至 Azure App Service。 容器化程序不需要存取您的程式碼基底,並提供簡單的方法來容器化現有的應用程式。 此工具的運作方式是使用伺服器上應用程式的執行狀態來判斷應用程式元件。 此工具接著會協助您將其封裝在容器映像中。 您接著可以在 Azure App Service 上部署容器化應用程式。
Azure Migrate 應用程式容器化工具目前支援:
- 將 ASP.NET 應用程式容器化,並將其部署至 App Service 上的 Windows 容器。
- 容器化 ASP.NET 應用程式,並將其部署至 Azure Kubernetes Service (AKS) 上的 Windows 容器。 深入了解此容器化情節。
- 將 Apache Tomcat (位於 Linux 伺服器) 上的 Java Web 應用程式容器化,並將其部署至 AKS 上的 Linux 容器。 深入了解此容器化情節。
- 將 Apache Tomcat (位於 Linux 伺服器) 上的 Java Web 應用程式容器化,並將其部署至 App Service 上的 Linux 容器。 深入了解此容器化情節。
應用程式容器化工具可協助您:
- 探索應用程式元件。 此工具會遠端連線至執行 ASP.NET 應用程式的應用程式伺服器,並探索應用程式元件。 這會建立 Dockerfile,而您可以將其用來建立應用程式的容器映像。
- 建置容器映像。 您可以根據應用程式需求檢查並進一步自訂 Dockerfile,並將其用來建置應用程式容器映像。 應用程式容器映像會推送至您所指定的 Azure 容器登錄。
- 部署到 Azure App Service。 此工具接著會產生將容器化應用程式部署至 Azure App Service 所需的部署檔案。
注意
Azure Migrate 應用程式容器化工具可協助您探索特定應用程式類型 (Apache Tomcat 上的 ASP.NET 和 Java Web 應用程式),以及其在應用程式伺服器上的元件。 若要探索伺服器,以及內部部署電腦上執行的應用程式、角色和功能詳細目錄,請使用 Azure Migrate 探索和評量工具。
並非所有應用程式都能從直接轉移至容器而受益,而不需要進行重大重新架構。 但是,將現有應用程式移至容器而不需要重寫的一些優點包括:
- 改善的基礎結構使用率。 使用容器時,多個應用程式可以共用資源,並裝載在相同的基礎結構上。 這可協助您合併基礎結構,並改善使用率。
- 簡化管理。 將您的應用程式裝載在 AKS 和 App Service 這類新式受控平台上,即可簡化管理做法。 您可以淘汰或減少傳統上以所擁有基礎結構來執行的基礎結構維護和管理程序,來達成這項簡化。
- 應用程式可移植性。 隨著容器規格格式和平台的採用和標準化不斷地增加,應用程式可移植性不再是問題。
- 使用 DevOps 來採用新式管理。 使用容器可協助您採用並標準化新式管理和安全性做法,並轉換至 DevOps。
在本教學課程中,您將了解如何:
- 設定 Azure 帳戶。
- 安裝 Azure Migrate 應用程式容器化工具。
- 探索 ASP.NET 應用程式。
- 建置容器映像。
- 在 App Service 上部署容器化應用程式。
注意
教學課程會提供情節的最簡單部署路徑,讓您可以快速設定概念證明。 教學課程會使用預設選項 (如果有的話),而且不會顯示所有設定和路徑。
必要條件
在開始本教學課程之前,您應該:
需求 | 詳細資料 |
---|---|
識別要在其上安裝工具的機器 | 您需要在其上安裝和執行 Azure Migrate 應用程式容器化工具的 Windows 機器。 Windows 機器可以執行伺服器 (Windows Server 2016 或更新版本) 或用戶端 (Windows 10) 作業系統。 (此工具可以在您的桌面上執行。) 執行此工具的 Windows 機器應該具有網路連線能力,可連線至伺服器或虛擬機器,而伺服器或虛擬機器裝載您將容器化的 ASP.NET 應用程式。 請確定執行 Azure Migrate 應用程式容器化工具的 Windows 機器上具有 6 GB。 此空間適用於儲存應用程式成品。 Windows 電腦應該可以直接或透過 Proxy 存取網際網路。 如果尚未在執行應用程式容器化工具和應用程式伺服器的機器上安裝 Microsoft Web Deployment 工具,則請加以安裝。 您可以下載工具。 |
應用程式伺服器 | 在應用程式伺服器上啟用 PowerShell 遠端:登入應用程式伺服器,然後遵循這些指示來開啟 PowerShell 遠端。 確定已在應用程式伺服器上安裝 PowerShell 5.1 版。 遵循在應用程式伺服器上安裝和設定 WMF 5.1 中的指示。 如果尚未在執行應用程式容器化工具和應用程式伺服器的機器上安裝 Microsoft Web Deployment 工具,則請加以安裝。 您可以下載工具。 |
ASP.NET 應用程式 | 此工具目前支援:
此工具目前不支援:
|
準備 Azure 使用者帳戶
如果您沒有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
設定訂用帳戶之後,您將需要具有下列項目的 Azure 使用者帳戶:
- Azure 訂用帳戶上的擁有者權限。
- 註冊 Microsoft Entra 應用程式的權限。
如果您剛建立免費的 Azure 帳戶,您就是訂用帳戶的擁有者。 若您不是訂用帳戶擁有者,請與擁有者合作以根據下列步驟指派權限:
在 Azure 入口網站中,搜尋「訂用帳戶」。在 [服務] 下方,選取 [訂用帳戶]:
在 [訂用帳戶] 頁面中,選取您要在其中建立 Azure Migrate 專案的訂用帳戶。
在訂用帳戶的左窗格上,選取 [存取控制 (IAM)]。
在 [檢查存取權] 索引標籤上,搜尋相關的使用者帳戶。
在 [新增角色指派] 下方,選取 [新增]:
在 [新增角色指派] 頁面上,選取 [擁有者] 角色,然後選取帳戶 (在我們的範例中為 azmigrateuser)。 然後選取儲存。
您的 Azure 帳戶也需要註冊 Microsoft Entra 應用程式的權限。
在 Azure 入口網站中,移至 [Microsoft Entra ID] > [使用者] > [使用者設定]。
在 [使用者設定] 中,確認 Microsoft Entra 使用者可以註冊應用程式。 (根據預設,此選項會設定為 [是]。)
重要
Microsoft 建議您使用權限最的角色。 這有助於改善組織的安全性。 全域系統管理員是具高度特殊權限的角色,應僅限於無法使用現有角色的緊急案例。
如果 [應用程式註冊] 選項設定為 [否],則請要求租用戶/全域系統管理員指派必要的權限。 或者,租用戶/全域系統管理員可以將「應用程式開發人員」角色指派給帳戶,以允許註冊 Microsoft Entra 應用程式。 如需詳細資訊,請參閱將角色指派給使用者。
下載和安裝 Azure Migrate 應用程式容器化工具
在 Windows 機器上,下載 Azure Migrate 應用程式容器化安裝程式。
以系統管理員模式開啟 PowerShell,並將 PowerShell 目錄變更為包含安裝程式的資料夾。
使用此命令來執行安裝指令碼:
.\AppContainerizationInstaller.ps1
注意
針對 Windows Server 2022,請編輯第 135 行並從功能清單中移除 PowerShell-ISE
,因為不再支援此功能。
開啟應用程式容器化工具
在可連線至 Windows 機器 (執行應用程式容器化工具) 的任何機器上,開啟瀏覽器。 移至工具 URL:https://機器名稱或 IP 位址: 44369。
或者,您可以使用應用程式捷徑,以從桌面開啟應用程式。
如果您看到一個警告,指出您的連線不是私人的,則請選取 [進階],然後繼續前往網站。 出現此警告的原因是 Web 介面使用自我簽署 TLS/SSL 憑證。
在登入畫面上,使用機器的本機系統管理員帳戶登入。
選取 [ASP.NET Web 應用程式] 作為要容器化的應用程式類型。
在 [目標 Azure 服務] 清單中,選取 [Azure App Service 上的容器]:
完成工具必要條件
- 接受授權條款,並閱讀第三方資訊。
- 在工具 Web 應用程式 [設定必要條件] 中,完成下列步驟:
連線能力。 此工具會檢查 Windows 機器是否具有網際網路存取權。 如果機器使用 Proxy:
選取 [設定 Proxy] 以指定 Proxy 位址 (採用 IP 位址或 FQDN 的形式) 和接聽連接埠。
如果 Proxy 需要驗證,請指定認證。
如果您已新增 Proxy 詳細資料,或已停用 Proxy 或驗證,則請選取 [儲存] 以再次觸發連線檢查。
僅支援 HTTP Proxy。
安裝更新。 此工具會自動檢查是否有最新的更新,並加以安裝。 您也可以手動安裝最新版本的工具。
安裝 Microsoft Web Deploy 工具。 此工具會檢查 Microsoft Web Deploy 工具是否已安裝在執行 Azure Migrate 應用程式容器化工具的 Windows 機器上。
啟用 PowerShell 遠端。 此工具會提示您確定在應用程式伺服器上啟用 PowerShell 遠端,而應用程式伺服器執行您想要容器化的 ASP.NET 應用程式。
登入 Azure
選取 [登入] 以登入您的 Azure 帳戶。
您需要裝置代碼以向 Azure 進行驗證。 選取 [登入] 應該會開啟包含裝置程式碼的視窗。 如果未出現此視窗,則請確定您已在瀏覽器中停用快顯封鎖程式。
選取 [複製程式碼並登入] 以複製裝置程式碼,然後在新的瀏覽器索引標籤中開啟 Azure 登入提示:
在新的索引標籤上,貼上裝置程式碼,並使用您的 Azure 帳戶認證來完成登入。 登入後,即可關閉瀏覽器索引標籤,並返回應用程式容器化工具的 Web 介面。
選取您要使用的 Azure 租用戶。
指定您要使用的 Azure 訂用帳戶。
探索 ASP.NET 應用程式
應用程式容器化工具會使用提供的認證來遠端連線至應用程式伺服器,並嘗試探索應用程式伺服器上所裝載的 ASP.NET 應用程式。
指定 ASP.NET 應用程式執行所在伺服器的「伺服器 IP 位址/FQDN」和認證,其應該用來從遠端連線至伺服器以進行應用程式探索。
- 提供的認證必須是應用程式伺服器上的本機系統管理員 (Windows)。
- 若使用網域帳戶 (使用者必須是應用程式伺服器上的系統管理員),請在使用者名稱前面加上網域名稱,其格式為 <domain\user name>。
- 若使用本機帳戶 (使用者必須是應用程式伺服器上的系統管理員),請在使用者名稱前面加上主機名稱,其格式為 <host name\user name>。
- 您最多一次可以執行五部伺服器的應用程式探索。
選取 [驗證],以確認可從執行此工具的機器連線至應用程式伺服器,而且認證有效。 驗證成功之後,[狀態] 資料行會將狀態顯示為 [已對應]:
選取 [繼續],在選取的應用程式伺服器上開始執行應用程式探索。
應用程式探索完成時,請選取您想要容器化的應用程式:
對於每個選取的應用程式,指定目標容器的名稱。 將容器名稱指定為 <name:tag>,其中 tag 用於容器映像。 例如,您可以將目標容器名稱指定為 appname:v1。
將應用程式設定參數化
將設定參數化可讓其以部署時間參數的形式提供。 參數化可讓您在部署應用程式時進行設定,而不是將其硬式編碼為容器映像中的特定值。 例如,此選項對資料庫連接字串等參數很有用。
選取 [應用程式設定] 以檢閱偵測到的設定。
選取您想要參數化的參數,然後選取 [套用]:
將檔案系統相依性外部化
您可以新增應用程式所使用的其他資料夾。 指定其應該是容器映像的一部分,還是應該透過 Azure 檔案共用外部化為持續性儲存體。 使用外部持續性儲存體十分適用於具狀態應用程式,而具狀態應用程式可在容器外部儲存狀態,或將其他靜態內容儲存在檔案系統上。
選取 [應用程式資料夾] 下方的 [編輯],以檢閱偵測到的應用程式資料夾。 這些資料夾已識別為應用程式所需的必要成品。 其將會複製至容器映像。
選取 [新增資料夾],然後指定您想要新增的資料夾路徑。
若要將多個資料夾新增至相同的磁碟區,請使用逗號來分隔值。
如果您想要將資料夾儲存在持續性儲存體上容器的外部,則請選取 [Azure 檔案共用] 作為儲存體選項。
檢閱應用程式資料夾之後,請選取 [儲存]:
選取 [繼續],以進入容器映像建立階段。
建置容器映像
在下拉式清單中,選取將用來建置和儲存應用程式容器映像的 [Azure 容器登錄]。 您可以使用現有的 Azure 容器登錄,或選取 [建立新的登錄] 來建立新的登錄:
注意
只會顯示已啟用系統管理員使用者帳戶的 Azure 容器登錄。 目前需要系統管理員使用者帳戶,才能將映像從 Azure 容器登錄部署至 Azure App Service。 如需詳細資訊,請參閱使用 Azure 容器登錄進行驗證。
建置步驟開始時,會產生建置每個所選取應用程式的容器映像所需的 Dockerfile。 按一下 [檢閱] 以檢閱 Dockerfile。 您也可以在檢閱步驟中將任何必要的自訂新增至 Dockerfile,並在開始建置程序之前儲存變更。
選取您想要建置映像的應用程式,然後選取 [建置]。 選取 [建置],將開始為每個應用程式建置容器映像。 此工具會監視建置狀態,並可讓您在建置完成時繼續進行下一個步驟。
您可以選取 [狀態] 資料行下方的 [建置進行中],以監視建置進度。 在您觸發建置程序之後,連結將會作用幾分鐘的時間。
建置完成之後,請選取 [繼續] 以指定部署設定:
在 Azure App Service 上部署容器化應用程式
建置容器映像之後,下一個步驟是將應用程式部署為 Azure App Service 上的容器。
選取應用程式應使用的 Azure App Service 方案。
如果您沒有 App Service 方案,或想要建立要使用的新 App Service 方案,則可以予以建立,方法是選取 [建立新的 App Service 方案]。
選取 App Service 方案之後,請選取 [繼續]。
如果您已將應用程式設定參數化,則請指定要用於應用程式的祕密存放區。 您可以選擇 Azure Key Vault 或 App Service 應用程式設定來管理應用程式祕密。 如需詳細資訊,請參閱設定連接字串。
- 如果您已選取用來管理祕密的 App Service 應用程式設定,則請選取 [繼續]。
- 如果您想要使用 Azure 金鑰保存庫來管理應用程式祕密,則請指定您想要使用的金鑰保存庫。
- 如果您沒有 Azure 金鑰保存庫,或想要建立新的金鑰保存庫,則可以選取 [建立新的 Azure Key Vault] 予以建立。
- 此工具將會自動指派透過金鑰保存庫來管理祕密的必要權限。
如果您已新增更多資料夾,並選取 [Azure 檔案共用] 選項來進行持續性儲存,則請指定應用程式容器化工具要在部署期間使用的 Azure 檔案共用。 此工具將會複製您已對 Azure 檔案所設定的應用程式資料夾,並在部署期間將其掛接在應用程式容器上。
如果您沒有 Azure 檔案共用,或想要建立新的 Azure 檔案共用,則可以選取 [建立新的儲存體帳戶和檔案共用] 予以建立。
您現在需要指定應用程式的部署設定。 選取 [設定] 以自訂應用程式的部署。 在設定步驟中,您可以提供這些自訂:
- 名稱. 指定應用程式的唯一應用程式名稱。 此名稱將用來產生應用程式 URL。 其也會用作部署期間所建立的其他資源的前置詞。
- 應用程式設定。 對於任何已參數化的應用程式設定,提供要用於目前部署的值。
- 存放裝置設定。 檢閱為持續性儲存體所設定的任何應用程式資料夾的資訊。
儲存應用程式的部署設定之後,此工具將會為應用程式產生 Kubernetes 部署 YAML。
選取 [檢閱],以檢閱應用程式的部署設定。
選取您想要部署的應用程式。
選取 [部署],以開始所選取應用程式的部署。
部署應用程式之後,您可選取 [部署狀態] 資料行,追蹤為應用程式部署的資源。
疑難排解問題
若要為應用程式容器化工具問題進行疑難排解,您可以查看執行此工具的 Windows 機器上的記錄檔。 工具的記錄檔位於 C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs。