Delen via


Toepassingen implementeren in Azure Red Hat OpenShift met behulp van Serverloze OpenShift

In dit artikel implementeert u een toepassing in een Azure Red Hat OpenShift-cluster met OpenShift Serverless. OpenShift Serverless helpt ontwikkelaars bij het implementeren en uitvoeren van toepassingen die omhoog of naar nul op aanvraag worden geschaald. Dit elimineert het verbruik van resources wanneer ze niet in gebruik zijn.

Toepassingscode kan worden verpakt in een container, samen met de juiste runtimes. Serverloze functionaliteit start de toepassingscontainers wanneer ze worden geactiveerd door een gebeurtenis. U kunt toepassingen activeren via verschillende gebeurtenissen: van uw eigen toepassingen, van meerdere cloudserviceproviders, SaaS-systemen (Software as a Service) en andere services.

U kunt ingebouwde OpenShift-interfacefuncties gebruiken om alle aspecten van serverloze containerimplementatie te beheren. Ontwikkelaars kunnen visueel bepalen welke gebeurtenissen het starten van toepassingen in containers stimuleren. Er zijn ook meerdere manieren om gebeurtenisparameters te wijzigen. OpenShift Serverless-toepassingen kunnen worden geïntegreerd met andere OpenShift-services, zoals OpenShift-pijplijnen, Service Mesh en Bewaking. Dit biedt een volledige ervaring voor het ontwikkelen en implementeren van serverloze toepassingen.

Voordat u begint

Een cluster maken

Volg de zelfstudie om een Azure Red Hat OpenShift-cluster te maken. Als u ervoor kiest om de opdrachtregelinterface (CLI) lokaal te installeren en te gebruiken, moet u voor deze zelfstudie Azure CLI versie 2.6.0 of hoger gebruiken. Voer az --version uit om uw huidige versie te vinden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Verbinding maken met het cluster

Als u een Azure Red Hat OpenShift-cluster wilt beheren, moet u oc gebruiken, de OpenShift-opdrachtregelclient.

Notitie

U wordt aangeraden OpenShift-opdrachtregel te installeren in Azure Cloud Shell en dat u deze gebruikt voor alle opdrachtregelbewerkingen in dit artikel. Open de shell vanuit shell.azure.com of selecteer de koppeling:

Knop voor het starten van Azure Cloud Shell

Volg de zelfstudie om uw CLI te installeren, uw clusterreferenties op te halen en verbinding te maken met het cluster met de webconsole en de OpenShift CLI.

Zodra u bent aangemeld, ziet u een bericht waarin staat dat u het default project gebruikt.

Login successful.

You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".

De Knative-opdrachtregelinterface (kn) installeren

Download de nieuwste versie van de opdrachtregelinterface (CLI) die geschikt is voor uw computer, van https://github.com/knative/client/releases/

Als u opdrachten uitvoert in Azure Cloud Shell, downloadt u de nieuwste Knative CLI voor 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

Open de OpenShift-webconsole

Zoek de URL van uw clusterwebconsole door het volgende script uit te voeren:

 az aro show \
    --name <cluster name> \
    --resource-group <resource group> \
    --query "consoleProfile.url" -o tsv

U moet een URL krijgen die er ongeveer als volgt uitziet.

https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/

Open een webbrowser en open de console-URL. Meld u aan met referenties kubeadmin .

Een schermopname van het aanmeldingsscherm van Azure Red Hat OpenShift

De serverloze OpenShift-operator installeren

Wanneer u bent aangemeld bij de OpenShift-webconsole, controleert u of u de beheerdersweergave hebt. Open de Operator Hub en selecteer de serverloze OpenShift-operator.

Een schermopname van de positie van de serverloze OpenShift-operator.

Open vervolgens de installatiepagina van de operator door Installeren te selecteren.

Een schermopname die laat zien hoe u Installeren selecteert om de operator te installeren.

Kies het juiste updatekanaal voor de clusterversie van Azure Red Hat OpenShift en installeer de operator in de openshift-serverless naamruimte. Schuif omlaag en selecteer Installeren.

Een schermopname van de installatiepagina van Operator.

Binnen een paar minuten geeft de statuspagina aan dat de operator is geïnstalleerd en klaar is voor gebruik. Selecteer de knop Operator weergeven om door te gaan.

Een schermopname van de statuspagina met de operator geïnstalleerd en gereed voor gebruik.

Knative Serving installeren

De optie voor het uitvoeren van een container op serverloze wijze op OpenShift Serverless is mogelijk met behulp van upstream Knative. Knative breidt Kubernetes uit om een set onderdelen te bieden die moderne toepassingen implementeren, uitvoeren en beheren via de serverloze methodologie.

Een exemplaar van knative serving maken

Selecteer in de linkerbovenhoek van het venster in de lijst Project de optie knative-server. Selecteer vervolgens in het deelvenster Opgegeven API's de optie Exemplaar maken in de knative-serverkaart .

Een schermopname die laat zien waar u een Knative Service-exemplaar kunt maken.

