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 helt hanterad Kubernetes-baserad miljö med inbyggt stöd för övervakning med öppen källkod, mTLS, Dapr och Kubernetes Händelsedriven autoskalning (KEDA).

Du kan skriva funktionskoden i valfri språkstack som stöds av Functions. Du kan använda samma Functions-utlösare och bindningar med händelsedriven skalning. Du kan också använda befintliga Functions-klientverktyg och Azure Portal för att skapa containrar, distribuera funktionsappcontainrar till Container Apps och konfigurera kontinuerlig distribution.

Integrering av containerappar innebär också att nätverks- och observerbarhetskonfigurationer, som definieras på miljönivå för containerappen, gäller för din funktionsapp precis som för alla mikrotjänster som körs i en Container Apps-miljö. 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 och funktionsappen kan komma åt samma virtuella nätverksresurser som tillhandahålls av miljön.

En allmän översikt över värdalternativ för containrar för Azure Functions finns i Stöd för Linux-container i Azure Functions.

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 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 koden köras på en funktionsapp 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 kodprojekt 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:

Virtual Network-integration

När du är värd för dina funktionsappar i en Container Apps-miljö kan dina funktioner dra nytta av både internt och externt tillgängliga virtuella nätverk. Mer information om miljönätverk finns i Nätverk i Azure Container Apps-miljön.

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 Functions i Container Apps kör dina containerbaserade funktionsappresurser i särskilt hanterade resursgrupper. Dessa hanterade resursgrupper hjälper till att skydda dina appars konsekvens genom att förhindra oavsiktliga eller obehöriga ändringar eller borttagning av resurser i den hanterade gruppen, även av tjänstens huvudnamn.

En hanterad resursgrupp 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. Andra funktionsappar som du skapar 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 en Container Apps-miljö:
    • HTTP
    • Azure Queue Storage
    • Azure Service Bus
    • Azure Event Hubs
    • Kafka
    • Timer
  • Dessa begränsningar gäller för Kafka-utlösare:
    • Protokollvärdet ssl för stöds inte när det finns i Container Apps. Använd ett annat protokollvärde.
    • För att en Kafka-utlösare ska kunna skalas dynamiskt när den username är ansluten till Event Hubs måste egenskapen matchas mot en programinställning som innehåller det faktiska användarnamnsvärdet. När standardvärdet $ConnectionString används kan Kafka-utlösaren inte orsaka att appen skalas dynamiskt.
  • 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 använda hanterade identiteter både för utlösar- och bindningsanslutningar och för distributioner från ett Azure Container Registry.
  • När antingen din funktionsapp och Azure Container Registry-baserade distribution använder hanterade identitetsbaserade anslutningar kan du inte ändra inställningarna för processor- och minnesallokering i portalen. Du måste i stället använda Azure CLI.
  • 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.

Nästa steg