Azure Container Apps-värd för Azure Functions

Azure Functions ger integrerat stöd för att utveckla, distribuera och hantera containerbaserade funktionsappar i Azure Container Apps. Använd Azure Container Apps för att vara värd för dina funktionsappcontainrar när du behöver köra dina händelsedrivna funktioner i Azure i samma miljö som andra mikrotjänster, API:er, webbplatser, arbetsflöden eller alla värdbaserade containerprogram. Med Container Apps-värd kan du köra dina funktioner i en Kubernetes-baserad miljö med inbyggt stöd för övervakning med öppen källkod, mTLS, Dapr och KEDA.

Viktigt!

Stöd för att hantera funktionsappar i Azure Container Apps finns för närvarande i förhandsversion.

Med integrering med Container Apps kan du använda den befintliga funktionsprogrammeringsmodellen för att skriva funktionskod i önskat programmeringsspråk eller ramverk som stöds av Azure Functions. Du får fortfarande Functions-utlösare och bindningar med händelsedriven skalning. Container Apps använder kraften i den underliggande Azure Kubernetes Service (AKS) och tar bort komplexiteten i att behöva arbeta med Kubernetes-API:er.

Den här integreringen innebär också att du kan använda befintliga Functions-klientverktyg och Azure-portalen för att skapa containrar, distribuera funktionsappcontainrar till Container Apps och konfigurera kontinuerlig distribution. Nätverks- och observerbarhetskonfigurationer definieras på miljönivå för containerappen och gäller för alla mikrotjänster som körs i en Container Apps-miljö, inklusive din funktionsapp. Du får också de andra molnbaserade funktionerna i Container Apps, inklusive KEDA, Dapr, Envoy. Du kan fortfarande använda Application Insights för att övervaka dina funktionskörningar.

Värd- och arbetsbelastningsprofiler

Det finns två primära värdplaner för Container Apps, en serverlös förbrukningsplan och en dedikerad plan som använder arbetsbelastningsprofiler för att bättre kontrollera dina distributionsresurser. En arbetsbelastningsprofil avgör mängden beräknings- och minnesresurser som är tillgängliga för containerappar som distribueras i en miljö. De här profilerna är konfigurerade för att passa de olika behoven i dina program. Förbrukningsarbetsbelastningsprofilen är standardprofilen som läggs till i varje miljötyp för arbetsbelastningsprofiler. Du kan lägga till dedikerade arbetsbelastningsprofiler i din miljö när du skapar en miljö eller när den har skapats. Mer information om arbetsbelastningsprofiler finns i Arbetsbelastningsprofiler i Azure Container Apps.

Container Apps-värdtjänster för containerbaserade funktionsappar stöds i alla regioner som stöder Container Apps.

Om din app inte har några specifika maskinvarukrav kan du köra din miljö antingen i en förbrukningsplan eller i en dedikerad plan med standardprofilen Förbrukningsarbetsbelastning. När du kör funktioner i Container Apps debiteras du endast för användningen av Container Apps. Mer information finns på prissidan för Azure Container Apps.

Azure Functions i Azure Container Apps stöder GPU-aktiverad värd i den dedikerade planen med arbetsbelastningsprofiler.

Information om hur du skapar och distribuerar en funktionsappcontainer till Container Apps i standardförbrukningsplanen finns i Skapa dina första containerbaserade funktioner i Azure Container Apps.

Information om hur du skapar en Container Apps-miljö med arbetsbelastningsprofiler och distribuerar en funktionsappcontainer till en specifik arbetsbelastning finns i arbetsbelastningsprofiler för Container Apps.

Funktioner i containrar

Om du vill använda Container Apps som värd måste funktionskoden köras i en Linux-container som du skapar och underhåller. Functions har en uppsättning språkspecifika basavbildningar som du kan använda för att generera dina containerbaserade funktionsappar.

När du skapar ett Functions-projekt med hjälp av Azure Functions Core Tools och inkluderar --docker alternativet genererar Core Tools Dockerfile med rätt basavbildning, som du kan använda som utgångspunkt när du skapar containern.

Viktigt!

