Doorlopende implementatie voor Azure Functions

Azure Functions stelt je in staat om continu wijzigingen uit te rollen vanuit een source control-repository naar een functie-app. In deze workflow triggert een code-update het bouwen, verpakken en uitrollen van je project naar Azure. De ondersteunde implementatieproviders en releasestrategieën zijn afhankelijk van het hostingplan.

Hostingabonnement Aanbevolen CI/CD-aanbieder Inzet- en vrijgaverichtlijnen
Flex Consumption GitHub Actions of Azure-pipelines Gebruikt pakketimplementatie. Implementatieslots worden niet ondersteund. Gebruik CI/CD release controls en overweeg rolling updates voor zero-downtime deployments.
Elastic Premium, Dedicated en Verbruik GitHub Actions of Azure-pipelines Gebruikt ZIP-deployment. Wanneer je app dit ondersteunt, implementeer dan naar een faseringsslot, controleer de update en wissel het slot vervolgens naar productie.
Azure Container Apps - een dienst van Microsoft waarmee je containers kunt uitvoeren en beheren in de cloud. Workflow voor containerbouw en -uitrol Implementeert een containerimage. Zie het overzicht van Azure Functions in Azure Container Apps voor meer informatie.

Selecteer je hostingplan bovenaan dit artikel om de richtlijnen voor continue implementatie te bekijken die van toepassing zijn op jouw functieapp.

Voor hostingplannen die deployment slots ondersteunen, configureer continuous deployment voor een stagingslot in plaats van de production slot. Controleer updates in de stagingomgeving en wissel vervolgens het staging-slot naar productie. Als je direct aansluit op een productieslot, zorg er dan voor dat alleen code van productiekwaliteit de geïntegreerde tak bereikt.

Voor Flex Consumption configureer je GitHub Actions of Azure-pipelines. Omdat Flex Consumption geen deployment slots ondersteunt, bewaar je deploymentgeschiedenis in source control en je CI/CD-systeem zodat je kunt herstellen van een slechte deployment.

Voor Functions in Azure Container Apps bouwt en implementeert u een container-installatiekopie. Er zijn geen uitzendplaatsen beschikbaar. Gebruik revisies en overweeg een blauw-groene implementatiestrategie voor releases zonder downtime.

De stappen in het Deployment Center in dit artikel zijn van toepassing op functie-apps die integratie van App Service source control ondersteunen. Op het Consumption-plan wordt deze integratie alleen ondersteund op Windows. Je kunt ook source control-integratie configureren door gebruik te maken van Azure CLI.

Azure Functions ondersteunt deze bronnen voor continue implementatie in uw app:

Onderhoud uw projectcode in Azure-opslagplaatsen, een van de services in Azure DevOps. Ondersteunt zowel Git als Team Foundation Version Control. Wordt gebruikt met de buildprovider van Azure-pipelines. Voor meer informatie, zie Wat is Azure-opslagplaatsen?

Je kunt je functie-app ook verbinden met een externe Git-repository, maar deze optie vereist handmatige synchronisatie. Zie Implementatietechnologieën in Azure Functions voor meer informatie over implementatieopties.

Notitie

Opties voor continue implementatie die in dit artikel worden behandeld, zijn specifiek voor implementaties met alleen code. Voor Azure Functions on Azure Container Apps, zie Azure Functions on Azure Container Apps overview. Voor een aangepaste container die door Azure Functions wordt gehost in een Premium- of Dedicated plan, zie de sectie Continue implementatie van containers naar Azure inschakelen in Work with containers and Azure Functions.

Flex Consumption ondersteunt continue implementatie vanuit Azure-opslagplaatsen via Azure-pipelines en vanuit GitHub via GitHub Actions. App Service source control-integratie, inclusief Bitbucket- en Local Git-implementaties, wordt niet ondersteund.

Voor Functions op Azure Container Apps onderhoud je je bron in je voorkeursrepository en gebruik een CI/CD-workflow om een containerimage te bouwen en pushen. Werk daarna je functie-app bij om de nieuwe image te gebruiken. Raadpleeg Implementatie en configuratie voor Functions op Azure Container Apps voor meer informatie.

Vereisten

