Azure Container Apps hosten van Azure Functions

Azure Functions biedt geïntegreerde ondersteuning voor het ontwikkelen, implementeren en beheren van functie-apps in containers in Azure Container Apps. Gebruik Azure Container Apps om uw functie-app-containers te hosten wanneer u uw gebeurtenisgestuurde functies in Azure wilt uitvoeren in dezelfde omgeving als andere microservices, API's, websites, werkstromen of door containers gehoste programma's. Met Container Apps-hosting kunt u uw functies uitvoeren in een Kubernetes-omgeving met ingebouwde ondersteuning voor opensource-bewaking, mTLS, Dapr en KEDA.

Belangrijk

Ondersteuning voor het hosten van functie-apps in Azure Container Apps is momenteel in preview.

Met integratie met Container Apps kunt u het bestaande programmeermodel voor functies gebruiken om functiecode te schrijven in uw favoriete programmeertaal of framework dat wordt ondersteund door Azure Functions. U krijgt nog steeds de Functions-triggers en -bindingen met gebeurtenisgestuurd schalen. Container Apps maakt gebruik van de kracht van de onderliggende Azure Kubernetes Service (AKS) terwijl de complexiteit van het werken met Kubernetes-API's wordt verwijderd.

Deze integratie betekent ook dat u bestaande Functions-clienthulpprogramma's en Azure Portal kunt gebruiken om containers te maken, functie-app-containers te implementeren in Container Apps en continue implementatie te configureren. Netwerk- en waarneembaarheidsconfiguraties worden gedefinieerd op het niveau van de Container App-omgeving en zijn van toepassing op alle microservices die worden uitgevoerd in een Container Apps-omgeving, met inbegrip van uw functie-app. U krijgt ook de andere cloudeigen mogelijkheden van Container Apps, waaronder KEDA, Dapr, Envoy. U kunt Application Insights nog steeds gebruiken om de uitvoering van uw functies te bewaken.

Hosting- en workloadprofielen

Er zijn twee primaire hostingplannen voor Container Apps, een serverloos verbruiksabonnement en een Dedicated-abonnement, dat gebruikmaakt van workloadprofielen om uw implementatieresources beter te beheren. Een workloadprofiel bepaalt de hoeveelheid reken- en geheugenresources die beschikbaar zijn voor container-apps die in een omgeving zijn geïmplementeerd. Deze profielen zijn geconfigureerd voor de verschillende behoeften van uw toepassingen. Het workloadprofiel Verbruik is het standaardprofiel dat is toegevoegd aan elk omgevingstype workloadprofielen. U kunt Toegewezen workloadprofielen toevoegen aan uw omgeving wanneer u een omgeving maakt of nadat deze is gemaakt. Zie Workloadprofielen in Azure Container Apps voor meer informatie over workloadprofielen.

Container Apps die als host fungeren voor containerfunctie-apps wordt ondersteund in alle regio's die Container Apps ondersteunen.

Als uw app geen specifieke hardwarevereisten heeft, kunt u uw omgeving uitvoeren in een verbruiksabonnement of in een toegewezen abonnement met behulp van het standaardwerkbelastingprofiel Verbruik. Bij het uitvoeren van functies in Container Apps worden alleen kosten in rekening gebracht voor het gebruik van Container Apps. Zie de pagina met prijzen voor Azure Container Apps voor meer informatie.

Azure Functions in Azure Container Apps ondersteunt hosting met GPU in het Dedicated-abonnement met workloadprofielen.

Voor meer informatie over het maken en implementeren van een container voor een functie-app in Container Apps in het standaardverbruiksabonnement raadpleegt u Uw eerste containerfuncties maken in Azure Container Apps.

Zie Container Apps-workloadprofielen voor meer informatie over het maken van een Container Apps-omgeving met workloadprofielen en het implementeren van een functie-app-container naar een specifieke workload.

Functies in containers

Als u Container Apps-hosting wilt gebruiken, moet uw functiecode worden uitgevoerd in een Linux-container die u maakt en onderhoudt. Functions onderhoudt een set taalspecifieke basisinstallatiekopieën die u kunt gebruiken om uw container-functie-apps te genereren.

Wanneer u een Functions-project maakt met behulp van Azure Functions Core Tools en de --docker optie opneemt, genereert Core Tools het Dockerfile met de juiste basisinstallatiekopieën, die u als uitgangspunt kunt gebruiken bij het maken van uw container.

Belangrijk

