Sdílet prostřednictvím


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:

Tlačítko pro spuštění Azure Cloud Shellu

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ů.

Snímek obrazovky znázorňující přihlašovací obrazovku Azure Red Hat OpenShift

Instalace operátoru Bezserverové aplikace OpenShift

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

Snímek obrazovky znázorňující pozici operátoru Bezserverové architektury OpenShift

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

Snímek obrazovky, který ukazuje, jak vybrat Nainstalovat pro instalaci operátora.

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.

Snímek obrazovky znázorňující stránku Instalace operátora

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í .

Snímek obrazovky znázorňující stavovou stránku s nainstalovaným a připraveným operátorem

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 .

Snímek obrazovky znázorňující, kde se má vybrat vytvoření instance Knative Service

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

Snímek obrazovky znázorňující výchozí hodnoty uvedené ve formuláři

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

Snímek obrazovky, který ukazuje, že je služba Knative Serving připravená

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ávce na zobrazení Vývojář. V nabídce vlevo přejděte do seznamu projektů a vyberte demoserverless. Teď jste na stránce Topologie projektu.

Snímek obrazovky znázorňující topologii projektu Azure Red Hat OpenShift

Nasazení pomocí webové konzoly

Na stránce Topologie vyberte z Gitu. Na stránce Import z Gitu použ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.

Snímek obrazovky znázorňující projekt Azure Red Hat OpenShift z Gitu

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.

Snímek obrazovky znázorňující výběr služby 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í.

Snímek obrazovky znázorňující značku zaškrtnutí, která označuje, že je sestavení dokončené

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.

Snímek obrazovky znázorňující počet podů při škálování na nulu

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ů.

Snímek obrazovky znázorňující vertikální navýšení kapacity aplikace na 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ě.

Snímek obrazovky znázorňující okruh podů

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.

Snímek obrazovky, který ukazuje, jak vynutit novou revizi aktualizací konfigurace

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ě.

Snímek obrazovky znázorňující, jak nastavit distribuci provozu

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

Snímek obrazovky znázorňující, jak zkontrolovat distribuci provozu

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í .