De implementatie-eenheid voor functies in Azure is de functie-app. Voor een geslaagde continue implementatie moet de mapstructuur van uw project compatibel zijn met de basismapstructuur die Door Azure Functions wordt verwacht. Wanneer je je codeproject aanmaakt met Azure Functions Core Tools, Visual Studio Code of Visual Studio, maken de Azure Functions-sjablonen codeprojecten met de juiste mapstructuur. Je deployt alle functies tegelijk en in hetzelfde pakket in een functie-app.

Nadat je continue implementatie hebt ingeschakeld, wordt de toegang tot functiecode in het Azure-portaal geconfigureerd als alleen-lezen omdat de bron van waarheid elders ligt.

Notitie

Het Implementatiecentrum biedt geen ondersteuning voor het inschakelen van continue implementatie voor een functie-app met binnenkomende netwerkbeperkingen. Configureer in plaats daarvan de workflow van de build provider direct in GitHub of Azure-pipelines. De runner of agent moet het deployment-eindpunt van de app kunnen bereiken onder de geconfigureerde toegangsbeperkingen. Wanneer het eindpunt privé is, heeft de runner of agent ook een privé-DNS-resolutie nodig. Voor Azure-pipelines gebruik je een zelf-gehoste agent op een verbonden netwerk of een beheerde DevOps-agentpool met netwerk. Voor GitHub Actions gebruik je een zelf-gehoste runner op een verbonden netwerk of een GitHub-gehoste runner met Azure privénetwerk.

Wanneer je functie-app inkomende netwerkbeperkingen heeft, moet de workflow runner of agent het deploy-endpoint van de app kunnen bereiken onder de geconfigureerde toegangsbeperkingen. Wanneer het eindpunt privé is, heeft de runner of agent ook een privé-DNS-resolutie nodig. Voor Azure-pipelines gebruik je een zelf-gehoste agent op een verbonden netwerk of een beheerde DevOps-agentpool met netwerk. Voor GitHub Actions gebruik je een zelf-gehoste runner op een verbonden netwerk of een GitHub-gehoste runner met Azure privénetwerk.

Je CI/CD-workflow moet een geldig Azure Functions containerimage bouwen, de image naar een register pushen waar je container-app toegang toe heeft, en de functie-app updaten om een revisie van die image te maken. Voor meer informatie, zie Create a function app on Azure Container Apps.

Een buildprovider selecteren

Het bouwen van uw codeproject maakt deel uit van het implementatieproces. Het specifieke buildproces is afhankelijk van uw specifieke taalstack, besturingssysteem en hostingabonnement. Je kunt lokaal of op afstand bouwen, afhankelijk van je hosting. Zie Remote build voor meer informatie.

Belangrijk

Voor verhoogde beveiliging gebruik je een buildprovider die beheerde identiteiten ondersteunt, zoals Azure-pipelines en GitHub Actions. De App Service build-service vereist dat je basisauthenticatie inschakelt en tekstgebaseerde inloggegevens gebruikt.

Azure Functions ondersteunt deze buildproviders:

Azure-pipelines is een van de services in Azure DevOps en de standaardbuildprovider voor Azure-opslagplaatsprojecten. U kunt ook Azure-pipelines gebruiken om projecten te bouwen vanuit GitHub. In Azure-pipelines is er een AzureFunctionApp taak die speciaal is ontworpen voor implementatie in Azure Functions. Deze taak biedt u controle over hoe het project wordt gebouwd, verpakt en geïmplementeerd. Azure-pipelines ondersteunt beheerde identiteiten.

Houd rekening met de sterke punten en beperkingen van deze providers wanneer u integratie van broncodebeheer inschakelt. Mogelijk moet u het brontype van de opslagplaats wijzigen om te profiteren van een specifieke provider.

Gebruik Azure-pipelines of GitHub Actions om je project te bouwen en uit te rollen. Deze providers ondersteunen Microsoft Entra-identiteiten en gebruiken het implementatieproces van het Flex Consumption-pakket.

De App Service build-service is niet van toepassing op Flex Consumption.

Gebruik een container build-provider die je Azure Functions-image kan bouwen, push het naar een containerregister en update je Function-app om een revisie te maken vanuit de nieuwe image. Voor een end-to-end GitHub Actions-workflow, zie Deploy to Azure Container Apps with GitHub Actions.

Continue implementatie inschakelen

Het Azure-portaal biedt een Deployment Center voor je functie-apps, wat het configureren van continue implementatie eenvoudiger maakt. De specifieke manier waarop u continue implementatie configureert, is afhankelijk van het type opslagplaats voor broncodebeheer waarin uw code zich bevindt en de buildprovider die u kiest.

