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 服務 上的 Windows 容器上加以部署。 深入了解
  • 在 Apache Tomcat 上容器化 Java Web 應用程式(在 Linux 伺服器上),並在 AKS 上的 Linux 容器上部署它們。 深入了解
  • 在 Apache Tomcat 上容器化 Java Web 應用程式(在 Linux 伺服器上),並在 App Service 上的 Linux 容器上部署它們。 深入了解

Azure Migrate:應用程式容器化工具可協助您:

  • 探索您的應用程式:此工具會從遠端連線到執行您 ASP.NET 應用程式的應用程式伺服器,並探索應用程式元件。 此工具會建立 Dockerfile,可用來建立應用程式的容器映像。
  • 建置容器映像:您可以根據應用程式需求檢查並進一步自訂 Dockerfile,並使用該映像來建置應用程式容器映像。 應用程式容器映像會推送至您指定的 Azure Container Registry。
  • 部署至 Azure Kubernetes Service:此工具接著會產生將容器化應用程式部署至 Azure Kubernetes Service 叢集所需的 Kubernetes 資源定義 YAML 檔案。 您可以自訂 YAML 檔案,並使用這些檔案在 AKS 上部署應用程式。

注意

Azure Migrate:應用程式容器化工具可協助您探索特定應用程式類型(ASP.NET 和 Apache Tomcat 上的 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 版)。
- 在 網際網路資訊服務 (IIS) 7.5 或更新版本上執行的應用程式。

此工具目前不支援:
- 需要 Windows 驗證的應用程式 (應用程式容器化工具目前不支援 gMSA)。
- 相依於在 IIS 以外裝載之其他 Windows 服務的應用程式。

準備 Azure 用戶帳戶

如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

設定訂用帳戶之後,您需要一個具有下列權限的 Azure 使用者帳戶:

  • Azure 訂用帳戶上的擁有者權限。
  • 註冊 Microsoft Entra 應用程式的權限。

如果您剛建立免費的 Azure 帳戶,您就是訂用帳戶的擁有者。 若您不是訂用帳戶擁有者,請與擁有者合作以根據下列步驟指派權限:

  1. 在 Azure 入口網站中,搜尋「訂用帳戶」,然後選取 [服務] 下的 [訂用帳戶]

    Screenshot of search box to search for the Azure subscription.

  2. 在 [訂用帳戶] 頁面中,選取您要在其中建立 Azure Migrate 專案的訂用帳戶。

  3. 選取 [存取控制 (IAM)]。

  4. 選取 [新增>角色指派] 以開啟 [新增角色指派] 頁面。

  5. 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站 指派 Azure 角色。

    設定
    角色 負責人
    存取權指派對象 User
    成員 azmigrateuser (在此範例中)

    Screenshot of add role assignment page in Azure portal.

  6. 您的 Azure 帳戶也需要註冊 Microsoft Entra 應用程式的權限

  7. 在 Azure 入口網站中,瀏覽至 Microsoft Entra ID>使用者>使用者設定

  8. 在 [使用者設定] 中,確定 Microsoft Entra 使用者可以註冊應用程式 (預設設為 [是])。

    Screenshot of verification in User Settings if users can register Active Directory apps.

  9. 如果將 [應用程式註冊] 設定設為 [否],則會要求租用戶/全域管理員指派必要的權限。 或者,租用戶/全域管理員可以將應用程式開發人員角色指派給帳戶,以允許註冊 Microsoft Entra 應用程式。 深入了解

下載並安裝「Azure Migrate:應用程式容器化」工具

  1. 在 Windows 電腦上下載 Azure Migrate: 應用程式容器化安裝程式。

  2. 在系統管理員模式中啟動 PowerShell,並將 PowerShell 目錄切換至包含安裝程式的資料夾。

  3. 使用命令執行安裝文稿

    .\AppContainerizationInstaller.ps1
    

注意

針對 Windows Server 2022,請編輯第 135 行並從功能清單中移除 PowerShell-ISE ,因為不再支援此功能。

