Nasazení aplikací do Azure Red Hat OpenShiftu pomocí bezserverového openshiftu OpenShift

V tomto článku nasadíte aplikaci do clusteru Azure Red Hat OpenShift s bezserverovou platformou OpenShift. OpenShift Serverless pomáhá vývojářům nasazovat a spouštět aplikace, které vertikálně navyšují nebo škálují na nulu na vyžádání. Tím se eliminuje spotřeba prostředků, když se nepoužívají.

Kód aplikace lze zabalit do kontejneru spolu s příslušnými moduly runtime. Funkce bez serveru spustí kontejnery aplikací při aktivaci událostí. Aplikace můžete aktivovat prostřednictvím různých událostí: od vlastních aplikací, od několika poskytovatelů cloudových služeb, systémů SaaS (software jako služba) a dalších služeb.

Pomocí integrovaných funkcí rozhraní OpenShift můžete spravovat všechny aspekty nasazení bezserverového kontejneru. Vývojáři můžou vizuálně určit, které události řídí spuštění kontejnerizovaných aplikací. Existuje také několik způsobů, jak upravit parametry události. Bezserverové aplikace OpenShift je možné integrovat s dalšími službami OpenShift, jako jsou OpenShift Pipelines, Service Mesh a Monitoring. Poskytuje kompletní prostředí pro vývoj a nasazení aplikací bez serveru.

Než začnete

Vytvoření clusteru

Postupujte podle kurzu vytvoření clusteru Azure Red Hat OpenShift. Pokud se rozhodnete nainstalovat a používat rozhraní příkazového řádku (CLI) místně, musíte použít Azure CLI verze 2.6.0 nebo novější. Aktuální verzi zjistíte spuštěním az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Připojení ke clusteru

Ke správě clusteru Azure Red Hat OpenShift musíte použít oc, klienta příkazového řádku OpenShift.

Poznámka:

Doporučujeme nainstalovat příkazový řádek OpenShift v Azure Cloud Shellu a použít ho pro všechny operace příkazového řádku v tomto článku. Otevřete prostředí z shell.azure.com nebo vyberte odkaz:

Button to launch Azure Cloud Shell

Podle kurzu nainstalujte rozhraní příkazového řádku, načtěte přihlašovací údaje clusteru a připojte se ke clusteru pomocí webové konzoly a rozhraní příkazového řádku OpenShift.

Po přihlášení by se měla zobrazit zpráva s informací, že projekt používáte default .

Login successful.

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

Using project "default".

Instalace rozhraní příkazového řádku Knative (kn)

Stáhněte si nejnovější verzi rozhraní příkazového řádku (CLI), která je vhodná pro váš počítač, zhttps://github.com/knative/client/releases/

Pokud spouštíte příkazy v Azure Cloud Shellu, stáhněte si nejnovější Knative CLI pro 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

Otevření webové konzoly OpenShift

Adresu URL webové konzoly clusteru vyhledejte spuštěním následujícího skriptu:

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

Měla by se zobrazit adresa URL podobná následující.

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

Otevřete webový prohlížeč a otevřete adresu URL konzoly. Přihlaste se pomocí kubeadmin přihlašovacích údajů.

A screenshot that shows the Azure Red Hat OpenShift log-in screen

Instalace operátoru Bezserverové aplikace OpenShift

Po přihlášení k webové konzole OpenShift potvrďte, že jste v zobrazení Správa istrator. Otevřete centrum operátorů a vyberte operátor OpenShift Bezserverový operátor.

A screenshot that shows the position of the OpenShift Serverless operator.

V dalším kroku otevřete stránku instalace operátora výběrem možnosti Instalovat.

A screenshot that shows how to select Install to install the operator.

Zvolte vhodný aktualizační kanál pro verzi clusteru Azure Red Hat OpenShift a nainstalujte operátora openshift-serverless do oboru názvů. Posuňte se dolů a vyberte Nainstalovat.

A screenshot that shows the Operator installation page.

Během několika minut se na stavové stránce zobrazuje, že je operátor nainstalovaný a připravený k použití. Pokračujte výběrem tlačítka Operátor zobrazení .

A screenshot that shows the status page with the operator installed and ready for use.

Instalace knative Serving

Možnost spuštění kontejneru bez serveru na bezserverové platformě OpenShift je možná pomocí upstreamu Knative. Knative rozšiřuje Kubernetes tak, aby poskytoval sadu komponent, které nasazují, spouštějí a spravují moderní aplikace prostřednictvím své bezserverové metodologie.

