Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Aanbeveling
Deze inhoud is een fragment uit het eBook, Cloud Native .NET Applications for Azure ontwerpen, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.
Cloudtoepassingen implementeren doorgaans services die gebruikmaken van containers en indeling. Er zijn vaak mogelijkheden om enkele van de services van de toepassing beschikbaar te maken als Azure Functions. Met een cloudeigen app die is geïmplementeerd in Kubernetes, is het echter handig om Azure Functions binnen dezelfde toolset te gebruiken. Gelukkig kunt u Azure Functions in Docker-containers verpakken en implementeren met dezelfde processen en hulpprogramma's als de rest van uw Kubernetes-app.
Wanneer is het zinvol om containers met serverloos te gebruiken?
Uw Azure-functie heeft geen kennis van het platform waarop deze is geïmplementeerd. Voor sommige scenario's hebt u mogelijk specifieke vereisten en moet u de omgeving aanpassen waarop uw functiecode wordt uitgevoerd. U hebt een aangepaste installatiekopieën nodig die ondersteuning biedt voor afhankelijkheden of een configuratie die niet wordt ondersteund door de standaardinstallatiekopieën. In deze gevallen is het zinvol om uw functie te implementeren in een aangepaste Docker-container.
Wanneer moet u het gebruik van containers met Azure Functions vermijden?
Als u verbruiksfacturering wilt gebruiken, kunt u uw functie niet uitvoeren in een container. Wat meer is, als u uw functie implementeert in een Kubernetes-cluster, profiteert u niet langer van de ingebouwde schaalaanpassing van Azure Functions. U moet de schaalfuncties van Kubernetes gebruiken, zoals eerder in dit hoofdstuk is beschreven.
Serverloze en Docker-containers combineren
Als u een Azure-functie in een Docker-container wilt verpakken, installeert u de Azure Functions Core Tools en voert u vervolgens de volgende opdracht uit:
func init ProjectName --worker-runtime dotnet --docker
Wanneer het project wordt gemaakt, bevat het een Dockerfile en de werkrolruntime die is geconfigureerd voor dotnet. Nu kunt u uw functie lokaal maken en testen. Bouw en voer het uit met behulp van de docker build en docker run opdrachten. Zie de zelfstudie Een functie maken in Linux met behulp van een aangepaste installatiekopieën voor gedetailleerde stappen om Aan de slag te gaan met het bouwen van Azure Functions met Docker-ondersteuning.
Serverloze en Kubernetes combineren met KEDA
In dit hoofdstuk hebt u gezien dat het Azure Functions-platform automatisch wordt uitgeschaald om aan de vraag te voldoen. Wanneer u containerfuncties implementeert in AKS, verliest u echter de ingebouwde schaalfunctionaliteit. Voor de redding komt Op Kubernetes gebaseerde Event Driven (KEDA). Het maakt fijnmazige automatische schaalaanpassing mogelijk voor event-driven Kubernetes workloads, inclusief containerfuncties.
KEDA biedt gebeurtenisgestuurde schaalfunctionaliteit voor de Runtime van Functions in een Docker-container. KEDA kan schalen van nul exemplaren (wanneer er geen gebeurtenissen plaatsvinden) naar n instances, op basis van belasting. Hiermee kunt u automatisch schalen door aangepaste metrische gegevens weer te geven aan de Kubernetes-automatische schaalaanpassing (horizontale automatische schaalaanpassing van pods). Het gebruik van Functions-containers met KEDA maakt het mogelijk om serverloze functiemogelijkheden in een Kubernetes-cluster te repliceren.
Het is de moeite waard om te weten dat het KEDA-project nu wordt beheerd door de Cloud Native Computing Foundation (CNCF).