Azure Functions 的 Azure Container Apps 裝載

Azure Functions 提供整合式支援,可在 Azure Container Apps 上 開發、部署和管理容器化函式應用程式。 當您需要在 Azure 中與其他微服務、API、網站、工作流程或任何容器裝載程式相同的環境中執行事件驅動函式時,請使用 Azure Container Apps 來裝載函式應用程式容器。 容器應用程式裝載可讓您在 Kubernetes 型環境中執行函式,內建支持開放原始碼監視、mTLS、Dapr 和 KEDA。

重要

Azure Container Apps 上裝載函式應用程式的支援目前為預覽狀態。

與 Container Apps 整合可讓您使用現有的函式程式設計模型,以 Azure Functions 支援的慣用程式設計語言或架構撰寫函式程式代碼。 您仍然可以使用事件驅動調整來取得 Functions 觸發程式和系結。 Container Apps 會使用基礎 Azure Kubernetes Service (AKS) 的強大功能,同時移除需要使用 Kubernetes API 的複雜度。

這項整合也表示您可以使用現有的 Functions 用戶端工具和 Azure 入口網站 來建立容器、將函式應用程式容器部署至 Container Apps,以及設定持續部署。 網路和可觀察性組態是在容器應用程式環境層級定義,並套用至在 Container Apps 環境中執行的所有微服務,包括您的函式應用程式。 您也可以取得 Container Apps 的其他雲端原生功能,包括 KEDA、Dapr、Envoy。 您仍然可以使用 Application Insights 來監視函式執行。

裝載和工作負載配置檔

Container Apps 有兩個主要主控方案、無伺服器耗用量方案和專用方案,其使用工作負載配置檔來更妥善地控制部署資源。 工作負載配置檔會決定部署在環境中容器應用程式的計算和記憶體資源數量。 這些配置檔已設定為符合應用程式的不同需求。 取用工作負載配置檔是新增至每個工作負載配置文件環境類型的預設配置檔。 您可以在建立環境時或在建立環境之後,將專用工作負載配置檔新增至您的環境。 若要深入瞭解工作負載配置檔,請參閱 Azure Container Apps 中的工作負載配置檔。

所有支援 Container Apps 的區域都支援 裝載容器化函式應用程式的容器應用程式

如果您的應用程式沒有特定的硬體需求,您可以使用預設的取用工作負載配置檔,在取用方案或專用方案中執行環境。 在 Container Apps 上執行函式時,您只需支付 Container Apps 使用量的費用。 如需詳細資訊,請參閱 Azure Container Apps 定價頁面

Azure Container Apps 上的 Azure Functions 支援使用工作負載配置檔在專用方案中啟用 GPU 的裝載。

若要瞭解如何在預設取用方案中建立函式應用程式容器並將其部署至 Container Apps,請參閱 在 Azure Container Apps 上建立您的第一個容器化函式。

若要瞭解如何使用工作負載配置檔建立 Container Apps 環境,並將函式應用程式容器部署到特定工作負載,請參閱 Container Apps 工作負載配置檔

容器中的函式

若要使用容器應用程式裝載,您的函式程式碼必須在您建立和維護的Linux容器中執行。 函式會維護一組 語言特定的基底映像 ,可用來產生容器化函式應用程式。

當您使用 Azure Functions Core Tools 建立 Functions 專案並包含 --docker 選項時,Core Tools 會產生具有正確基底映像的 Dockerfile,您可以在建立容器時用來作為起點。

重要

建立您自己的容器時,您必須將容器的基底映像更新為最新的支援基底映射。 Azure Functions 支援的基底映像是特定語言,且可在 Azure Functions 基底映像存放庫中找到

Functions 小組致力於發佈這些基底映像的每月更新。 一般更新包括 Functions 運行時間和語言的最新次要版本更新和安全性修正。 您應該定期從最新的基底映射更新容器,並重新部署容器的更新版本。

當您變更函式程式碼時,您必須重建並重新發佈容器映像。 如需詳細資訊,請參閱 更新登錄中的映像。

部署選項

Azure Functions 目前支援將容器化函式應用程式部署至 Azure Container Apps 的下列方法:

設定調整規則

Container Apps 上的 Azure Functions 是設計來根據事件目標設定縮放參數和規則。 您不需要擔心設定 KEDA 縮放物件。 建立或修改函式應用程式時,您仍然可以設定最小和最大複本計數。 下列 Azure CLI 命令會設定從 Azure Container Registry 在 Container Apps 環境中建立新函式應用程式時的最小和最大複本計數:

az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>

下列命令會在現有的函式應用程式上設定相同的最小和最大複本計數:

az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1

受控資源群組

Container Apps 上的 Azure Function 會在特別受控的資源群組中執行您的函式容器資源,藉由防止使用者、群組或服務原則在受控群組中意外或未經授權的修改或刪除資源,協助保護應用程式的一致性。 第一次在 Container Apps 環境中建立函式應用程式資源時,會為您建立此受控資源群組。 容器化函式應用程式所需的容器應用程式資源會在此受控資源群組中執行,而相同環境中建立的任何其他函式應用程式會使用此現有群組。 從環境中移除所有函式應用程式容器資源之後,系統會自動移除受控資源群組。 雖然可以看到受控資源群組,但任何修改或移除受控資源群組的嘗試都會導致錯誤。 若要從環境中移除受控資源群組,請移除所有函式應用程式容器資源,併為您移除。 如果您遇到這些受控資源群組的任何問題,您應該連絡支持人員。

容器應用程式裝載的考慮

將函式應用程式容器部署至 Container Apps 時,請記住下列考慮:

  • 雖然可以使用所有觸發程式,但容器應用程式上執行時,只有下列觸發程式可以動態調整(從零個實例) :
    • HTTP
    • Azure 佇列儲存體
    • Azure 服務匯流排
    • Azure 事件中樞
    • 卡 夫 卡*
    • 計時器
      *在容器應用程式上裝載時,不支援的通訊協定值 ssl使用不同的通訊協定值
  • 針對內建的 Container Apps 原則定義,目前僅適用於 Azure Functions 容器的環境層級原則。
  • 您目前無法在資源群組之間或訂用帳戶之間移動容器應用程式裝載的函式應用程式部署。 相反地,您必須在新的資源群組、訂用帳戶或區域中重新建立現有的容器化應用程式部署。
  • 使用 Container Apps 時,您沒有較低層級 Kubernetes API 的直接存取權。
  • 擴充 containerapp 功能與 appservice-kube Azure CLI 中的擴充功能衝突。 如果您先前已將應用程式發佈至 Azure Arc,請appservice-kube執行 az extension list 並確定未安裝。 如果是,您可以執行 az extension remove -n appservice-kube來移除它。
  • Functions Dapr 擴充功能也處於預覽狀態,並提供存放庫中的說明

下一步