Vytvoření instance Knative Serving

V levém horním rohu okna v seznamu projektů vyberte knative-server. Potom v podokně Poskytnutá rozhraní API vyberte vytvořit instanci na kartě Knative Serving .

A screenshot that shows where to select to create a Knative Service instance.

Na stránce Vytvořit knativní obsluhu ponechte všechny výchozí hodnoty. Posuňte se dolů a vyberte tlačítko Vytvořit .

A screenshot that shows the default values listed in the form.

OpenShift Bezserverová instalace se nainstaluje, když se ve sloupci Stav zobrazuje Připraveno. Teď jste připraveni vytvořit bezserverový projekt OpenShift.

A screenshot that shows that the Knative Serving is ready.

Vytvoření bezserverového projektu

Pokud chcete vytvořit nový projekt s názvem demoserverless, spusťte následující příkaz:

oc new-project demoserverless

Výstup by měl vypadat přibližně takto:

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

Pojďme přejít ze zobrazení Správa istratoru na zobrazení Pro vývojáře. V nabídce vlevo přejděte do seznamu projektů a vyberte demoserverless. Teď jste na stránce Topologie projektu.

A screenshot that shows Azure Red Hat OpenShift project topology.

Nasazení pomocí webové konzoly

Na stránce Topologie vyberte z Gitu. Na stránce Import z Gitupoužijte https://github.com/sclorg/django-ex.git jako adresu URL úložiště Git. Ukázková webová aplikace se implementuje v programovacím jazyce Python.

A screenshot that shows Azure Red Hat OpenShift project from within Git.

Poznámka:

OpenShift zjistí, že se jedná o projekt Pythonu, a vybere příslušnou image tvůrce.

Posuňte se k prostředkům a potvrďte, že je jako typ prostředku vybraný Knative Service , který se má vygenerovat. Tím se vytvoří Knative Service, což je typ nasazení, které umožňuje bezserverové škálování OpenShiftu na nulu při nečinnosti.

A screenshot that shows how to select the Knative Service.

V dolní části stránky vyberte Vytvořit. Tím se vytvoří prostředky pro správu sestavení a nasazení aplikace. Pak budete přesměrováni na přehled topologie projektu.

Přehled topologie poskytuje vizuální znázornění aplikace, kterou jste nasadili. Můžete zobrazit celkovou strukturu aplikace.

Počkejte, až se sestavení dokončí. Může to trvat několik minut. Po dokončení sestavení se v levém dolním rohu služby zobrazí zelené zaškrtnutí.

A screenshot that shows a checkmark that indicates that the build is complete.

Zobrazení škálování aplikace

V horní části zobrazení Topologie vyberte v seznamu Možnosti zobrazení počet podů. Počkejte, až se počet podů vertikálně snížit na nulu. Vertikální snížení kapacity může trvat několik minut.

A screenshot that shows the Pod count when it has scaled to zero.

V pravém horním rohu panelu Knative Service vyberte ikonu Otevřít adresu URL . Aplikace se otevře na nové kartě prohlížeče. Zavřete kartu a vraťte se do zobrazení topologie. Uvidíte, že vaše aplikace se škálovala na jeden pod, aby vyhovovala vaší žádosti. Po několika minutách se aplikace škáluje zpět na nula podů.

A screenshot that shows the application scaled up to Pod.

Vynucení nové revize a nastavení distribuce provozu

Knative services umožňují mapování provozu, což znamená, že revize služby je možné mapovat na přidělenou část provozu. Při každé aktualizaci konfigurace služby se vytvoří nová revize. Trasa služby pak ve výchozím nastavení směruje veškerý provoz na nejnovější připravenou revizi. Toto chování můžete změnit definováním toho, která revize získá části provozu. Mapování provozu také poskytuje možnost vytvořit jedinečné adresy URL pro jednotlivé revize.

V vytvořené topologii vyberte revizi zobrazenou ve vaší službě a zobrazte její podrobnosti. Odznáčky pod kruhem pod a v horní části panelu podrobností by měly být (REV). Na bočním panelu na kartě Prostředky se posuňte dolů a vyberte konfiguraci přidruženou k vaší službě.

A screenshot that shows the Pod ring.

Vynutit aktualizaci konfigurace přepnutím na kartu YAML a posunutím dolů upravte hodnotu timeoutSeconds. Změňte hodnotu na 301. Zvolte Uložit. V reálném scénáři je možné aktualizace konfigurace aktivovat také aktualizací značky image kontejneru.

A screenshot that shows how to force a new revision by updating the configuration.

