昨天,我寫了一篇題為「在 Azure 容器應用程式上部署 Java Azure Function」的文章。
在那篇文章中,我提到了使用 Azure 的整合管理功能,我想澄清這意味著什麼以及它與本文中先前的方法有何不同。
Azure 容器應用程式是 Azure 的容器執行環境之一,可讓你執行任何容器化服務。以前,如果要在 Azure 容器應用程式中執行 Azure Functions,可以使用下列命令建立實例:
az containerapp create \ --name general-container-app \ --resource-group $RESOURCE_GROUP_NAME \ --environment $CONTAINER_ENVIRONMENT \ --registry-server $CONTAINER_REGISTRY_SERVER \ --image $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG \ --target-port 80 \ --ingress external \ --query properties.configuration.ingress.fqdn
執行命令後,您將看到以下訊息:
Container app created. Access your app at https://general-container-app.niceocean-********.eastus.azurecontainerapps.io/
然後您可以使用curl命令連接到您的Azure Functions服務:
curl https://general-container-app.niceocean-********.eastus.azurecontainerapps.io/api/httpexample?name=World
存取Azure容器應用程式環境後,您將看到general-container-app被建立為容器應用程序,並且此管理介面可用於任何已部署的容器化應用程式。
https://raw.githubusercontent.com/yoshioterada/Azure-Functions-Deploy-To-Azure-Container-Apps/main/images/ACA-Instance-for-Azure-Functions.png
新方法可讓您使用 az functionapp create 指令而不是 az containerapp create 在 Azure 容器應用程式中建立 Azure Functions。
az functionapp create \ --name $AZURE_FUNCTION_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --environment $CONTAINER_ENVIRONMENT \ --storage-account $STORAGE_NAME \ --workload-profile-name "Consumption" \ --max-replicas 15 \ --min-replicas 1 \ --functions-version 4 \ --runtime java \ --image $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG \ --assign-identity
透過此指令,您的Azure Functions將在Azure Container Apps中創建,並且管理介面將清楚地顯示它是一個Function App。
這意味著現在可以透過專用的 Azure Functions 管理介面來管理 Azure Functions,這使其與其他容器應用程式有所不同。
但是,Azure 應用程式服務中提供的管理功能與容器應用程式上的 Azure Functions 提供的管理功能之間存在一些差異。例如,診斷工具、部署功能等某些功能可能無法使用。
為了進行比較,這裡是部署在 Azure 應用程式服務上的 Azure Functions 的管理介面。
應用服務與 Azure 容器應用程式之間的管理功能差異可能包括:
- Diagnose and solve problems - Microsoft Defender for Cloud - Events (preview) - Log stream - Deployment - App Service plan - Development Tools - Monitoring - Support troubleshooting
有些人可能認為缺少某些功能意味著缺少功能。
但是,部署到Azure Container Apps時,運行環境是基於容器的,這就改變了部署和管理方式。 Azure Functions 管理介面中未包含的功能需要透過 Azure 容器應用程式介面單獨管理。
使用 az functionapp create 指令在 Azure 容器應用程式上建立 Azure Functions 執行個體時,會自動建立一個新的資源組來容納該容器執行個體。
在我的環境中,資源組名稱遵循以下約定:
$CONTAINER_ENVIRONMENT_FunctionApps_$UUID
您將看到已產生以您指定的 $AZURE_FUNCTION_NAME 命名的 Azure 容器應用程式實例。
當您按一下此執行個體時,您將被導向至特定於 Azure 容器應用程式的管理介面,其中 Azure Functions 會作為容器執行個體執行。
Azure 容器應用程式提供了與 Azure 應用程式服務不同的 CI/CD 和部署方法。它還允許在容器層級提供功能,例如可以利用的 Dapr 和 Service Connector。
以前,可以透過將 Azure Functions 容器化在容器執行環境中來執行 Azure Functions,但 Azure Functions 沒有專用的管理介面。
透過這種新方法,Azure Functions 和 Azure 容器應用程式已集成,提供具有關聯的 Azure Functions 管理介面的容器環境。
我知道有些客戶在 Azure Kubernetes 服務 (AKS) 上執行 Azure Functions 容器。以前,他們缺乏專門的管理介面。但是,透過部署到 Azure 容器應用程序,他們現在可以使用 Azure Functions 管理,同時享受與管理 AKS 上的操作相比管理 Azure 容器應用程式的簡單性。
將 Azure Functions 部署到 Azure 容器應用程式的方法可能會進一步發展。我期待看到事情如何發展。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3