昨天,我写了一篇题为“在 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