Azure Arc 上的 App Service、Functions 和 Logic Apps (預覽)

您可以在已啟用 Azure Arc 的 Kubernetes 叢集,執行 App Service、Functions 和 Logic Apps。 Kubernetes 叢集可以是內部部署或託管於協力廠商雲端。 這種方法可讓應用程式開發人員利用 App Service 的功能。 同時,其可讓 IT 管理員在內部基礎結構上託管 App Service 應用程式,以維護公司合規性。 其也可讓其他 IT 操作員在現有的 Kubernetes 叢集上執行 App Service,以保護其先前在其他雲端提供者的投資。

注意

若要瞭解如何為 App Service、Functions 和 Logic Apps 設定 Kubernetes 叢集,請參閱建立 App Service Kubernetes 環境 (預覽)

在大部分案例下,應用程式開發人員必須知道如何部署至代表已部署 Kubernetes 環境的正確 Azure 區域。 對於提供環境和維護基礎 Kubernetes 基礎結構的操作員,您必須注意下列 Azure 資源:

公開預覽限制

下列公開預覽限制適用於 App Service Kubernetes 環境。 這項限制清單會在變更和功能可供使用時更新。

限制 詳細資料
支援的 Azure 區域 美國東部、西歐
叢集網路需求 必須支援 LoadBalancer 服務類型
叢集儲存體需求 必須具有延伸模組可使用的叢集連結儲存體類別,以支援程式碼型應用程式的部署和建置 (如適用)
功能:網路 無法使用 (依賴叢集網路)
功能:受控身分識別 無法使用
功能:金鑰保存庫參考 無法使用 (取決於受控身分識別)
功能:使用受控識別從 ACR 提取映像 無法使用 (取決於受控身分識別)
功能:Functions 和 Logic Apps 的入口網站內編輯 無法使用
功能:Functions 或金鑰的入口網站清單 如果叢集無法公開連線,則無法使用
功能:FTP 發佈 無法使用
記錄 Log Analytics 必須設定叢集延伸模組;不是每一網站

App Service 延伸模組所建立的 Pod

在已啟用 Azure Arc 的 Kubernetes 叢集上安裝 App Service 延伸模組時,會在指定的發行命名空間中建立數個 Pod。 這些 Pod 可讓 Kubernetes 叢集成為 Azure 中 Microsoft.Web 資源提供者的延伸模組,並支援應用程式的管理和作業。 您可以選擇讓延伸模組安裝 KEDA 以進行事件驅動調整。

下表描述預設所建立之每個 Pod 的角色:

Pod 描述
<extensionName>-k8se-app-controller 在叢集上建立資源並維護元件狀態的核心操作員 Pod。
<extensionName>-k8se-envoy 所有資料平面要求的前端 Proxy 層。 其會將輸入流量路由至正確的應用程式。
<extensionName>-k8se-activator 替代路由目的地,可協助在系統取得第一個可用的執行個體時,調整為零的應用程式。
<extensionName>-k8se-build-service 支援部署作業,並提供進階工具功能
<extensionName>-k8se-http-scaler 監視輸入要求磁碟區,以在 KEDA 上提供調整資訊。
<extensionName>-k8se-img-cacher 將預留位置和應用程式映像提取到節點上的本地快取。
<extensionName>-k8se-log-processor 從應用程式和其他元件收集記錄,並將其傳送至 Log Analytics。
placeholder-azure-functions-* 用來加速 Azure Functions 冷啟動。

App Service Kubernetes 環境

必須先有 App Service Kubernetes 環境資源,才能建立應用程式。 其會啟用自訂位置中應用程式通用的設定,例如預設 DNS 尾碼。

在自訂位置中只能建立一個 Kubernetes 環境資源。 在大部分案例下,建立和部署應用程式的開發人員不需要直接知道資源。 您可以從提供的自訂位置識別碼直接推斷。 不過,定義 Azure Resource Manager 範本時,任何計畫資源都需要直接參考環境的資源識別碼。 方案和指定環境的自訂位置值必須相符。

Azure Arc 上 App Service、Functions 和 Logic Apps (預覽) 的常見問題集

需要多少成本?

在公開預覽期間,Azure Arc 上的 App Service 是免費的。

是否同時支援 Windows 和 Linux 應用程式?

僅支援以 Linux 為基礎的應用程式,包含程式碼和自訂容器。 不支援 Windows 應用程式。

支援哪些內建應用程式堆疊?

支援所有內建 Linux 堆疊。

是否支援所有應用程式部署類型?

不支援 FTP 部署。 目前也不支援 az webapp up。 支援其他部署方法,包括 Git、ZIP、CI/CD、Visual Studio 和 Visual Studio Code。

支援哪些 App Service 功能?

在預覽期間,正在驗證某些 App Service 功能。 支援這些功能時,將會啟動 Azure 入口網站中的左側導覽選項。 尚未支援的功能會維持灰色。

是否支援所有網路功能?

否。 不支援混合式連線、虛擬網路整合等網路功能。 存取限制支援已於 2022 年 4 月新增。 網路應該直接在 Kubernetes 叢集本身的網路規則中處理。

是否支援受控身分識別?

否。 在 Azure Arc 中執行時,無法指派受控識別給應用程式。如果您的應用程式需要身分識別來處理另一個 Azure 資源,請考慮改用應用程式服務主體

是否有任何調整限制?

