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:
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ů.
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.
V dalším kroku otevřete stránku instalace operátora výběrem možnosti Instalovat.
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.
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í .
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 .
Na stránce Vytvořit knativní obsluhu ponechte všechny výchozí hodnoty. Posuňte se dolů a vyberte tlačítko Vytvořit .
OpenShift Bezserverová instalace se nainstaluje, když se ve sloupci Stav zobrazuje Připraveno. Teď jste připraveni vytvořit bezserverový projekt OpenShift.
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.
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.
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.
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í.
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.
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ů.
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ě.
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.
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ě.
V zobrazení Topologie se teď dozvíte, jak se provoz distribuuje mezi revizemi.
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í oc
pří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_PREFIX
prostř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í .