Delen via


Overzicht van Azure Functions in Azure Container Apps

Azure Functions in Azure Container Apps biedt een volledig beheerde serverloze hostingomgeving die de gebeurtenisgestuurde mogelijkheden van Azure Functions combineert met de robuuste functies van Container Apps. Deze integratie omvat geavanceerde mogelijkheden, zoals indeling op basis van Kubernetes, ingebouwde automatische schaalaanpassing, mogelijk gemaakt door KEDA (Op Kubernetes gebaseerde op gebeurtenissen gebaseerde automatische schaalaanpassing), Dapr -integratie (Distributed Application Runtime), GPU-workloadondersteuning, sidecar-ondersteuning, VNet-connectiviteit (virtueel netwerk) en revisiebeheer.

Deze benadering is handig als u wilt dat uw functies worden uitgevoerd naast andere container-apps, zoals microservices, API's of websites. Verder kan het containeriseren van uw functie-apps helpen wanneer u aangepaste afhankelijkheden nodig hebt of wilt profiteren van schaal-naar-nul voor kostenbesparingen. Als u rekenkrachtige taken uitvoert, zoals AI-deductie, ondersteunt Container Apps ook hosting op basis van GPU via serverloze GPU-aanbiedingen en toegewezen workloadprofielen.

Als een geïntegreerde functiemogelijkheid in Azure Container Apps kunt u Azure Functions-afbeeldingen rechtstreeks implementeren op Azure Container Apps met behulp van de Microsoft.App resourceprovider door kind=functionapp in te stellen wanneer u az containerapp create aanroept. Apps die op deze manier zijn gemaakt, hebben toegang tot alle Functies van Azure Container Apps. Als u implementeert via Azure Portal, kunt u de optie optimaliseren voor functions-apps inschakelen tijdens de installatie. Raadpleeg de sectie implementatie en installatie voor meer informatie.

Belangrijkste voordelen

Het Container Apps-hostingmodel bouwt voort op de flexibiliteit van in containers geplaatste workloads en de gebeurtenisgestuurde aard van Azure Functions. Het biedt de volgende belangrijke voordelen:

De volgende tabel helpt u bij het vergelijken van de functies van Functions in Container Apps met een Flex-verbruiksabonnement.

Eigenschap Container-toepassingen Flex Verbruiksplan
Schalen naar nul ✅ Ja (via KEDA) ✅ Ja
Maximale uitschaling 1000 (standaard 10, configureerbaar) 1,000
Always-on-exemplaren ✅ Ja (via minReplicas) ✅ Ja (via altijd gereede instanties)
VNet-integratie ✅ Ja ✅ Ja
Ondersteuning voor aangepaste containers ✅ Ja (gebruik je eigen afbeelding) ❌ Beperkt (geen breng je eigen container mee)
GPU-ondersteuning ✅ Ja (via een toegewezen GPU-workloadprofiel voor serverloze GPU) ❌ Nee
Ingebouwde functies Ondersteuning voor Container Apps-functies. Bijvoorbeeld KEDA, Dapr, multi-revisions, mTLS, sidecars, toegangsbeheer en meer Uitsluitend functies
Betaalmodel Prijzen voor Container Apps: Verbruiksabonnement (vCPU, geheugen, aanvragen) & Toegewezen plan (op basis van workloadprofielen) Uitvoeringstijd + altijd gereede exemplaren

Zie Functies schalen en hostingopties voor een volledige vergelijking van de Functies op Container Apps tegenover het Flexverbruiksplan en alle andere abonnement- en hostingtypen.

Scenariën

Azure Functions in Container Apps is ideaal voor een breed scala aan gebruiksvoorbeelden, met name wanneer u gebeurtenisgestuurde uitvoering, containerflexiteit of veilige integratie met andere services nodig hebt:

  • Line-Of-Business-API's: Aangepaste bibliotheken, pakketten en API's verpakken met Azure Functions voor Line-Of-Business-toepassingen.
  • Migratie en modernisering: Migratie van on-premises verouderde en/of monolith-toepassingen naar cloudeigen microservices op containers.
  • Gebeurtenisgestuurde verwerking: Gebeurtenissen van Event Grid, Service Bus, Event Hubs en andere gebeurtenisbronnen verwerken met gemak van het Functions-programmeermodel.
  • AI- en GPU-workloads: Serverloze workloadverwerking van video's, afbeeldingen, transcripties of andere verwerkingsintensieve taken waarvoor GPU-rekenresources zijn vereist. Zie Serverloze GPU's gebruiken in Azure Container Apps voor meer informatie.
  • Microservices: Integreer Azure Functions met andere gehoste Container Apps-services.
  • Aangepaste containers: Pakketfuncties met aangepaste runtimes of sidecars.
  • Privé-apps: Beveilig interne functies met behulp van VNet en intern inkomend verkeer.
  • .NET Aspire: Met de integratie van .NET Aspire met Azure Functions kunt u een Azure Functions .NET-project ontwikkelen, fouten opsporen en organiseren als onderdeel van de .NET Aspire-app-host. Meer informatie over Azure Functions met .NET Aspire
  • Algemene functies: Voer ondersteunde standaardScenario's van Azure Functions uit (bijvoorbeeld timers, bestandsverwerking, databasetriggers).