Wanneer u uw eigen containers maakt, moet u de basisinstallatiekopieën van uw container bijwerken naar de meest recente ondersteunde basisinstallatiekopieën. Ondersteunde basisinstallatiekopieën voor Azure Functions zijn taalspecifiek en bevinden zich in de basisinstallatiekopieën van Azure Functions.

Het Functions-team zet zich in voor het publiceren van maandelijkse updates voor deze basisinstallatiekopieën. Regelmatige updates bevatten de meest recente secundaire versie-updates en beveiligingscorrecties voor zowel de Functions-runtime als de talen. Werk uw container regelmatig bij vanaf de meest recente basisinstallatiekopie en implementeer de bijgewerkte versie van uw container opnieuw.

Wanneer u wijzigingen aanbrengt in uw functiecode, moet u de containerinstallatiekopieën opnieuw bouwen en opnieuw publiceren. Zie Een installatiekopieën bijwerken in het register voor meer informatie.

Implementatieopties

Azure Functions ondersteunt momenteel de volgende methoden voor het implementeren van een containerfunctie-app in Azure Container Apps:

Schaalregels configureren

Azure Functions in Container Apps is ontworpen om de schaalparameters en -regels te configureren op basis van het gebeurtenisdoel. U hoeft zich geen zorgen te maken over het configureren van de met KEDA geschaalde objecten. U kunt nog steeds het minimum- en maximumaantal replica's instellen bij het maken of wijzigen van uw functie-app. Met de volgende Azure CLI-opdracht wordt het minimum- en maximumaantal replica's ingesteld bij het maken van een nieuwe functie-app in een Container Apps-omgeving vanuit een 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>

Met de volgende opdracht wordt hetzelfde minimum- en maximumaantal replica's ingesteld voor een bestaande functie-app:

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

Beheerde resourcegroepen

Azure Function in Container Apps voert uw gefunctioneerde containerresources uit in speciaal beheerde resourcegroepen, waardoor de consistentie van uw apps wordt beschermd door onbedoelde of niet-geautoriseerde wijzigingen of verwijdering van resources in de beheerde groep door gebruikers, groepen of serviceprincipes te voorkomen. Deze beheerde resourcegroep wordt voor het eerst gemaakt wanneer u functie-app-resources maakt in een Container Apps-omgeving. Container Apps-resources die zijn vereist voor uw functie-app in containers, worden uitgevoerd in deze beheerde resourcegroep en andere functie-apps die in dezelfde omgeving worden gemaakt, gebruiken deze bestaande groep. Een beheerde resourcegroep wordt automatisch verwijderd nadat alle containerresources van de functie-app uit de omgeving zijn verwijderd. Hoewel de beheerde resourcegroep zichtbaar is, resulteert elke poging om de beheerde resourcegroep te wijzigen of te verwijderen een fout. Als u een beheerde resourcegroep uit een omgeving wilt verwijderen, verwijdert u alle containerresources van de functie-app en wordt deze voor u verwijderd. Als u problemen ondervindt met deze beheerde resourcegroepen, neemt u contact op met de ondersteuning.

Overwegingen voor het hosten van Container Apps

Houd rekening met de volgende overwegingen bij het implementeren van uw functie-app-containers in Container Apps:

  • Hoewel alle triggers kunnen worden gebruikt, kunnen alleen de volgende triggers dynamisch worden geschaald (van nul exemplaren) wanneer ze worden uitgevoerd in Container Apps:
    • HTTP
    • Azure Queue Storage
    • Azure Service Bus
    • Azure Event Hubs
    • Kafka*
    • Timer
      *De protocolwaarde van ssl wordt niet ondersteund wanneer deze wordt gehost in Container Apps. Gebruik een andere protocolwaarde.
  • Voor de ingebouwde Container Apps-beleidsdefinities zijn momenteel alleen beleidsregels op omgevingsniveau van toepassing op Azure Functions-containers.
  • U kunt momenteel geen door Container Apps gehoste functie-app-implementatie verplaatsen tussen resourcegroepen of tussen abonnementen. In plaats daarvan moet u de bestaande implementatie van een container-app opnieuw maken in een nieuwe resourcegroep, abonnement of regio.
  • Wanneer u Container Apps gebruikt, hebt u geen directe toegang tot de Kubernetes-API's op lager niveau.
  • De containerapp extensie conflicteert met de appservice-kube extensie in Azure CLI. Als u eerder apps hebt gepubliceerd naar Azure Arc, voert u deze uit az extension list en controleert u of deze appservice-kube niet is geïnstalleerd. Als dat het is, kunt u het verwijderen door uit te voeren az extension remove -n appservice-kube.
  • De Functions Dapr-extensie is ook in preview, met hulp in de opslagplaats.

Volgende stappen