Distribuera program till Azure Red Hat OpenShift med OpenShift Serverless
I den här artikeln distribuerar du ett program till ett Azure Red Hat OpenShift-kluster med OpenShift Serverless. OpenShift Serverless hjälper utvecklare att distribuera och köra program som ska skalas upp eller skalas till noll på begäran. Detta eliminerar förbrukningen av resurser när de inte används.
Programkoden kan paketeras i en container tillsammans med lämpliga körningar. Serverlösa funktioner startar programcontainrarna när de utlöses av en händelse. Du kan utlösa program via olika händelser: från dina egna program, från flera molntjänstleverantörer, SaaS-system (programvara som en tjänst) och andra tjänster.
Du kan använda inbyggda OpenShift-gränssnittsfunktioner för att hantera alla aspekter av serverlös containerdistribution. Utvecklare kan visuellt identifiera vilka händelser som driver lanseringen av containerbaserade program. Det finns också flera sätt att ändra händelseparametrar. OpenShift Serverless-program kan integreras med andra OpenShift-tjänster, till exempel OpenShift Pipelines, Service Mesh och Monitoring. Detta ger en fullständig serverlös programutveckling och distributionsupplevelse.
Innan du börjar
Skapa ett kluster
Följ självstudien för att skapa ett Azure Red Hat OpenShift-kluster. Om du väljer att installera och använda kommandoradsgränssnittet (CLI) lokalt kräver den här självstudien att du använder Azure CLI version 2.6.0 eller senare. Kör az --version
för att hitta din nuvarande version. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
Anslut till klustret
För att hantera ett Azure Red Hat OpenShift-kluster måste du använda oc, OpenShift-kommandoradsklienten.
Kommentar
Vi rekommenderar att du installerar OpenShift-kommandoraden i Azure Cloud Shell och att du använder den för alla kommandoradsåtgärder i den här artikeln. Öppna gränssnittet från shell.azure.com eller välj länken:
Följ självstudien för att installera CLI, hämta dina klusterautentiseringsuppgifter och ansluta till klustret med webbkonsolen och OpenShift CLI.
När du har loggat in bör du se ett meddelande om att du använder default
projektet.
Login successful.
You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
Installera knative-kommandoradsgränssnittet (kn)
Ladda ned den senaste versionen av kommandoradsgränssnittet (CLI) som är lämpligt för din dator, från https://github.com/knative/client/releases/
Om du kör kommandon i Azure Cloud Shell laddar du ned det senaste Knative CLI för Linux.
cd ~
wget https://github.com/knative/client/releases/download/v0.22.0/kn-linux-amd64
mkdir knative
chmod +x kn-linux-amd64
mv kn-linux-amd64 knative/kn
echo 'export PATH=$PATH:~/knative' >> ~/.bashrc && source ~/.bashrc
Öppna OpenShift-webbkonsolen
Hitta url:en för klusterwebbkonsolen genom att köra följande skript:
az aro show \
--name <cluster name> \
--resource-group <resource group> \
--query "consoleProfile.url" -o tsv
Du bör få en URL som liknar följande.
https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/
Öppna en webbläsare och öppna konsolens URL. Logga in med kubeadmin
autentiseringsuppgifter.
Installera OpenShift Serverless-operatorn
När du är inloggad i OpenShift-webbkonsolen bekräftar du att du är i administratörsvyn . Öppna operatorhubben och välj operatorn OpenShift Serverless.
Öppna sedan installationssidan för operatorn genom att välja Installera.
Välj lämplig uppdateringskanal för Azure Red Hat OpenShifts klusterversion och installera operatorn i openshift-serverless
namnområdet. Rulla nedåt och välj Installera.
Inom några minuter visar statussidan att operatorn är installerad och redo att användas. Välj knappen Visa operator för att fortsätta.
Installera Knative Serving
Alternativet att köra en container på ett serverlöst sätt på OpenShift Serverless är möjligt med uppströms Knative. Knative utökar Kubernetes för att tillhandahålla en uppsättning komponenter som distribuerar, kör och hanterar moderna program via sin serverlösa metodik.
Skapa en instans av Knative Serving
I det övre vänstra hörnet i fönstret går du till listan Projekt och väljer knative-server
. I fönstret Tillhandahållna API:er väljer du Skapa instans i kortet Knative Serving .
På sidan Skapa knative-servering behåller du alla standardvärden. Rulla nedåt och välj knappen Skapa .
OpenShift Serverless installeras när kolumnen Status visar Klar. Nu är du redo att skapa ett OpenShift Serverless-projekt.
Skapa ett serverlöst projekt
Om du vill skapa ett nytt projekt med namnet demoserverless
kör du följande kommando:
oc new-project demoserverless
Resultatet bör likna följande:
Now using project "demoserverless" on server "https://api.wzy5hg7x.eastus.aroapp.io:6443".
You can add applications to this project with the 'new-app' command. For example, build a new example application in Python with the following:
oc new-app django-psql-example
Or use kubectl to deploy a simple Kubernetes application:
kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
Nu ska vi växla från administratörsvyn till utvecklarvyn. Gå till listan över projekt på den vänstra menyn och välj demoserverless
. Nu är du på sidan Topologi för projektet.
Distribuera med webbkonsolen
På sidan Topologi väljer du Från Git. På sidan Importera från Git använder du https://github.com/sclorg/django-ex.git
som Git-lagringsplats-URL. Ett exempelwebbprogram implementeras med programmeringsspråket Python.
Kommentar
OpenShift identifierar att det här är ett Python-projekt och väljer lämplig builder-avbildning.
Bläddra till Resurser och bekräfta att Knative Service har valts som den resurstyp som ska genereras. Detta skapar en Knative-tjänst, en typ av distribution som möjliggör OpenShift Serverless-skalning till noll när den är inaktiv.
Längst ned på sidan väljer du Skapa. Detta skapar resurser för att hantera bygget och distributionen av programmet. Sedan omdirigeras du till topologiöversikten för projektet.
Topologiöversikten ger en visuell representation av det program som du har distribuerat. Du kan se den övergripande programstrukturen.
Vänta tills bygget har slutförts. Det kan ta några minuter. När bygget är klart visas en grön bockmarkering i det nedre vänstra hörnet av tjänsten.
Se programskalan
Längst upp i topologivyn går du till listan Visningsalternativ och väljer Antal poddar. Vänta tills poddantalet skalas ned till noll poddar. Det kan ta några minuter att skala ned.
I det övre högra hörnet på panelen Knative Service väljer du ikonen Öppna URL . Programmet öppnas på en ny webbläsarflik. Stäng fliken och återgå till topologivyn. Där kan du se att ditt program har skalats upp till en podd för att hantera din begäran. Efter några minuter skalar programmet ned till noll poddar.
Tvinga fram en ny revision och ställa in trafikdistribution
Knative-tjänster tillåter trafikmappning, vilket innebär att revisioner av en tjänst kan mappas till en allokerad del av trafiken. Med varje tjänstkonfigurationsuppdatering skapas en ny revision. Tjänstvägen pekar sedan all trafik till den senaste klara revisionen som standard. Du kan ändra det här beteendet genom att definiera vilken revision som hämtar delar av trafiken. Trafikmappning ger också möjlighet att skapa unika URL:er för enskilda revisioner.
I topologin som skapats väljer du den revision som visas i tjänsten för att visa dess information. Märkena under poddringen och högst upp på detaljpanelen ska vara (REV)
. I sidopanelen går du till fliken Resurser och rullar ned och väljer den konfiguration som är associerad med din tjänst.
Tvinga fram en konfigurationsuppdatering genom att växla till fliken YAML och rulla ned för att redigera värdet timeoutSeconds
för . Ändra värdet till 301
. Välj Spara. I ett verkligt scenario kan konfigurationsuppdateringar också utlösas genom att uppdatera taggen containeravbildning.
Gå tillbaka till topologivyn . Du ser att en ny revision har distribuerats. Välj den tjänst som slutar med märket (KSVC)
och välj knappen Ange trafikdistribution . Du bör nu kunna dela upp trafiken mellan revisionerna i tjänsten.
Topologivyn visar nu hur trafiken fördelas mellan revisionerna.
Använda knative-kommandoradsgränssnittet (kn)
I tidigare steg har du använt OpenShift-webbkonsolen för att skapa och distribuera ett program till OpenShift Serverless. Eftersom OpenShift Serverless kör Knative under kan du också använda knative-kommandoradsgränssnittet (kn) för att skapa Knative-tjänster.
Kommentar
Om du inte redan har installerat kn
CLI ska du följa stegen i avsnittet förutsättningar i den här artikeln. Kontrollera också att du har loggat in med kommandoradsgränssnittet oc
OpenShift .
Vi ska använda en containeravbildning som redan är byggd på quay.io/rhdevelopers/knative-tutorial-greeter
.
Distribuera en tjänst
Kör följande kommando för att distribuera tjänsten:
kn service create greeter \
--image quay.io/rhdevelopers/knative-tutorial-greeter:quarkus \
--namespace demoserverless \
--revision-name greeter-v1
Du ser utdata som liknar följande.
Creating service 'greeter' in namespace 'demoserverless':
0.044s The Route is still working to reflect the latest desired specification.
0.083s ...
0.114s Configuration "greeter" is waiting for a Revision to become ready.
10.420s ...
10.489s Ingress has not yet been reconciled.
10.582s Waiting for load balancer to be ready
10.763s Ready to serve.
Service 'greeter' created to latest revision 'greeter-v1' is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Du kan hämta en lista över vägar i projektet genom att köra:
kn route list
Du får tillbaka en lista över vägar i namnområdet. Öppna URL:en i en webbläsare för att visa den distribuerade tjänsten.
NAME URL READY
greeter http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io True
Distribuera en ny version av tjänsten
Distribuera en ny version av programmet genom att köra följande kommando och genom att skicka avbildningstaggen :latest
och en miljövariabel MESSAGE_PREFIX
:
kn service update greeter \
--image quay.io/rhdevelopers/knative-tutorial-greeter:latest \
--namespace demoserverless \
--env MESSAGE_PREFIX=GreeterV2 \
--revision-name greeter-v2
Du får en bekräftelse på att en ny revision greeter-v2
har distribuerats.
Updating Service 'greeter' in namespace 'demoserverless':
5.029s Traffic is not yet migrated to the latest revision.
5.086s Ingress has not yet been reconciled.
5.190s Waiting for load balancer to be ready
5.332s Ready to serve.
Service 'greeter' updated to latest revision 'greeter-v2' is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Om du vill visa en lista över alla revisioner och deras trafikdistributioner kör du följande kommando:
kn revision list
Du får en lista som liknar följande utdata. Observera att den nya revisionen i det här fallet tar emot 100 % av trafiken.
NAME SERVICE TRAFFIC TAGS GENERATION AGE CONDITIONS READY REASON
greeter-v2 greeter 100% 2 90s 3 OK / 4 True
greeter-v1 greeter 1 5m32s 3 OK / 4 True
Distribution av blå/grön och kanariefågel
När en ny revision distribueras tilldelas den som standard 100 % av trafiken. Anta att du vill implementera en blå/grön distributionsstrategi där du snabbt kan återställa till den äldre versionen av programmet. Knative gör detta enkelt.
Du kan uppdatera tjänsten för att skapa tre trafiktaggar, samtidigt som du tilldelar 100 % av trafiken till dem.
- current: pekar på den distribuerade versionen
- prev: pekar på den tidigare versionen
- senaste: pekar alltid på den senaste versionen
kn service update greeter \
--tag greeter-v2=current \
--tag greeter-v1=prev \
--tag @latest=latest
Du får en bekräftelse som liknar följande.
Updating Service 'greeter' in namespace 'demoserverless':
0.037s Ingress has not yet been reconciled.
0.121s Waiting for load balancer to be ready
0.287s Ready to serve.
Service 'greeter' with latest revision 'greeter-v2' (unchanged) is available at URL:
http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Visa en lista över vägar med hjälp av kommandot nedan:
kn route describe greeter
Du får utdata som visar URL:erna för var och en av taggarna, tillsammans med deras trafikdistribution.
Name: greeter
Namespace: demoserverless
Age: 10m
URL: http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Service: greeter
Traffic Targets:
100% @latest (greeter-v2) #latest
URL: http://latest-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
0% greeter-v1 #prev
URL: http://prev-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
0% greeter-v2 #current
URL: http://current-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
[..]
Anta att du snabbt vill återställa till den tidigare versionen. Du kan uppdatera trafikdistributionen så att 100 % av trafiken skickas till föregående tagg:
kn service update greeter --traffic current=0 --traffic prev=100
Visa en lista över vägarna och kontrollera igen med hjälp av följande kommando:
kn route describe greeter
Du ser utdata som visar att 100 % av trafikfördelningen går till den tidigare versionen.
Name: greeter
Namespace: demoserverless
Age: 19m
URL: http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
Service: greeter
Traffic Targets:
0% @latest (greeter-v2) #latest
URL: http://latest-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
100% greeter-v1 #prev
URL: http://prev-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
0% greeter-v2 #current
URL: http://current-greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
[..]
Leka med trafikdistributionen medan du uppdaterar huvudvägen i webbläsaren (http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
i det här fallet).
Rensa resurser
När du är klar med programmet kan du köra följande kommando för att ta bort projektet:
oc delete project demoserverless
Du kan också ta bort klustret genom att följa anvisningarna i Självstudie: Ta bort ett Azure Red Hat OpenShift 4-kluster.
Nästa steg
I den här guiden har du lärt dig att:
- Installera OpenShift Serverless-operatorn och Knative Serving
- Distribuera ett serverlöst projekt med hjälp av webbkonsolen
- Distribuera ett serverlöst projekt med knative CLI (kn)
- Konfigurera blå/gröna distributioner och kanariedistributioner med knative CLI (kn)
Läs mer om hur du skapar och distribuerar serverlösa, händelsedrivna program i Azure Red Hat OpenShift med OpenShift Serverless, följ dokumentationen Komma igång med OpenShift Serverless och dokumentationen Skapa och hantera serverlösa program .