Share via


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 kunt u uw functies uitvoeren in een volledig beheerde, kubernetes-omgeving met ingebouwde ondersteuning voor opensource-bewaking, mTLS, Dapr en Kubernetes Event-driven Autoscaling (KEDA).

U kunt uw functiecode schrijven in elke taalstack die wordt ondersteund door Functions. U kunt dezelfde Functions-triggers en -bindingen gebruiken met gebeurtenisgestuurd schalen. U kunt ook bestaande Functions-clienthulpprogramma's en Azure Portal gebruiken om containers te maken, functie-app-containers te implementeren in Container Apps en continue implementatie te configureren.

Container Apps-integratie betekent ook dat netwerk- en waarneembaarheidsconfiguraties, die zijn gedefinieerd op het niveau van de Container App-omgeving, op uw functie-app van toepassing zijn op alle microservices die worden uitgevoerd in een Container Apps-omgeving. 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 functies te bewaken en uw functie-app heeft toegang tot dezelfde virtuele netwerkresources die door de omgeving worden geleverd.

Zie Ondersteuning voor Linux-containers in Azure Functions voor een algemeen overzicht van opties voor containerhosting voor Azure Functions.

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 code worden uitgevoerd op een functie-app 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 codeproject 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:

Integratie van virtueel netwerk

Wanneer u uw functie-apps host in een Container Apps-omgeving, kunnen uw functies profiteren van zowel intern als extern toegankelijke virtuele netwerken. Zie Netwerken in de Azure Container Apps-omgeving voor meer informatie over omgevingsnetwerken.

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 Functions in Container Apps voert uw resources voor de functie-app in containers uit in speciaal beheerde resourcegroepen. Deze beheerde resourcegroepen helpen de consistentie van uw apps te beschermen door onbedoelde of niet-geautoriseerde wijzigingen of verwijdering van resources in de beheerde groep te voorkomen, zelfs door service-principals.

Er wordt een beheerde resourcegroep voor u gemaakt wanneer u voor het eerst 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. Alle andere functie-apps die u in dezelfde omgeving maakt, maken gebruik van 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 een Container Apps-omgeving:
    • HTTP
    • Azure Queue Storage
    • Azure Service Bus
    • Azure Event Hubs
    • Kafka
    • Timer
  • Deze beperkingen zijn van toepassing op Kafka-triggers:
    • De protocolwaarde van ssl wordt niet ondersteund wanneer deze wordt gehost in Container Apps. Gebruik een andere protocolwaarde.
    • Voor een Kafka-trigger om dynamisch te schalen wanneer deze is verbonden met Event Hubs, moet de username eigenschap worden omgezet in een toepassingsinstelling die de werkelijke gebruikersnaamwaarde bevat. Wanneer de standaardwaarde $ConnectionString wordt gebruikt, kan de Kafka-trigger de schaal van de app niet dynamisch schalen.
  • Voor de ingebouwde Container Apps-beleidsdefinities zijn momenteel alleen beleidsregels op omgevingsniveau van toepassing op Azure Functions-containers.
  • U kunt beheerde identiteiten gebruiken voor trigger- en bindingsverbindingen en voor implementaties vanuit een Azure Container Registry.
  • Wanneer uw functie-app en op Azure Container Registry gebaseerde implementatie beheerde identiteitsverbindingen gebruiken, kunt u de instellingen voor CPU- en geheugentoewijzing in de portal niet wijzigen. U moet in plaats daarvan de Azure CLI gebruiken.
  • 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.

Volgende stappen