När du skapar egna containrar måste du hålla basavbildningen av containern uppdaterad till den senaste basavbildningen som stöds. Basavbildningar som stöds för Azure Functions är språkspecifika och finns i basavbildningslagringarna för Azure Functions.

Functions-teamet har åtagit sig att publicera månatliga uppdateringar för dessa basavbildningar. Regelbundna uppdateringar omfattar de senaste delversionsuppdateringarna och säkerhetskorrigeringarna för både Functions-körningen och språken. Du bör regelbundet uppdatera containern från den senaste basavbildningen och distribuera om den uppdaterade versionen av containern.

När du gör ändringar i funktionskoden måste du återskapa och publicera om containeravbildningen. Mer information finns i Uppdatera en avbildning i registret.

Distribueringsalternativ

Azure Functions stöder för närvarande följande metoder för att distribuera en containerbaserad funktionsapp till Azure Container Apps:

Konfigurera skalningsregler

Azure Functions i Container Apps är utformat för att konfigurera skalningsparametrar och regler enligt händelsemålet. Du behöver inte bekymra dig om att konfigurera KEDA-skalbara objekt. Du kan fortfarande ange minsta och högsta antal repliker när du skapar eller ändrar funktionsappen. Följande Azure CLI-kommando anger minsta och högsta antal repliker när du skapar en ny funktionsapp i en Container Apps-miljö från ett Azure Container Registry:

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>

Följande kommando anger samma minsta och högsta antal repliker i en befintlig funktionsapp:

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

Hanterade resursgrupper

Azure Function i Container Apps kör dina funktionsbaserade containerresurser i särskilt hanterade resursgrupper, vilket hjälper till att skydda dina appars konsekvens genom att förhindra oavsiktlig eller obehörig ändring eller borttagning av resurser i den hanterade gruppen av användare, grupper eller tjänstprinciper. Den här hanterade resursgruppen skapas för dig första gången du skapar funktionsappresurser i en Container Apps-miljö. Container Apps-resurser som krävs av din containerbaserade funktionsapp körs i den här hanterade resursgruppen, och alla andra funktionsappar som skapas i samma miljö använder den här befintliga gruppen. En hanterad resursgrupp tas bort automatiskt när alla containerresurser för funktionsappen har tagits bort från miljön. Även om den hanterade resursgruppen är synlig resulterar alla försök att ändra eller ta bort den hanterade resursgruppen i ett fel. Om du vill ta bort en hanterad resursgrupp från en miljö tar du bort alla containerresurser för funktionsappen och tas bort åt dig. Om du stöter på problem med dessa hanterade resursgrupper bör du kontakta supporten.

Överväganden för värdtjänster för Container Apps

Tänk på följande när du distribuerar dina funktionsappcontainrar till Container Apps:

  • Alla utlösare kan användas, men endast följande utlösare kan dynamiskt skala (från noll instanser) när de körs i Container Apps:
    • HTTP
    • Azure Queue Storage
    • Azure Service Bus
    • Azure Event Hubs
    • Kafka*
    • Timer
      *Protokollvärdet ssl för stöds inte när det finns i Container Apps. Använd ett annat protokollvärde.
  • För de inbyggda principdefinitionerna för Container Apps gäller för närvarande endast principer på miljönivå för Azure Functions-containrar.
  • Du kan för närvarande inte flytta en distribution av en Container Apps-värdbaserad funktionsapp mellan resursgrupper eller mellan prenumerationer. I stället måste du återskapa den befintliga distributionen av containerbaserade appar i en ny resursgrupp, prenumeration eller region.
  • När du använder Container Apps har du inte direkt åtkomst till Kubernetes-API:er på lägre nivå.
  • Tillägget containerapp står i konflikt med appservice-kube tillägget i Azure CLI. Om du tidigare har publicerat appar till Azure Arc kör az extension list du och kontrollerar att de appservice-kube inte är installerade. Om det är det kan du ta bort det genom att köra az extension remove -n appservice-kube.
  • Functions Dapr-tillägget är också en förhandsversion med hjälp av lagringsplatsen.

Nästa steg