使用 Azure Arc 在 Kubernetes 上透過 Azure App Service 部署的所有應用程式,都可以在基礎 Kubernetes 叢集的限制內進行調整。 如果基礎 Kubernetes 叢集用完可用的計算資源 (主要為 CPU 和記憶體),則應用程式只能調整為 Kubernetes 可使用可用資源排程的應用程式執行個體數目。

會收集哪些記錄?

系統元件和應用程式的記錄都會寫入標準輸出。 您可以使用標準 Kubernetes 工具來收集這兩種記錄類型以進行分析。 您也可以使用 Log Analytics 工作區設定 App Service 叢集延伸模組,其會將所有記錄傳送至該工作區。

根據預設,系統元件的記錄會傳送給 Azure 團隊。 不會傳送應用程式記錄。 您可以將 logProcessor.enabled=false 設定為擴充功能組態設定,以防止傳輸這些記錄。 此設定也會停用將應用程式轉送至 Log Analytics 工作區的功能。 停用記錄處理器可能會影響任何支援案例所需的時間,而且系統會要求您透過其他方法從標準輸出收集記錄。

如果我看到提供者註冊錯誤,該怎麼辦?

建立 Kubernetes 環境資源時,某些訂用帳戶可能會看到「找不到已註冊的資源提供者」錯誤。 錯誤詳細資料可能包含一組被視為有效的位置和 API 版本。 如果傳回此錯誤訊息,則必須向 Microsoft.Web 提供者重新註冊訂用帳戶,此作業不會影響現有的應用程式或 API。 若要重新註冊,請使用 Azure CLI 來執行 az provider register --namespace Microsoft.Web --wait。 然後重新嘗試 Kubernetes 環境命令。

我可以在 ARM64 型叢集上部署應用程式服務延伸模組嗎?

目前不支援 ARM64 型叢集。

我可以在哪些 Kubernetes 散發套件上部署延伸模組?

已在下列散發套件上驗證延伸模組:AKS、Azure Stack HCI 上的 AKS、Google Kubernetes Engine、Amazon Elastic Kubernetes Service 和 Kubernetes 叢集 API。

延伸模組版本資訊

應用程式服務延伸模組 0.9.0 版 (2021 年 5 月)

  • 應用程式服務延伸模組的初始公開預覽版本。
  • 支援 Web、函數和邏輯應用程式的程式碼和容器型部署。
  • Web 應用程式執行階段支援 --- .NET 3.1 和 5.0;Node JS 12 和 14;Python 3.6、3.7 和 3.8;PHP 7.3 和 7.4;Ruby 2.5、2.5.5、2.6 和 2.6.2;JAVA SE 8u232、8u242、8u252、11.05、11.06 和 11.07;Tomcat 8.5、8.5.41、8.5.53、8.5.57、9.0、9.0.20、9.0.33 和 9.0.37。

應用程式服務延伸模組 0.10.0 版 (2021 年 11 月)

  • 已移除指派至 Envoy 端點所需的預先指派靜態 IP 位址需求
  • 將 Keda 升級至 2.4.0 版
  • 將 Envoy 升級至 1.19.0 版
  • 將 Azure Function 執行階段升級至 3.3.1 版
  • 將 App Controller 和 Envoy 控制器的預設複本計數設定為 2,以新增進一步的穩定性

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行 命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.10.0

應用程式服務延伸模組 0.11.0 版 (2021 年 12 月)

  • 已新增 Java 和 .NET Web 應用程式的 Application Insights 支援
  • 已新增 .NET 6.0 Web 應用程式的支援
  • 已移除 .NET Core 2.0
  • 解決導致位置交換作業失敗的問題
  • 解決客戶在建立 Ruby Web 應用程式期間遇到的問題

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行 命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.0

應用程式服務延伸模組 0.11.1 版 (2021 年 12 月)

  • 解決 CRD 更新問題的次要版本

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.1

應用程式服務延伸模組 0.12.0 版 (2022 年 1 月)

  • 支援輸出 Proxy
  • 支援組建服務中的平行組建
  • 將 Envoy 升級至 1.20.1
  • 解決 .NET 應用程式的 Application Insights 支援問題

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.0

應用程式服務延伸模組 0.12.1 版 (2022 年 5 月)

  • 已解決輸出 Proxy 支援以啟用 Log Analytics 工作區記錄的問題

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.1

應用程式服務延伸模組 0.12.2 版 (2022 年 5 月)

  • 解決當延伸模組名稱長度超過 35 個字元時,從 v 0.12.0 升級導致升級失敗的更新

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.2

應用程式服務延伸模組 0.13.0 版 (2022 年 4 月)

  • 已新增 Node JS 應用程式的 Application Insights 無程式碼整合支援
  • 已新增透過 CLI 的存取限制支援
  • 延伸模組無法安裝時提供更多的詳細資料,以協助疑難排解問題

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.0

應用程式服務延伸模組 0.13.1 版 (2022 年 4 月)

  • 更新以解決在將叢集自動升級至 v 0.13.0 期間出現的升級失敗

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.1

應用程式服務延伸模組 0.13.5 版 (2023 年 12 月)

  • 更新以支援 Kubernetes 1.26 版和更新版本
  • 將 Envoy 更新至 1.2.1
  • 將 Keda 更新至 2.10.0 版
  • 將 EasyAuth 更新至 1.6.20 版
  • 更新支援語言的基礎映像

如果延伸模組處於穩定版本,且 auto-upgrade-minor-version 設定為 true,則延伸模組會自動升級。 若要手動將延伸模組更新至最新版本,您可以執行命令:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.5

下一步

建立 App Service Kubernetes 環境 (預覽)