Behoud op de pagina Knative Serving maken alle standaardwaarden. Schuif omlaag en selecteer de knop Maken .

Een schermopname van de standaardwaarden die in het formulier worden vermeld.

OpenShift Serverless wordt geïnstalleerd wanneer de kolom Status Gereed wordt weergegeven. U kunt nu een OpenShift Serverless-project maken.

Een schermopname die laat zien dat Knative Serving gereed is.

Een serverloos project maken

Voer de volgende opdracht uit om een nieuw project te maken met de naam demoserverless:

oc new-project demoserverless

De uitvoer moet er ongeveer als volgt uitzien:

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

Laten we overschakelen van de beheerdersweergave naar de weergave Ontwikkelaars. Ga naar uw lijst met projecten in het linkermenu en selecteer demoserverless. U bevindt zich nu op de pagina Topologie voor het project.

Een schermopname van de topologie van het Azure Red Hat OpenShift-project.

Implementeren met behulp van de webconsole

Selecteer op de pagina Topologie de optie In Git. Gebruik https://github.com/sclorg/django-ex.git op de pagina Importeren uit Git de URL van de Git-opslagplaats. Een voorbeeldwebtoepassing wordt geïmplementeerd met python-programmeertaal.

Een schermopname van het Azure Red Hat OpenShift-project vanuit Git.

Notitie

OpenShift detecteert dat dit een Python-project is en selecteert de juiste opbouwinstallatiekopieën.

Schuif naar Resources en controleer of Knative Service is geselecteerd als het resourcetype dat u wilt genereren. Hiermee maakt u een Knative-service, een type implementatie waarmee openShift serverloze schaalaanpassing naar nul kan worden uitgevoerd wanneer deze niet actief is.

Een schermopname die laat zien hoe u de Knative Service selecteert.

Selecteer Maken onder aan de pagina. Hiermee maakt u resources voor het beheren van de build en implementatie van de toepassing. Vervolgens wordt u omgeleid naar het topologieoverzicht voor het project.

Het overzicht van de topologie biedt een visuele weergave van de toepassing die u hebt geïmplementeerd. U kunt de algemene toepassingsstructuur zien.

Wacht tot de compilatie is voltooid. Dit kan enkele minuten duren. Wanneer de build is voltooid, wordt een groen vinkje weergegeven in de linkerbenedenhoek van de service.

Een schermopname met een vinkje dat aangeeft dat de build is voltooid.

De schaal van uw toepassing bekijken

Selecteer bovenaan de topologieweergave in de lijst Weergaveopties de optie Aantal pods. Wacht tot het aantal pods omlaag wordt geschaald naar nul pods. Omlaag schalen kan enkele minuten duren.

Een schermopname van het aantal pods wanneer het is geschaald naar nul.

Selecteer in de rechterbovenhoek van het deelvenster Knative Service het pictogram URL openen. De toepassing wordt geopend in een nieuw browsertabblad. Sluit het tabblad en ga terug naar de topologieweergave. Daar kunt u zien dat uw toepassing is geschaald naar één pod, om tegemoet te komen aan uw aanvraag. Na een paar minuten wordt uw toepassing terug geschaald naar nul pods.

Een schermopname van de toepassing die omhoog is geschaald naar Pod.

Een nieuwe revisie afdwingen en distributie van verkeer instellen

Knative Services staan verkeertoewijzing toe, wat betekent dat revisies van een service kunnen worden toegewezen aan een toegewezen deel van het verkeer. Bij elke update van de serviceconfiguratie wordt een nieuwe revisie gemaakt. De serviceroute verwijst vervolgens standaard al het verkeer naar de meest recente kant-en-klare revisie. U kunt dit gedrag wijzigen door te definiëren welke revisie gedeelten van het verkeer ophaalt. Verkeerstoewijzing biedt ook de mogelijkheid om unieke URL's te maken voor afzonderlijke revisies.

Selecteer in de gemaakte topologie de revisie die in uw service wordt weergegeven om de details ervan weer te geven. De badges onder de Pod-ring en boven aan het detailpaneel moeten zijn (REV). Schuif in het zijpaneel op het tabblad Resources omlaag en selecteer de configuratie die aan uw service is gekoppeld.

Een schermopname van de Pod-ring.

Forceer een configuratie-update door over te schakelen naar het YAML-tabblad en omlaag te schuiven om de waarde van timeoutSeconds. Wijzig de waarde in 301. Selecteer Opslaan. In een praktijkscenario kunnen configuratie-updates ook worden geactiveerd door de containerinstallatiekopieëntag bij te werken.

Een schermopname die laat zien hoe u een nieuwe revisie forceert door de configuratie bij te werken.

Ga terug naar de topologieweergave . U ziet dat er een nieuwe revisie is geïmplementeerd. Selecteer de service die eindigt met de badge (KSVC) en selecteer de knop Verkeersdistributie instellen. U moet nu verkeer kunnen verdelen tussen de revisies in de service.

Een schermopname die laat zien hoe u de distributie van verkeer instelt.