啟動應用程式容器化工具

  1. 在執行應用程式容器化工具的任何計算機上開啟瀏覽器,然後開啟工具 URL:HTTPs:// machine 名稱或 IP 位址44369

    或者,您可以選取應用程式快捷方式,從桌面開啟應用程式。

  2. 如果您看到警告,指出您的連線不是私人的,請選取 [進階 ],然後選擇繼續進行網站。 此警告會顯示為 Web 介面使用自我簽署 TLS/SSL 憑證。

  3. 在 [ 登入 ] 畫面中,使用計算機上的本機系統管理員帳戶登入。

  4. 選取 [ASP.NET Web 應用程式] 作為要容器化的應用程式類型。

  5. 若要指定目標 Azure 服務,請選取 [Azure Kubernetes Service 上的容器]

    Screenshot of default load-up for App Containerization tool.

完整的工具先決條件

  1. 接受 [授權條款],並閱讀第三方資訊。
  2. 在工具 Web 應用程式中 >設定必要條件,執行下列步驟:
    • 連線:此工具會檢查 Windows 電腦是否有因特網存取。 如果電腦使用 Proxy:
      • 選取 [設定 Proxy] 以指定 Proxy 位址(格式為IP 位址或 FQDN),並接聽埠。
      • 如果 Proxy 需要驗證,請指定認證。
      • 僅支援 HTTP Proxy。
      • 如果您已新增 Proxy 詳細資料或停用 Proxy 和/或驗證,請選取 [ 儲存 ] 以再次觸發連線檢查。
    • 安裝更新:此工具會自動檢查是否有最新的更新並加以安裝。 您也可以從這裡手動安裝最新版本的工具。
    • 安裝 Microsoft Web Deploy 工具:此工具會檢查 Microsoft Web Deploy 工具是否已安裝在執行 Azure Migrate:應用程式容器化工具的 Windows 計算機上。
    • 啟用 PowerShell 遠端處理:此工具會通知您,在執行要容器化 ASP.NET 應用程式的應用程式伺服器上啟用 PowerShell 遠端功能。

登入 Azure

  1. 選取 [登入] 以登入您的 Azure 帳戶。

  2. 您需要裝置代碼以向 Azure 進行驗證。 選取 [ 登入 ] 會開啟具有裝置程式代碼的強制回應。

  3. 選取 [複製程序代碼並登入 ] 以複製裝置程式代碼,然後在新的瀏覽器索引標籤中開啟 Azure 登入提示。如果未出現,請確定您已停用瀏覽器中的快顯封鎖程式。

    Screenshot of modal showing device code.

  4. 在新的索引標籤上貼上裝置程式代碼,並使用您的 Azure 帳戶認證完成登入。 登入完成後,您可以關閉瀏覽器索引標籤,並返回應用程式容器化工具的畫面。

  5. 選取您要使用的 Azure 租用戶

  6. 指定您要使用的 Azure 訂用帳戶

探索 ASP.NET 應用程式

「應用程式容器化」協助程式工具使用提供的認證,從遠端連線至應用程式伺服器,並嘗試探索託管於應用程式伺服器上的 ASP.NET 應用程式。

  1. 指定 IP位址/FQDN,以及執行 ASP.NET 應用程式之伺服器的認證 ,該伺服器應該用來遠端連線到伺服器以進行應用程式探索。

    • 提供的認證必須是應用程式伺服器上的本機系統管理員 (Windows)。
    • 對於網域帳戶(用戶必須是應用程式伺服器上的系統管理員),請在用戶名稱前面加上功能變數名稱格式為 domain\username>。<
    • 您可以一次執行最多五部伺服器的應用程式探索。
  2. 選取 [驗證],以確認可從執行此工具的機器連線至應用程式伺服器,而且認證有效。 驗證成功之後,狀態資料行會顯示狀態為 [已對應]

    Screenshot for server IP and credentials.

  3. 選取 [繼續],在選取的應用程式伺服器上開始執行應用程式探索。

  4. 成功探索應用程式後,您可以選取要容器化的應用程式清單。

    Screenshot for discovered ASP.NET application.

  5. 使用複選框來選取要容器化的應用程式。

  6. 指定容器名稱:為每個選取的應用程式指定目標容器的名稱。 容器名稱應指定為 <name:tag>,其中標記會用於容器映像。 例如,您可以將目標容器名稱指定為 appname:v1

將應用程式設定參數化

將設定參數化,可讓其成為部署時間參數。 這可讓您在部署應用程式時進行此設定,而不是將其硬式編碼為容器映像中的特定值。 例如,此選項對資料庫連接字串等參數很有用。

  1. 選取 [應用程式設定] 以檢閱偵測到的設定。

  2. 選取複選框以參數化偵測到的應用程式組態。

  3. 選取參數化的設定之後,選取 [套用]

    Screenshot for app configuration parameterization ASP.NET application.

將檔案系統相依性外部化

您可以新增應用程式所使用的其他資料夾。 指定其是否應為容器映像的一部分,或是要透過 Azure 檔案共用上的永續性磁碟區進行外部化。 永續性磁碟區非常適合用於具狀態應用程式,這種應用程式會在容器外部儲存狀態,或在檔案系統上儲存其他靜態內容。 深入了解

  1. 選取應用程式資料夾底下的 [編輯],以檢閱偵測到的應用程式資料夾。 偵測到的應用程式資料夾已識別為應用程式所需的強制成品,且將複製到容器映像中。

  2. 選取 [新增資料夾],並指定要新增的資料夾路徑。

  3. 若要將多個資料夾新增至相同的磁碟區,請提供逗號 (,) 分隔值。

  4. 如果您想要將資料夾儲存在永續性磁碟區上的容器外部,請選取 [永續性 磁碟區] 作為記憶體選項。

  5. 檢閱應用程式資料夾之後,選取 [儲存 ]。 Screenshot for app volumes storage selection.

  6. 選取 [繼續],以進入容器映像建立階段。

建置容器映像

重要

如果您使用 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"]

若要建置容器映射,請遵循下列步驟:

  1. 選取 [Azure Container Registry:使用下拉式清單選取 將用來建置及儲存應用程式的容器映像的 Azure Container Registry 。 您可以使用現有的 Azure Container Registry,或使用 [建立新的登錄] 選項來建立新的登錄。

    Screenshot for app ACR selection.

  2. 檢閱 Dockerfile:建置每個所選應用程式的容器映像所需的 Dockerfile,會在建置步驟一開始時產生。 按一下 [檢閱] 以檢閱 Dockerfile。 您也可以在檢閱步驟中,將任何必要的自訂項目新增至 Dockerfile,並在開始建置程序之前儲存變更。

  3. 觸發建置程式:選取要為其建置映像的應用程式,然後選取 [ 置]。 選取 [建置] 將會啟動每個應用程式的容器映像組建。 此工具會持續監視建置狀態,並可讓您在成功完成建置時繼續進行下一個步驟。

  4. 追蹤建置狀態:您也可以選取狀態資料行下方的 [建置進行中] 連結,以監視建置步驟的進度。 觸發建置程序之後,此連結需要幾分鐘的時間才會生效。

  5. 建置完成後,請選取 [繼續] 以指定部署設定。

    Screenshot for app container image build completion.

在 AKS 上部署容器化應用程式

建置容器映射之後,下一個步驟是在 Azure Kubernetes Service (AKS)將應用程式部署為容器。

  1. 選取 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>
        
    • 如果您沒有 AKS 叢集,或想要建立新的 AKS 叢集來部署應用程式,您可以選擇從工具中建立 ,方法是選取 [建立新的 AKS 叢集]。
      • 使用 此工具建立的 AKS 叢集將會使用 Windows 節點集區來建立。 叢集將會設定為允許它從稍早建立的 Azure Container Registry 提取映像(如果已選擇建立新的登錄選項)。
    • 選取 AKS 叢集之後,選取 [繼續 ]。
  2. 指定秘密存放區:如果您選擇參數化應用程式組態,請指定要用於應用程式的秘密存放區。 您可以選擇 Azure 金鑰保存庫 或 App Service 應用程式設定來管理應用程式秘密。 深入了解

    • 如果您已選取 App Service 應用程式設定來管理秘密,請選取 [ 繼續]。
    • 如果您想要使用 Azure 金鑰保存庫 來管理應用程式密碼,請指定您想要使用的 Azure 金鑰保存庫。
      • 如果您沒有 Azure 金鑰保存庫,或想要建立新的 金鑰保存庫,您可以選擇從工具建立新的 Azure 金鑰保存庫
      • 工具將自動指派透過 Key Vault 管理祕密的必要權限。
  3. 指定 Azure 檔案共享:如果您已新增更多資料夾,並選取 [永續性磁碟區] 選項,請在部署程式期間指定 Azure Migrate:應用程式容器化工具應使用的 Azure 檔案共用。 此工具將在此 Azure 檔案共用中建立新目錄,以複製針對永續性磁碟區儲存體設定的應用程式資料夾。 應用程式部署完成後,工具會刪除其所建立的目錄來清除 Azure 檔案共用。

    • 如果您沒有 Azure 檔案共用,或想要建立新的 Azure 檔案共用,您可以選擇從工具建立新的 儲存體 帳戶和檔案共用
  4. 應用程式部署組態:完成上述步驟之後,您必須指定應用程式的部署組態。 選取 [設定] 以自訂應用程式的部署。 在設定步驟中,您可以提供下列自定義:

    • 前置詞字串:針對在 AKS 叢集中為容器化應用程式建立的所有資源,指定要在名稱中使用的前置詞字串。
    • SSL 憑證:如果您的應用程式需要 HTTPs 網站系結,請指定包含要用於系結之憑證的 PFX 檔案。 PFX 檔案不應該受到密碼保護,原始網站不應該有多個系結。
    • 複本集:指定應在容器內執行的應用程式執行個體 (Pod) 數目。
    • 負載平衡器類型:如果容器化應用程式應該可從公用網路連線,請選取 [外部 ]。
    • 應用程式組態:針對已參數化的任何應用程式組態,提供用於目前部署的值。
    • 儲存體:針對針對永續性磁碟區記憶體設定的任何應用程式資料夾,請指定磁碟區應該跨應用程式實例共用,還是應該個別初始化容器中的每個實例。 根據預設,永續性磁碟區上的所有應用程式資料夾都會設定為共用。
    • 選取 [套用] 以儲存部署設定。
    • 選取 [繼續] 以部署應用程式。

    Screenshot for deployment app configuration.

  5. 部署應用程式:儲存應用程式的部署組態之後,此工具會產生應用程式的 Kubernetes 部署 YAML。

    • 選取 [ 檢閱 ] 以檢閱和自定義應用程式的 Kubernetes 部署 YAML。

    • 選取要部署的應用程式。

    • 選取 [部署] 以啟動選取應用程式的部署

      Screenshot for app deployment configuration.

    • 部署應用程式之後,您可以選取 [部署狀態] 資料行來追蹤為應用程式部署的資源。

下載產生的成品

用來建置和部署應用程式到 AKS 的所有成品,包括 Dockerfile 和 Kubernetes YAML 規格檔案,都會儲存在執行此工具的電腦上。 成品位於 C:\ProgramData\Microsoft Azure Migrate 應用程式容器化

系統會為每個應用程式伺服器建立單一資料夾。 您可以流覽至此資料夾,以檢視及下載容器化程式中使用的所有中繼成品。 對應至應用程式伺服器的資料夾將會在特定伺服器的每次執行工具開始時清除。

針對問題進行疑難排解

若要針對此工具的任何問題進行疑難解答,您可以查看執行應用程式容器化工具之 Windows 電腦上的記錄檔。 工具記錄檔位於 C:\ProgramData\Microsoft Azure Migrate 應用程式容器化\Logs 資料夾。

下一步

  • 容器化 ASP.NET Web 應用程式,並將其部署在 App Service 上的 Windows 容器上。 深入了解
  • 在 Apache Tomcat 上容器化 Java Web 應用程式(在 Linux 伺服器上),並在 AKS 上的 Linux 容器上部署它們。 深入了解
  • 在 Apache Tomcat 上容器化 Java Web 應用程式(在 Linux 伺服器上),並在 App Service 上的 Linux 容器上部署它們。 深入了解