ASP.NET 應用程式容器化和移轉至Azure Kubernetes Service

在本文中,您將瞭解如何使用 Azure Migrate:應用程式容器化工具,將 ASP.NET 應用程式容器化,並將其遷移至Azure Kubernetes Service (AKS) 。 容器化流程不需要存取程式碼基底,且會提供一種簡單方式來將現有應用程式容器化。 此工具的運作方式是使用伺服器上應用程式的執行狀態來判斷應用程式元件,並協助您在容器映像中封裝它們。 容器化應用程式接著可以部署在 AKS Azure Kubernetes Service () 上。

Azure Migrate:應用程式容器化工具目前支援:

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

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 上部署容器化應用程式。

注意

教學課程將會針對案例示範最簡單的部署路徑,讓您可以快速設定概念證明。 教學課程在情況允許時都會使用預設選項,且不會顯示所有可能的設定與路徑。

必要條件

開始進行本教學課程之前,您必須:

需求 詳細資料
識別要安裝工具的電腦 要安裝和執行 Azure Migrate:應用程式容器化工具的 Windows 電腦。 Windows 電腦可以是伺服器 (Windows Server 2016或更新版本) 或用戶端 (Windows 10) 作業系統,這表示此工具也可以在桌面上執行。

執行工具的 Windows 電腦應該具有網路連線能力,可連線至裝載要容器化之 ASP.NET 應用程式的伺服器/虛擬機器。

請確定執行 Azure Migrate 的 Windows 電腦上有 6 GB 的空間:用來儲存應用程式成品的應用程式容器化工具。

Windows 電腦應該可以直接或透過 Proxy 存取網際網路。

如果尚未安裝,請在執行應用程式容器化協助程式工具和應用程式伺服器的電腦上安裝 Microsoft Web Deploy 工具。 您可以 從這裡下載此工具。
應用程式伺服器 在應用程式伺服器上啟用 PowerShell 遠端:登入應用程式伺服器,並遵循 這些 指示來開啟 PowerShell 遠端處理。

如果應用程式伺服器正在執行 Windows Server 2008 R2,請確定 PowerShell 5.1 已安裝在應用程式伺服器上。 請遵循 這裡的 指示,在應用程式伺服器上下載並安裝 PowerShell 5.1。

如果尚未安裝,請在執行應用程式容器化協助程式工具和應用程式伺服器的電腦上安裝 Microsoft Web Deploy 工具。 您可以 從這裡下載此工具。
ASP .NET 應用程式 此工具目前支援:
- 使用 Microsoft .NET Framework 3.5 或更新版本 ASP.NET 應用程式。
- 執行 Windows Server 2008 R2 或更新版本的應用程式伺服器 (應用程式伺服器應該執行 PowerShell 5.1 版) 。
- 在 Internet Information Services 上執行的應用程式 (IIS) 7.5 或更新版本。

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

準備 Azure 使用者帳戶

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

設定訂用帳戶之後,您需要具有下列功能的 Azure 使用者帳戶:

  • Azure 訂用帳戶的擁有者許可權。
  • 註冊 Azure Active Directory 應用程式的權限。

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

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

    搜尋方塊的螢幕擷取畫面,用於搜尋 Azure 訂用帳戶。

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

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

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

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

    設定 ReplTest1
    角色 擁有者
    存取權指派對象 User
    成員 本範例中的 azmigrateuser ()

    Azure 入口網站中新增角色指派頁面的螢幕擷取畫面。

  6. 您的 Azure 帳戶也需要有註冊 Azure Active Directory 應用程式的權限

  7. 在 Azure 入口網站中,瀏覽至 [Azure Active Directory]>[使用者]>[使用者設定]。

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

    如果使用者可以註冊 Active Directory 應用程式,則為 [使用者設定] 中的驗證螢幕擷取畫面。

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

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

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

  2. 以系統管理員模式啟動 PowerShell,並將 PowerShell 目錄變更為包含安裝程式的資料夾。

  3. 使用 命令執行安裝腳本

    .\AppContainerizationInstaller.ps1
    

啟動應用程式容器化工具

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

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

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

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

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

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

    應用程式容器化工具預設載入的螢幕擷取畫面。

完成工具必要條件

  1. 接受授權條款,並閱讀第三方資訊。
  2. 在工具 Web 應用程式中 >設定必要條件,執行下列步驟:
    • 連線能力:此工具會檢查 Windows 電腦是否可存取網際網路。 如果電腦使用 Proxy:
      • 選取 [設定 Proxy ] 以在 IP 位址或 FQDN) 和接聽埠格式中指定 proxy 位址 (。
      • 如果 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 登入提示。如果未出現,請確定您已在瀏覽器中停用快顯封鎖程式。

    顯示裝置程式碼的強制回應螢幕擷取畫面。

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

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

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

探索 ASP.NET 應用程式

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

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

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

    伺服器 IP 和認證的螢幕擷取畫面。

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

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

    探索 ASP.NET 應用程式的螢幕擷取畫面。

  5. 使用核取方塊來選取要容器化的應用程式。

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

將應用程式設定參數化

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

  1. 選取 應用程式組態 以檢閱偵測到的組態。

  2. 選取核取方塊以參數化偵測到的應用程式組態。

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

    應用程式組態參數化 ASP.NET 應用程式的螢幕擷取畫面。

將檔案系統相依性外部化

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

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

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

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

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

  5. 在檢閱應用程式資料夾之後,選取 [ 儲存 ]。 應用程式磁片區儲存體選取專案的螢幕擷取畫面。

  6. 選取 [繼續 ] 以繼續進行容器映射建置階段。

建置容器映像

重要

如果您使用 AKS 1.23+,請在建置 Docker 映射之前先編輯腳本,以確保順暢移轉。

變更下列腳本

# Run entrypoint script.
COPY ./Entryscript.ps1 c:/Entryscript.ps1
ENTRYPOINT powershell c:/Entryscript.ps1

to

# Run entrypoint script. 
COPY ["./Entryscript.ps1", "c:/Entryscript.ps1"]
ENTRYPOINT ["powershell", "c:/Entryscript.ps1"]

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

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

    顯示應用程式 ACR 選取項目的螢幕擷取畫面。

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

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

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

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

    應用程式容器映射建置完成的螢幕擷取畫面。

在 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) 數目。
    • 負載平衡器類型:如果容器化應用程式應該可從公用網路連線,請選取 [外部 ]。
    • 應用程式組態:對於已參數化的任何應用程式組態,請提供要用於目前部署的值。
    • 儲存體:針對針對永續性磁片區儲存體設定的任何應用程式資料夾,請指定磁片區應該跨應用程式實例共用,還是應該個別初始化容器中的每個實例。 根據預設,持續性磁片區上的所有應用程式資料夾都會設定為共用。
    • 選取 [套用 ] 以儲存部署組態。
    • 選取 [繼續] 以部署應用程式。

    部署應用程式設定的螢幕擷取畫面。

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

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

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

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

      應用程式部署設定的螢幕擷取畫面。

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

下載產生的成品

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

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

針對問題進行疑難排解

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

下一步

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