Blader in Azure Portal naar de pagina van uw functie-app en selecteer Implementatiecentrum onder Implementatie in het linkerdeelvenster.

Maak een screenshot van het Deployment Center van de functieapp in het Azure-portaal waar je je bronrepository kiest.

Selecteer het type bronopslagplaats waarin uw projectcode wordt onderhouden op basis van een van de volgende ondersteunde opties:

Definieer deployments uit Azure-opslagplaatsen die Azure-pipelines gebruiken in het Azure DevOps-portaal. Definieer deze implementaties niet vanuit je functie-app. Voor een stapsgewijze gids voor het creëren van een op Azure-pipelines gebaseerde deployment vanuit Azure-opslagplaatsen, zie Continuous delivery with Azure-pipelines.

Na de deployment deployt de service alle code van de opgegeven bron naar je app. Op dat moment activeren wijzigingen in de implementatiebron een implementatie van deze wijzigingen in uw functie-app in Azure.

Configureer continue deployment in je repository door een van deze providers te gebruiken:

Elke succesvolle workflowuitvoering deployt een nieuw applicatiepakket. Integratie van versiebeheer in Implementatiecentrum is niet beschikbaar voor Flex Consumption.

Configureer je CI/CD-workflow om de containerimage te bouwen en te pushen, en deploy de image vervolgens naar je functie-app. Elke image-update maakt een Container Apps-revisie. Voor meer informatie, zie Deploy to Azure Container Apps with GitHub Actions.

Continue implementatie inschakelen tijdens het maken van apps

Wanneer je een functie-app maakt in het Azure-portaal, kun je continue uitrol configureren vanaf GitHub met behulp van GitHub Actions. Configureer GitHub Actions op het tabblad Deployment van de pagina Create Function App.

Om een andere deployment source of build provider te gebruiken voor continue integratie, maak eerst je functie-app. Ga daarna terug naar het portaal en stel continue integratie in in het Deployment Center.

Voor Azure-pipelines maak je eerst je functieapp aan en configureer je daarna de pipeline in Azure DevOps.

Maak de functie-app aan vanuit een containerimage en configureer vervolgens je CI/CD-workflow om bijgewerkte images te publiceren en revisies te maken. Voor meer informatie, zie Create a function app on Azure Container Apps.

Basisverificatie inschakelen voor implementaties

Deze sectie geldt alleen voor deployment-methoden die gebruikmaken van het App Service-deployment-endpoint.

In sommige gevallen wordt je functie-app aangemaakt waarbij toegang via basisverificatie tot het deployment-eindpunt is uitgeschakeld. Deze voorwaarde blokkeert publiceren via alle methoden die geen Microsoft Entra-identiteiten kunnen gebruiken om toegang te krijgen tot het implementatie-endpoint. De publicatie-effecten van het uitschakelen van basisauthenticatie voor het deployment-endpoint worden beschreven in Deploy zonder basisauthenticatie.

Belangrijk

Wanneer u basisverificatie gebruikt, worden inloggegevens als platte tekst verzonden. Om deze inloggegevens te beschermen, mag je alleen toegang krijgen tot het deployment-eindpunt via een versleutelde verbinding (HTTPS) wanneer je basisauthenticatie gebruikt. Zie Secure deployment voor meer informatie.

Om basisauthenticatie voor het deployment-endpoint mogelijk te maken:

  1. Ga in Azure Portal naar uw functie-app.

  2. Selecteer inhet linkermenu van de app>>algemene instellingen.

  3. Stel SCM Basic Auth Publishing Credentials in op Aan en selecteer Opslaan.

SCM basisauthenticatie is niet van toepassing op Flex Consumption-pakketimplementaties. Standaard gebruikt Azure-pipelines een Microsoft Entra-bearertoken via de vereiste Azure-serviceverbinding; federatie van workloadidentiteiten wordt aanbevolen. Voor GitHub Actions gebruik je de aanbevolen OpenID Connect (OIDC) authenticatie. Deze methoden vermijden het publiceren van SCM-credentials en zijn veiliger dan basisauthenticatie.

Deze basisauthenticatie-instelling geldt niet voor Functions in Azure Container Apps. Configureer authenticatie tussen je CI/CD-provider, containerregister en container-app.

Volgende stappen