Implementatie en installatie

Als u Azure Functions in Azure Container Apps wilt implementeren, verpakt u uw Functions-app als een aangepaste containerinstallatiekopieën en implementeert u deze net als elke andere container-app met één belangrijk verschil. U moet de kind=functionapp eigenschap instellen wanneer u de Azure CLI of ARM/Bicep-sjablonen gebruikt. Raadpleeg de officiële documentatie om aan de slag te gaan voor gedetailleerde stappen en voorbeelden.

az containerapp create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $CONTAINER_APP_NAME \
  --environment $ENVIRONMENT_NAME \
  --image mcr.microsoft.com/k8se/quickstart-functions:latest \
  --ingress external \
  --target-port 80 \
  --kind functionapp \
  --query properties.outputs.fqdn

Met deze opdracht wordt de URL van uw Functions-app geretourneerd. Kopieer deze URL en plak deze in een webbrowser.

Selecteer in Azure Portal de optie Optimaliseren voor Azure Functions tijdens het maken van de container-app om de installatie te stroomlijnen.

Schermopname van Azure Portal wanneer u een container-app maakt die vooraf is geconfigureerd voor Azure Functions.

Alle standaardimplementatiemethoden worden ondersteund, waaronder:

Raadpleeg de officiële documentatie om aan de slag te gaan voor gedetailleerde stappen en voorbeelden.

Prijsstelling en facturering

Azure Functions in Azure Container Apps volgt hetzelfde prijsmodel als Azure Container Apps. Facturering is gebaseerd op het abonnementstype dat u selecteert voor uw omgeving. Dit kan Consumption of Dedicated zijn.

  • Verbruiksabonnement: Deze serverloze rekenoptie factureert u alleen voor de resources die uw apps gebruiken terwijl ze worden uitgevoerd.
  • Toegewezen plan: deze optie biedt aangepaste rekenresources en rekent kosten aan voor de exemplaren die zijn toegewezen aan elk workloadprofiel.

Uw keuze voor het abonnement bepaalt hoe factureringsberekeningen worden gemaakt. Verschillende toepassingen in een omgeving kunnen verschillende abonnementen gebruiken.

Belangrijke punten om te noteren:

  • Er worden geen extra kosten in rekening gebracht voor het gebruik van het Azure Functions-programmeermodel in Container Apps.
  • Durable Functions en andere geavanceerde patronen worden ondersteund en gefactureerd onder hetzelfde Container Apps-prijsmodel. Raadpleeg de documentatie voor facturering in Azure Container Apps voor gedetailleerde factureringsmechanica en voorbeelden.

Schaalvergroting gestuurd door gebeurtenissen

Azure Functions in Container Apps ondersteunt alle belangrijke taalruntimes die beschikbaar zijn in Azure Functions, waaronder: C#, JavaScript/TypeScript (Node.js), Python, Java, PowerShell, Aangepaste containers (bring your own image).

Azure Functions die wordt uitgevoerd in Azure Container Apps , configureert automatisch schaalregels op basis van de gebeurtenisbron, waardoor handmatige KEDA-regeldefinities niet meer nodig zijn. Daarom is de knop 'Schaalregels toevoegen' in Azure Portal uitgeschakeld voor Functions in Container Apps. U kunt echter nog steeds minimum- en maximumaantal replica's definiëren om schaalgrenzen vast te stellen en controle te houden over de toewijzing van resources.

Alle standaard Azure Functions-triggers en -bindingen worden ondersteund in Container Apps met de volgende uitzonderingen:

Beheerde identiteiten worden ondersteund voor triggers en bindingen die dit toestaan. Ze zijn ook beschikbaar voor:

Gebruik voor niet-ondersteunde triggers vaste replicatellingen (dat wil gezegd minReplicas > 0 instellen) in Azure Functions in Azure Container Apps. Raadpleeg de ontwikkelaarshandleiding voor Functions voor meer informatie.

Schaalbaarheid en prestaties

Azure Functions in Container Apps wordt automatisch geschaald op basis van gebeurtenissen die KEDA gebruiken, zonder dat u handmatig schaalregels hoeft te configureren. U kunt nog steeds min/max replica's instellen om het schaalgedrag te beheren.

  • Gebeurtenisgestuurd schalen: schaalt automatisch op basis van triggers zoals Event Grid, Service Bus of HTTP.
  • Schalen naar nul: inactiviteit van apps inschalen naar nul om kosten te besparen.
  • Controle over koude start: meer informatie over het verminderen van de koude starttijd in Azure Container Apps.
  • Gelijktijdigheid: elk exemplaar kan meerdere gebeurtenissen parallel verwerken.
  • Grote schaal: uitschalen naar 1000 exemplaren per app (standaard is 10).
  • GPU-ondersteuning: Rekenworkloads uitvoeren zoals AI-deductie met GPU-ondersteuning.

Dit maakt Container Apps ideaal voor zowel piekbelastingen als constante workloads. Zie Schaalregels instellen in Azure Container Apps voor meer informatie

