ASP.NET 應用程式容器化並移轉至 Azure Kubernetes Service
在本文中,您將了解如何使用「Azure Migrate:應用程式容器化」工具,以將 ASP.NET 應用程式容器化並移轉至 Azure Kubernetes Service (AKS)。 容器化程序不需要存取您的程式碼基底,並提供簡單的方法來容器化現有的應用程式。 此工具的運作方式是使用伺服器上應用程式的執行狀態來判斷應用程式元件,並協助您在容器映像中封裝它們。 然後,就可以在 Azure Kubernetes Service (AKS) 上部署容器化應用程式。
「Azure Migrate:應用程式容器化」工具目前支援:
- 容器化 ASP.NET 應用程式,並將其部署至 Azure Kubernetes Service 上的 Windows 容器。
- 容器化 ASP.NET 應用程式,並將其部署至 Azure App Service 上的 Windows 容器。 深入了解。
- 將 Apache Tomcat (位於 Linux 伺服器) 上的 Java Web 應用程式容器化,並將其部署至 AKS 上的 Linux 容器。 深入了解。
- 將 Apache Tomcat (位於 Linux 伺服器) 上的 Java Web 應用程式容器化,並將其部署至 App Service 上的 Linux 容器。 深入了解。
「Azure Migrate:應用程式容器化」工具可協助您:
- 探索應用程式:此工具會遠端連線至執行 ASP.NET 應用程式的應用程式伺服器,並探索應用程式元件。 此工具會建立 Dockerfile,可用來建立應用程式的容器映像。
- 建置容器映像:您可以根據應用程式需求檢查並進一步自訂 Dockerfile,並使用該映像來建置應用程式容器映像。 應用程式容器映像會推送至您指定的 Azure Container Registry。
- 部署至 Azure Kubernetes Service:此工具接著會產生將容器化應用程式部署至 Azure Kubernetes Service 叢集所需的 Kubernetes 資源定義 YAML 檔案。 您可以自訂 YAML 檔案,並使用這些檔案在 AKS 上部署應用程式。
注意
「Azure Migrate:應用程式容器化」工具可協助您探索特定應用程式類型 (Apache Tomcat 上的 ASP.NET 和 Java Web 應用程式),以及其在應用程式伺服器上的元件。 若要探索伺服器,以及內部部署機器上執行的應用程式、角色和功能詳細目錄,請使用「Azure Migrate:探索和評量功能」。 深入了解
雖然若沒有大幅重新架構,所有應用程式都不會從直接轉移至容器而受益,但將現有應用程式移至容器而不重寫的一些優點包括:
- 改善的基礎結構使用率 - 使用容器時,多個應用程式可以共用資源,並裝載在相同的基礎結構上。 這可協助您合併基礎結構,並改善使用率。
- 簡化的管理 - 將您的應用程式裝載在 AKS 和 App Service 這類新式受控平台上,即可簡化管理做法。 若要達成此目的,您可以淘汰或減少傳統上以所擁有基礎結構來執行的基礎結構維護和管理程序。
- 應用程式可移植性 - 隨著容器規格格式和平台的採用和標準化不斷地增加,應用程式可移植性不再是問題。
- 使用 DevOps 採用新式管理 - 協助您採用並標準化新式管理和安全性做法,並轉換至 DevOps。
在本教學課程中,您將了解如何:
- 設定 Azure 帳戶。
- 安裝「Azure Migrate:應用程式容器化」工具。
- 探索 ASP.NET 應用程式。
- 建置容器映像。
- 在 AKS 上部署容器化應用程式。
注意
教學課程將會針對案例示範最簡單的部署路徑,讓您可以快速設定概念證明。 教學課程在情況允許時都會使用預設選項,且不會顯示所有可能的設定與路徑。
必要條件
開始進行本教學課程之前,您必須:
需求 | 詳細資料 |
---|---|
識別要安裝工具的機器 | 一部 Windows 電腦,以便安裝及執行 Azure Migrate: 應用程式容器化工具。 Windows 電腦可以是伺服器 (Windows Server 2016 或更新版本) 或用戶端 (Windows 10) 作業系統,這表示工具也可以在您的桌面上執行。 執行工具的 Windows 電腦應該具有網路連線能力,可連線至裝載要容器化之 ASP.NET 應用程式的伺服器/虛擬機器。 確保執行 Azure Migrate: 應用程式容器化工具的 Windows 電腦上有 6 GB 的空間可用於儲存應用程式成品。 Windows 電腦應該可以直接或透過 Proxy 存取網際網路。 如果尚未安裝,請在執行「應用程式容器化」協助程式工具和應用程式伺服器的電腦上安裝 Microsoft Web Deploy 工具。 您可以從這裡下載該工具。 |
應用程式伺服器 | 在應用程式伺服器上啟用 PowerShell 遠端:登入應用程式伺服器,然後遵循這些指示來開啟 PowerShell 遠端。 確定已在應用程式伺服器上安裝 PowerShell 5.1 版。 遵循安裝和設定 WMF 5.1 中的指示,以在應用程式伺服器下載並安裝 PowerShell 5.1。 如果尚未安裝,請在執行「應用程式容器化」協助程式工具和應用程式伺服器的電腦上安裝 Microsoft Web Deploy 工具。 您可以從這裡下載該工具。 |
ASP.NET 應用程式 | 工具目前支援: - 使用 Microsoft .NET Framework 3.5 或更新版本的 ASP.NET 應用程式。 -執行 Windows Server 2012 R2 或更新版本的應用程式伺服器 (應用程式伺服器應執行 PowerShell 5.1 版)。 - 在 Internet Information Services (IIS) 7.5 或更新版本上執行的應用程式。 此工具目前不支援: - 需要 Windows 驗證的應用程式 (應用程式容器化工具目前不支援 gMSA)。 - 相依於在 IIS 以外裝載之其他 Windows 服務的應用程式。 |
準備 Azure 使用者帳戶
如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
設定訂用帳戶之後,您需要一個具有下列權限的 Azure 使用者帳戶:
- Azure 訂用帳戶上的擁有者權限。
- 註冊 Microsoft Entra 應用程式的權限。
如果您剛建立免費的 Azure 帳戶,您就是訂用帳戶的擁有者。 若您不是訂用帳戶擁有者,請與擁有者合作以根據下列步驟指派權限:
在 Azure 入口網站中,搜尋「訂用帳戶」,然後選取 [服務] 下的 [訂用帳戶]。
在 [訂用帳戶] 頁面中,選取您要在其中建立 Azure Migrate 專案的訂用帳戶。
選取 [存取控制 (IAM)]。
選取 [新增] > [新增角色指派],開啟 [新增角色指派] 頁面。
指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色。
設定 值 角色 負責人 存取權指派對象 User 成員 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 Kubernetes Service 上的容器]。
完整的工具先決條件
- 接受 [授權條款],並閱讀第三方資訊。
- 在工具 Web 應用程式 > [設定必要條件] 中,執行下列步驟:
- 連線能力:此工具會檢查 Windows 機器是否具有網際網路存取權。 如果機器使用 Proxy:
- 選取 [設定 Proxy] 以指定 Proxy 位址 (採用 IP 位址或 FQDN 的形式) 和接聽連接埠。
- 如果 Proxy 需要驗證,請指定認證。
- 僅支援 HTTP Proxy。
- 如果您已新增 Proxy 詳細資料,或已停用 Proxy 和/或驗證,則請選取 [儲存] 以再次觸發連線檢查。
- 安裝更新:此工具會自動檢查是否有最新的更新,並加以安裝。 您也可以從這裡手動安裝最新版本的工具。
- 安裝 Microsoft Web Deploy 工具:此工具將會檢查 Microsoft Web Deploy 工具是否已安裝在執行「Azure Migrate:應用程式容器化」工具的 Windows 機器上。
- 啟用 PowerShell 遠端:此工具將會通知您確定已在應用程式伺服器上啟用 PowerShell 遠端,而應用程式伺服器執行要容器化的 ASP.NET 應用程式。
- 連線能力:此工具會檢查 Windows 機器是否具有網際網路存取權。 如果機器使用 Proxy:
登入 Azure
選取 [登入] 以登入您的 Azure 帳戶。
您需要裝置代碼以向 Azure 進行驗證。 選取 [登入] 將會開啟含有裝置程式碼的強制回應。
選取 [複製程式碼並登入] 以複製裝置程式碼,然後在新的瀏覽器索引標籤中開啟 Azure 登入提示。如果未出現,請確定您已在瀏覽器中停用快顯封鎖程式。
在新的索引標籤上,貼上裝置程式碼,並使用您的 Azure 帳戶認證來完成登入。 登入完成後,您可以關閉瀏覽器索引標籤,並返回應用程式容器化工具的畫面。
選取您要使用的 Azure 租用戶。
指定您要使用的 Azure 訂用帳戶。
探索 ASP.NET 應用程式
「應用程式容器化」協助程式工具使用提供的認證,從遠端連線至應用程式伺服器,並嘗試探索託管於應用程式伺服器上的 ASP.NET 應用程式。
指定 ASP.NET 應用程式執行所在伺服器的「IP 位址/FQDN 和認證」,其應該用來遠端連線至伺服器以進行應用程式探索。
- 提供的認證必須是應用程式伺服器上的本機系統管理員 (Windows)。
- 若使用網域帳戶 (使用者必須是應用程式伺服器上的管理員),請在使用者名稱前加上網域名稱,其格式為 <domain\username>。
- 您最多可以一次執行五部伺服器的應用程式探索。
選取 [驗證],以確認可從執行此工具的機器連線至應用程式伺服器,而且認證有效。 驗證成功之後,狀態資料行會顯示狀態為 [已對應]。
選取 [繼續],在選取的應用程式伺服器上開始執行應用程式探索。
成功探索應用程式後,您可以選取要容器化的應用程式清單。
使用核取方塊來選取要容器化的應用程式。
指定容器名稱:為每個選取的應用程式指定目標容器的名稱。 容器名稱應指定為 <name:tag>,其中標記會用於容器映像。 例如,您可以將目標容器名稱指定為 appname:v1。
將應用程式設定參數化
將設定參數化,可讓其成為部署時間參數。 這可讓您在部署應用程式時進行此設定,而不是將其硬式編碼為容器映像中的特定值。 例如,此選項對資料庫連接字串等參數很有用。
選取 [應用程式設定] 以檢閱偵測到的設定。
選取核取方塊以參數化偵測到的應用程式設定。
選取參數化的設定之後,選取 [套用]。
將檔案系統相依性外部化
您可以新增應用程式所使用的其他資料夾。 指定其是否應為容器映像的一部分,或是要透過 Azure 檔案共用上的永續性磁碟區進行外部化。 永續性磁碟區非常適合用於具狀態應用程式,這種應用程式會在容器外部儲存狀態,或在檔案系統上儲存其他靜態內容。 深入了解。
選取應用程式資料夾底下的 [編輯],以檢閱偵測到的應用程式資料夾。 偵測到的應用程式資料夾已識別為應用程式所需的強制成品,且將複製到容器映像中。
選取 [新增資料夾],並指定要新增的資料夾路徑。
若要將多個資料夾新增至相同的磁碟區,請提供逗號 (
,
) 分隔的值。如果您想要將資料夾儲存在持續性磁碟區上容器的外部,則請選取 [持續性磁碟區] 作為儲存體選項。
在檢閱應用程式資料夾之後,選取 [儲存]。
選取 [繼續],以進入容器映像建立階段。
建置容器映像
重要
如果您要使用 AKS 1.23 以上版本,則請先如下所示來編輯指令碼,再建置 Docker 映像,以確保順暢的移轉。
變更下面的指令碼
# Run entrypoint script.
COPY ./Entryscript.ps1 c:/Entryscript.ps1
ENTRYPOINT powershell c:/Entryscript.ps1
打給
# Run entrypoint script.
COPY ["./Entryscript.ps1", "c:/Entryscript.ps1"]
ENTRYPOINT ["powershell", "c:/Entryscript.ps1"]
若要建置容器映像,請遵循下列步驟:
選取 Azure Container Registry:使用下拉式清單選取將用來建置和儲存應用程式容器映像的 Azure Container Registry。 您可以使用現有的 Azure Container Registry,或使用 [建立新的登錄] 選項來建立新的登錄。
檢閱 Dockerfile:建置每個所選應用程式的容器映像所需的 Dockerfile,會在建置步驟一開始時產生。 按一下 [檢閱] 以檢閱 Dockerfile。 您也可以在檢閱步驟中,將任何必要的自訂項目新增至 Dockerfile,並在開始建置程序之前儲存變更。
觸發建置程序:選取要建置映像的應用程式,然後選取 [建置]。 選取 [建置] 將會啟動每個應用程式的容器映像建置。 此工具會持續監視建置狀態,並可讓您在成功完成建置時繼續進行下一個步驟。
追蹤建置狀態:您也可以選取狀態資料行下方的 [建置進行中] 連結,以監視建置步驟的進度。 觸發建置程序之後,此連結需要幾分鐘的時間才會生效。
建置完成後,請選取 [繼續] 以指定部署設定。
在 AKS 上部署容器化應用程式
建置容器映像之後,下一個步驟是將應用程式部署為 Azure Kubernetes Service (AKS) 上的容器。
選取 Azure Kubernetes Service 叢集:指定應用程式應部署至的 AKS 叢集。
- 選取的 AKS 叢集必須具有 Windows 節點集區。
- 叢集必須設定為允許從選取來儲存映像的 Azure Container Registry 提取映像。
- 在 Azure CLI 中執行下列命令,將 AKS 叢集連結至 ACR。
az aks update -n <cluster-name> -g <cluster-resource-group> --attach-acr <acr-name>
- 在 Azure CLI 中執行下列命令,將 AKS 叢集連結至 ACR。
- 如果您沒有 AKS 叢集,或想要建立新的 AKS 叢集來部署應用程式,則可以選擇從工具建立,方法是選取 [建立新的 AKS 叢集]。
- 使用此工具所建立的 AKS 叢集將會搭配 Windows 節點集區所建立。 叢集將會設定為允許其從稍早建立的 Azure Container Registry 提取映像 (如果已選擇 [建立新的登錄] 選項)。
- 在選取 AKS 叢集之後,請選取 [繼續]。
指定祕密存放區:如果您已選擇參數化應用程式設定,則請指定要用於應用程式的祕密存放區。 您可以選擇 Azure Key Vault 或 App Service 應用程式設定來管理應用程式祕密。 深入了解
- 如果您已選取用於管理祕密的 App Service 應用程式設定,則請選取 [繼續]。
- 如果您想要使用 Azure Key Vault 來管理應用程式祕密,則請指定您想要使用的 Azure Key Vault。
- 如果您沒有 Azure Key Vault,或想要建立新的 Key Vault,則可以選擇從工具建立,方法是選取 [建立新的 Azure Key Vault]。
- 工具將自動指派透過 Key Vault 管理祕密的必要權限。
指定 Azure 檔案共用:如果您已新增更多資料夾,並選取 [持續性磁碟區] 選項,則請指定「Azure Migrate:應用程式容器化」工具應該在部署程序期間使用的 Azure 檔案共用。 此工具將在此 Azure 檔案共用中建立新目錄,以複製針對永續性磁碟區儲存體設定的應用程式資料夾。 應用程式部署完成後,工具會刪除其所建立的目錄來清除 Azure 檔案共用。
- 如果您沒有 Azure 檔案共用,或想要建立新的 Azure 檔案共用,則可以選擇從工具予以建立,方法是選取 [建立新的儲存體帳戶和檔案共用]。
應用程式部署設定:完成上述步驟之後,您將需要指定應用程式的部署設定。 選取 [設定] 以自訂應用程式的部署。 在設定步驟中,您可以提供下列自訂:
- 前置詞字串:針對在 AKS 叢集中為容器化應用程式建立的所有資源,指定要在名稱中使用的前置詞字串。
- SSL 憑證:如果您的應用程式需要 https 網站繫結,則請指定 PFX 檔案,而此檔案包含要用於繫結的憑證。 PFX 檔案不應該受到密碼保護,而且原始網站不應該有多個繫結。
- 複本集:指定應在容器內執行的應用程式執行個體 (Pod) 數目。
- 負載平衡器類型:如果應該從公用網路連線至容器化應用程式,則請選取 [外部]。
- 應用程式設定:對於已參數化的任何應用程式設定,提供要用於目前部署的值。
- 儲存體:對於持續性磁碟區儲存體設定的任何應用程式資料夾,請指定磁碟區應該跨應用程式執行個體共用,還是應該搭配容器中的每個執行個體個別初始化。 根據預設,持續性磁碟區上的所有應用程式資料夾都會設定為共用。
- 選取 [套用] 以儲存部署設定。
- 選取 [繼續] 以部署應用程式。
部署應用程式:儲存應用程式的部署設定之後,工具會為應用程式產生 Kubernetes 部署 YAML。
選取 [檢閱] 以檢閱和自訂應用程式的 Kubernetes 部署 YAML。
選取要部署的應用程式。
選取 [部署],以開始所選取應用程式的部署
部署應用程式之後,您可以選取 [部署狀態] 資料行來追蹤為應用程式部署的資源。
下載所產生的成品
用來建置應用程式並將其部署至 AKS 的所有成品 (包括 Dockerfile 和 Kubernetes YAML 規格檔案) 都會儲存在執行此工具的機器上。 這些成品位於 C:\ProgramData\Microsoft Azure Migrate App Containerization。
系統會為每部應用程式伺服器建立單一資料夾。 您可以導覽至此資料夾,來檢視和下載容器化程序中使用的所有中繼成品。 對應至應用程式伺服器的資料夾將會在每次開始執行特定伺服器的工具時進行清除。
針對問題進行疑難排解
若要為此工具的任何問題進行疑難排解,您可以在執行應用程式容器化工具的 Windows 機器上查看記錄檔。 工具記錄檔位於 C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs 資料夾。