In de topologieweergave ziet u nu hoe verkeer wordt verdeeld tussen de revisies.

Een schermopname die laat zien hoe u de distributie van verkeer controleert.

De Knative-opdrachtregelinterface (kn) gebruiken

In eerdere stappen hebt u de OpenShift-webconsole gebruikt om een toepassing te maken en te implementeren op Serverloze OpenShift. Omdat OpenShift Serverless onder Knative wordt uitgevoerd, kunt u ook de Knative-opdrachtregelinterface (kn) gebruiken om Knative-services te maken.

Notitie

Als u de kn CLI nog niet hebt geïnstalleerd, volgt u de stappen in de sectie Vereisten van dit artikel. Zorg er ook voor dat u bent aangemeld met behulp van de OpenShift-opdrachtregelinterface oc.

We gaan een containerinstallatiekopie gebruiken die al is gebouwd op quay.io/rhdevelopers/knative-tutorial-greeter.

Een service implementeren

Voer de volgende opdracht uit om de service te implementeren:

kn service create greeter \
--image quay.io/rhdevelopers/knative-tutorial-greeter:quarkus \
--namespace demoserverless \
--revision-name greeter-v1

U ziet een uitvoer die lijkt op het volgende.

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

U kunt een lijst met routes in het project ophalen door het volgende uit te voeren:

kn route list

U krijgt een lijst met routes terug in de naamruimte. Open de URL in een webbrowser om de geïmplementeerde service weer te geven.

NAME      URL                                                            READY
greeter   http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io   True

Een nieuwe versie van de service implementeren

Implementeer een nieuwe versie van de toepassing door de volgende opdracht uit te voeren en door de :latest installatiekopieëntag en een omgevingsvariabele MESSAGE_PREFIXdoor te geven:

kn service update greeter \
 --image quay.io/rhdevelopers/knative-tutorial-greeter:latest \
 --namespace demoserverless \
 --env MESSAGE_PREFIX=GreeterV2 \
 --revision-name greeter-v2

U krijgt een bevestiging dat er een nieuwe revisie greeter-v2 is geïmplementeerd.

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

Als u een lijst met alle revisies en de bijbehorende verkeersdistributies wilt weergeven, voert u de volgende opdracht uit:

kn revision list

U krijgt een lijst die lijkt op de volgende uitvoer. In dit geval ontvangt de nieuwe revisie 100% van het verkeer.

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

Blauw/groen en kanarie-implementaties

Wanneer een nieuwe revisie wordt geïmplementeerd, wordt standaard 100% van het verkeer toegewezen. Stel dat u een blauw/groene implementatiestrategie wilt implementeren waar u snel kunt terugdraaien naar de oudere versie van de toepassing. Knative maakt dit gemakkelijk.

U kunt de service bijwerken om drie verkeerstags te maken, terwijl u 100% van het verkeer eraan toewijst.

  • current: verwijst naar de momenteel geïmplementeerde versie
  • prev: verwijst naar de vorige versie
  • nieuwste: verwijst altijd naar de nieuwste versie
kn service update greeter \
   --tag greeter-v2=current \
   --tag greeter-v1=prev \
   --tag @latest=latest

U krijgt een bevestiging die er ongeveer als volgt uitziet.

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

Geef routes weer met behulp van de onderstaande opdracht:

kn route describe greeter

U ontvangt uitvoer met de URL's voor elk van de tags, samen met hun verkeersdistributie.

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

[..]

Stel dat u snel wilt terugdraaien naar de vorige versie. U kunt de distributie van verkeer bijwerken om 100% van het verkeer naar de vorige tag te verzenden:

kn service update greeter --traffic current=0 --traffic prev=100

Vermeld de routes en controleer het opnieuw met behulp van de volgende opdracht:

kn route describe greeter

U ziet uitvoer die laat zien dat 100% van de verkeersdistributie naar de vorige versie gaat.

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

[..]

Speel mee met de verkeersdistributie terwijl u de hoofdroute in uw browser vernieuwt (http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io in dit geval).

Resources opschonen

Wanneer u klaar bent met de toepassing, kunt u de volgende opdracht uitvoeren om het project te verwijderen:

oc delete project demoserverless

U kunt het cluster ook verwijderen door de instructies in zelfstudie te volgen: Een Azure Red Hat OpenShift 4-cluster verwijderen.

Volgende stappen

In deze handleiding hebt u het volgende geleerd:

  • Installeer de serverloze OpenShift-operator en Knative Serving
  • Een serverloos project implementeren met behulp van de webconsole
  • Een serverloos project implementeren met behulp van de Knative CLI (kn)
  • Blauw/groen-implementaties en canary-implementaties configureren met behulp van de Knative CLI (kn)

Meer informatie over het bouwen en implementeren van serverloze, gebeurtenisgestuurde toepassingen in Azure Red Hat OpenShift met behulp van OpenShift Serverless, volgt u de aan de slag met de serverloze OpenShift-documentatie en de documentatie voor het maken en beheren van serverloze toepassingen .