Vraťte se do zobrazení topologie , uvidíte, že byla nasazena nová revize. Vyberte službu končící odznáček (KSVC) a vyberte tlačítko Nastavit distribuci provozu. Teď byste měli být schopni rozdělit provoz mezi revizemi ve službě.

A screenshot that shows how to set traffic distribution.

V zobrazení Topologie se teď dozvíte, jak se provoz distribuuje mezi revizemi.

A screenshot that shows how to review traffic distribution.

Použití rozhraní příkazového řádku Knative (kn)

V předchozíchkrocích Vzhledem k tomu, že bezserverový openShift běží knative pod ním, můžete k vytváření služeb Knative použít také rozhraní příkazového řádku Knative (kn).

Poznámka:

Pokud jste rozhraní příkazového kn řádku ještě nenainstalovali, nezapomeňte postupovat podle kroků v části Požadavky tohoto článku. Také se ujistěte, že jste se přihlásili pomocí rozhraní ocpříkazového řádku OpenShift .

Použijeme image kontejneru, která je již sestavená .quay.io/rhdevelopers/knative-tutorial-greeter

Nasazení služby

Službu nasadíte spuštěním následujícího příkazu:

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

Zobrazí se výstup podobný následujícímu.

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

Seznam tras v projektu můžete načíst spuštěním následujícího příkazu:

kn route list

Vrátíte seznam tras v oboru názvů. Otevřete adresu URL ve webovém prohlížeči a zobrazte nasazenou službu.

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

Nasazení nové verze služby

Nasaďte novou verzi aplikace spuštěním následujícího příkazu a předáním :latest značky image a proměnné MESSAGE_PREFIXprostředí:

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

Vrátíte potvrzení, greeter-v2 že byla nasazena nová revize.

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

Pokud chcete zobrazit seznam všech revizí a jejich distribucí provozu, spusťte následující příkaz:

kn revision list

Zobrazí se seznam podobný následujícímu výstupu. Všimněte si, že v tomto případě nová revize obdrží 100 % provozu.

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

Modrá/zelená a kanárová nasazení

Při nasazení nové revize se ve výchozím nastavení přiřadí 100 % provozu. Řekněme, že chcete implementovat strategii modrého/zeleného nasazení, kde se můžete rychle vrátit ke starší verzi aplikace. Knative to usnadňuje.

Službu můžete aktualizovat tak, aby vytvářela tři značky provozu a přiřazovala jim 100 % provozu.

  • current: odkazuje na aktuálně nasazenou verzi.
  • předchozí verze: odkazuje na předchozí verzi.
  • latest: Vždy odkazuje na nejnovější verzi.
kn service update greeter \
   --tag greeter-v2=current \
   --tag greeter-v1=prev \
   --tag @latest=latest

Zobrazí se potvrzení podobné následujícímu.

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

Vypsat trasy pomocí následujícího příkazu:

kn route describe greeter

Zobrazí se výstup zobrazující adresy URL jednotlivých značek spolu s jejich distribucí provozu.

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

[..]

Řekněme, že chcete rychle vrátit zpět na předchozí verzi, můžete aktualizovat distribuci provozu tak, aby odesílala 100 % provozu na předchozí značku:

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

Vypsat trasy a znovu zkontrolovat pomocí následujícího příkazu:

kn route describe greeter

Zobrazí se výstup ukazující, že 100 % distribuce provozu přejde na předchozí verzi.

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

[..]

Při aktualizaci hlavní trasy v prohlížeči si můžete pohrát s distribucí provozu (http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io v tomto případě).

Vyčištění prostředků

Až aplikaci dokončíte, můžete projekt odstranit spuštěním následujícího příkazu:

oc delete project demoserverless

Cluster můžete odstranit také podle pokynů v kurzu: Odstranění clusteru Azure Red Hat OpenShift 4.

Další kroky

V této příručce jste se naučili:

  • Instalace operátoru Bezserverové architektury OpenShift a Knative Serving
  • Nasazení bezserverového projektu pomocí webové konzoly
  • Nasazení bezserverového projektu pomocí Knative CLI (kn)
  • Konfigurace modrých/zelených nasazení a kanárských nasazení pomocí Knative CLI (kn)

Přečtěte si další informace o tom, jak sestavovat a nasazovat bezserverové aplikace řízené událostmi v Azure Red Hat OpenShiftu pomocí Bezserverové aplikace OpenShift, postupujte podle dokumentace Začínáme s Bezserverovou verzí OpenShiftu a dokumentace k vytváření a správě bezserverových aplikací .