Netwerken en beveiliging

Azure Functions in Container Apps profiteert van de robuuste netwerk - en beveiligingsfuncties van Container Apps voor veilige, schaalbare implementaties:

  • VNet-integratie: Toegang tot privébronnen veilig via interne eindpunten en privédatabases.
  • Beheerde identiteit: verifiëren met Azure-services met behulp van door het systeem/de gebruiker toegewezen identiteiten, zonder geheimen of verbindingsreeksen die nodig zijn.
  • Dapr-ondersteuning: Schakel pub/sub, statusbeheer en veilige serviceaanroepen in via Dapr-sidecars. Zie Microservice-API's van Dapr voor meer informatie.
  • Inkomend verkeer en TLS: beveiligde HTTP-eindpunten beschikbaar maken met TLS/mTLS, aangepaste domeinen of intern houden.
  • Omgevingsisolatie: Functies delen de grenzen van de Container Apps-omgeving voor veilige, doelgerichte communicatie.

Deze mogelijkheden maken container-apps-gehoste functies ideaal voor serverloze toepassingen op bedrijfsniveau.

Bewaking en logboekregistratie

Azure Functions in Container Apps kan naadloos worden geïntegreerd met de waarneembaarheidshulpprogramma's van Azure voor het bijhouden van prestaties en diagnose van problemen:

  • Application Insights: Biedt telemetrie voor aanvragen, afhankelijkheden, uitzonderingen en aangepaste traceringen. Zie Monitor Azure Functions voor meer informatie.
  • Log Analytics: Legt de levenscyclus van containers vast en schaalt gebeurtenissen (bijvoorbeeld Vermeldingen van FunctionsScalerInfo). Zie Toepassingslogboekregistratie in Azure Container Apps voor meer informatie.
  • Aangepaste logboekregistratie: Ondersteunt standaardframeworks zoals ILogger en consolelogboekregistratie voor gestructureerde uitvoer.
  • Gecentraliseerde bewaking: Container Apps-omgeving biedt geïntegreerde dashboards en waarschuwingen voor alle apps.

Overwegingen

Houd rekening met deze andere overwegingen bij het gebruik van Azure Functions in Azure Container Apps:

  • Vereiste voor inkomend verkeer voor automatisch schalen: als u automatisch schalen wilt inschakelen op basis van gebeurtenissen, moet inkomend verkeer zijn ingeschakeld( openbaar of binnen de interne omgeving van Container Apps).
  • Verplicht opslagaccount: elke Functions-app die is geïmplementeerd in Container Apps, moet worden gekoppeld aan een opslagaccount. Dit is vereist voor het beheren van triggers, logboeken en status. Bekijk de richtlijnen voor het opslagaccount voor aanbevolen procedures.
  • Opslag met meerdere revisies: wanneer u implementeert met meerdere actieve revisies, wijst u een toegewezen opslagaccount toe aan elke revisie. Het gebruik van een toegewezen opslagaccount helpt conflicten te voorkomen en zorgt voor een juiste isolatie. Als u geen gelijktijdige revisies nodig hebt, kunt u ook de standaardmodus voor één revisie gebruiken voor vereenvoudigd beheer.
  • Latentie van koude start: wanneer uw container-app inschaalt naar nul tijdens niet-actieve perioden, ervaart de eerste aanvraag na inactiviteit een koude start. Meer informatie over het verminderen van koude begintijden.
  • Integratie van Application Insights: Voor robuuste bewaking en diagnose koppelt u uw Functions-app aan Application Insights. Zie App Insights-integratie met Functions voor meer informatie.
  • Functions-proxy's: niet ondersteund. Voor API-gatewayscenario's integreert u in plaats daarvan met Azure API Management.
  • Implementatiesites: staging- en productiesites zijn niet beschikbaar. Gebruik blauwgroene implementatiestrategieën voor releases zonder downtime.
  • Functies-toegangssleutels: het gebruik van de portal voor het genereren van Functions-toegangssleutels wordt niet ondersteund. Overweeg om Azure Key Vault te gebruiken om sleutels op te slaan. U kunt ook de volgende opties gebruiken om HTTP-eindpunten in productie te beveiligen:
  • Quotum- en resourcelimieten: Container Apps-omgevingen hebben standaardlimieten voor geheugen, CPU en exemplaren per regio. Zie de omgevingslimieten en standaardquota voor meer informatie. Als voor uw workload meer resources nodig zijn, kunt u een quotumverhoging aanvragen.
  • Handmatige schaalregelconfiguratie: de knop 'Schaalregels toevoegen' in Azure Portal is uitgeschakeld voor Azure Functions die wordt gehost in Container Apps, omdat schaalregels automatisch worden geconfigureerd op basis van de gebeurtenisbron. Handmatige KEDA-regeldefinities zijn niet vereist in deze installatie.

Feedback verzenden

Dien een probleem of een functieaanvraag in bij de GitHub-opslagplaats van Azure Container Apps.

Volgende stappen/verdere resources

Als u wilt blijven leren en bouwen met Azure Functions in Container Apps, verkent u de volgende resources: