Azure Functions in Kubernetes met KEDA
De Azure Functions-runtime biedt flexibiliteit bij het hosten van waar en hoe u wilt. KEDA (Op Kubernetes gebaseerde gebeurtenisgestuurde automatische schaalaanpassing) paren naadloos met de Azure Functions-runtime en hulpprogramma's om gebeurtenisgestuurde schaal in Kubernetes te bieden.
Belangrijk
Het uitvoeren van uw in containers geplaatste functie-apps in Kubernetes, hetzij met behulp van KEDA of door directe implementatie, is een opensource-inspanning die u gratis kunt gebruiken. Ondersteuning voor best effort wordt geleverd door inzenders en vanuit de community door gebruik te maken van GitHub-problemen in de Azure Functions-opslagplaats. Gebruik deze problemen om fouten te melden en functieaanvragen te genereren.
Voor volledig ondersteunde Kubernetes-implementaties kunt u in plaats daarvan Azure Container Apps overwegen die als host fungeren voor Azure Functions.
Hoe kubernetes-functies werken
De Azure Functions-service bestaat uit twee belangrijke onderdelen: een runtime en een schaalcontroller. De Functions-runtime wordt uitgevoerd en voert uw code uit. De runtime bevat logica voor het activeren, registreren en beheren van functie-uitvoeringen. De Azure Functions-runtime kan overal worden uitgevoerd. Het andere onderdeel is een schaalcontroller. De schaalcontroller bewaakt de frequentie van gebeurtenissen die gericht zijn op uw functie en schaalt proactief het aantal exemplaren waarop uw app wordt uitgevoerd. Zie Azure Functions schalen en hosten voor meer informatie.
Kubernetes-functies biedt de Functions-runtime in een Docker-container met gebeurtenisgestuurd schalen via KEDA. KEDA kan inschalen naar nul exemplaren (wanneer er geen gebeurtenissen plaatsvinden) en naar n exemplaren. Dit doet u door aangepaste metrische gegevens weer te geven voor 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. Deze functies kunnen ook worden geïmplementeerd met behulp van de functie virtuele AKS-knooppunten (Azure Kubernetes Services) voor een serverloze infrastructuur.
KEDA en functies beheren in Kubernetes
Als u Functions wilt uitvoeren op uw Kubernetes-cluster, moet u het KEDA-onderdeel installeren. U kunt dit onderdeel op een van de volgende manieren installeren:
Azure Functions Core Tools: met behulp van de
func kubernetes install
opdracht.Helm: er zijn verschillende manieren om KEDA te installeren in een Kubernetes-cluster, waaronder Helm. Implementatieopties worden beschreven op de KEDA-site.
Een functie-app implementeren in Kubernetes
U kunt elke functie-app implementeren in een Kubernetes-cluster waarop KEDA wordt uitgevoerd. Omdat uw functies worden uitgevoerd in een Docker-container, heeft uw project een Dockerfile nodig. U kunt een Dockerfile maken met behulp van de --docker
optie bij het aanroepen func init
om het project te maken. Als u bent vergeten uw Dockerfile te maken, kunt u altijd opnieuw aanroepen func init
vanuit de hoofdmap van uw codeproject.
(Optioneel) Als u uw Dockerfile wilt maken, gebruikt u de
func init
opdracht met de--docker-only
optie:func init --docker-only
Zie de
func init
naslaginformatie voor meer informatie over het genereren van Dockerfiles.Gebruik de
func kubernetes deploy
opdracht om uw installatiekopieën te bouwen en uw containerfunctie-app te implementeren in Kubernetes:func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>
Vervang in dit voorbeeld
<name-of-function-deployment>
door de naam van de functie-app. Met de implementatieopdracht worden deze taken uitgevoerd:- Het Dockerfile dat u eerder hebt gemaakt, wordt gebruikt om een lokale installatiekopieën te bouwen voor uw functie-app in containers.
- De lokale installatiekopieën worden gelabeld en gepusht naar het containerregister waarin de gebruiker is aangemeld.
- Er wordt een manifest gemaakt en toegepast op het cluster waarmee een Kubernetes-resource
Deployment
, eenScaledObject
resource enSecrets
, die omgevingsvariabelen bevat die zijn geïmporteerd uit uwlocal.settings.json
bestand.
Een functie-app implementeren vanuit een privéregister
De vorige implementatiestappen werken ook voor privéregisters. Als u de containerinstallatiekopie uit een privéregister ophaalt, neemt u de --pull-secret
vlag op die verwijst naar het Kubernetes-geheim met de referenties voor het privéregister wanneer u deze uitvoert func kubernetes deploy
.
Een functie-app verwijderen uit Kubernetes
Nadat u een functie hebt geïmplementeerd, kunt u een functie verwijderen door de bijbehorende Deployment
, ScaledObject
een Secrets
gemaakte.
kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>
KEDA verwijderen uit Kubernetes
U kunt KEDA op een van de volgende manieren verwijderen uit uw cluster:
Azure Functions Core Tools: met behulp van de
func kubernetes remove
opdracht.Helm: bekijk de stappen voor verwijderen op de KEDA-site.
Ondersteunde triggers in KEDA
KEDA biedt ondersteuning voor de volgende Azure-functietriggers:
HTTP-triggerondersteuning
U kunt Azure Functions gebruiken die HTTP-triggers beschikbaar maken, maar KEDA beheert ze niet rechtstreeks. U kunt de KEDA prometheus-trigger gebruiken om HTTP Azure Functions van één naar exemplaren te n
schalen.
Volgende stappen
Voor meer informatie raadpleegt u de volgende bronnen: