Wdrażanie aplikacji w usłudze Azure Red Hat OpenShift przy użyciu rozwiązania OpenShift Serverless
W tym artykule wdrożysz aplikację w klastrze usługi Azure Red Hat OpenShift z rozwiązaniem OpenShift Serverless. Rozwiązanie OpenShift Serverless ułatwia deweloperom wdrażanie i uruchamianie aplikacji, które będą skalowane w górę lub skalowane do zera na żądanie. Eliminuje to zużycie zasobów, gdy nie są używane.
Kod aplikacji można spakować w kontenerze wraz z odpowiednimi środowiskami uruchomieniowymi. Funkcje bezserwerowe uruchamiają kontenery aplikacji po wyzwoleniu ich przez zdarzenie. Aplikacje można wyzwalać za pomocą różnych zdarzeń: od własnych aplikacji, od wielu dostawców usług w chmurze, systemów oprogramowania jako usługi (SaaS) i innych usług.
Wbudowane funkcje interfejsu OpenShift umożliwiają zarządzanie wszystkimi aspektami wdrożenia kontenera bezserwerowego. Deweloperzy mogą wizualnie określić, które zdarzenia napędzają uruchamianie konteneryzowanych aplikacji. Istnieje również wiele sposobów modyfikowania parametrów zdarzenia. Aplikacje bezserwerowe OpenShift można zintegrować z innymi usługami OpenShift, takimi jak OpenShift Pipelines, Service Mesh i Monitoring. Zapewnia to kompletne środowisko tworzenia i wdrażania aplikacji bezserwerowych.
Przed rozpoczęciem
Tworzenie klastra
Wykonaj czynności opisane w samouczku, aby utworzyć klaster usługi Azure Red Hat OpenShift. Jeśli zdecydujesz się zainstalować interfejs wiersza polecenia i korzystać z niego lokalnie, ten samouczek wymaga użycia interfejsu wiersza polecenia platformy Azure w wersji 2.6.0 lub nowszej. Uruchom polecenie az --version
, aby określić bieżącą wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Łączenie z klastrem
Aby zarządzać klastrem usługi Azure Red Hat OpenShift, musisz użyć pakietu oc, klienta wiersza polecenia OpenShift.
Uwaga
Zalecamy zainstalowanie wiersza polecenia openShift w usłudze Azure Cloud Shell i użycie go do wszystkich operacji wiersza polecenia w tym artykule. Otwórz powłokę z shell.azure.com lub wybierz link:
Postępuj zgodnie z samouczkiem, aby zainstalować interfejs wiersza polecenia, pobrać poświadczenia klastra i nawiązać połączenie z klastrem za pomocą konsoli internetowej i interfejsu wiersza polecenia openShift.
Po zalogowaniu default
powinien zostać wyświetlony komunikat z informacją, że używasz projektu.
Login successful.
You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
Instalowanie interfejsu wiersza polecenia knative (kn)
Pobierz najnowszą wersję interfejsu wiersza polecenia (CLI) odpowiedniego dla twojej maszynyhttps://github.com/knative/client/releases/
Jeśli uruchomisz polecenia w usłudze Azure Cloud Shell, pobierz najnowszy interfejs wiersza polecenia knative dla systemu 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
Otwieranie konsoli internetowej OpenShift
Znajdź adres URL konsoli sieci Web klastra, uruchamiając następujący skrypt:
az aro show \
--name <cluster name> \
--resource-group <resource group> \
--query "consoleProfile.url" -o tsv
Powinien zostać wyświetlony adres URL podobny do poniższego.
https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/
Otwórz przeglądarkę internetową i otwórz adres URL konsoli. Zaloguj się przy użyciu kubeadmin
poświadczeń.
Instalowanie operatora OpenShift Serverless
Po zalogowaniu się do konsoli internetowej platformy OpenShift upewnij się, że jesteś w widoku administratora . Otwórz centrum operatorów i wybierz operator OpenShift Serverless.
Następnie otwórz stronę instalacji operatora, wybierając pozycję Zainstaluj.
Wybierz odpowiedni kanał aktualizacji dla wersji klastra usługi Azure Red Hat OpenShift i zainstaluj operator w openshift-serverless
przestrzeni nazw. Przewiń w dół i wybierz pozycję Zainstaluj.
W ciągu kilku minut strona stanu odzwierciedla, że operator jest zainstalowany i jest gotowy do użycia. Wybierz przycisk Operator widoku, aby kontynuować.
Instalowanie usługi knative
Opcja uruchamiania kontenera w sposób bezserwerowy na serwerze OpenShift Serverless jest możliwa przy użyciu nadrzędnego knative. Rozwiązanie Knative rozszerza platformę Kubernetes, aby zapewnić zestaw składników, które wdrażają, uruchamiają i zarządzają nowoczesnymi aplikacjami za pomocą metodologii bezserwerowej.
Tworzenie wystąpienia funkcji Knative Serving
W lewym górnym rogu okna na liście Project (Projekt) wybierz pozycję knative-server
. Następnie w okienku Podane interfejsy API wybierz pozycję Utwórz wystąpienie na karcie Knative Serving .
Na stronie Tworzenie funkcji knative Serving zachowaj wszystkie wartości domyślne. Przewiń w dół i wybierz przycisk Utwórz .
Program OpenShift Serverless jest instalowany, gdy w kolumnie Stan jest wyświetlana wartość Gotowe. Teraz możesz utworzyć projekt OpenShift Serverless.
Tworzenie projektu bezserwerowego
Aby utworzyć nowy projekt o nazwie demoserverless
, uruchom następujące polecenie:
oc new-project demoserverless
Dane wyjściowe będą podobne do następujących:
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
Przejdźmy z widoku Administrator do widoku Deweloper. Przejdź do listy projektów w menu po lewej stronie i wybierz pozycję demoserverless
. Teraz znajdujesz się na stronie Topologia projektu.
Wdrażanie przy użyciu konsoli sieci Web
Na stronie Topologia wybierz pozycję Z usługi Git. Na stronie Importowanie z usługi Git użyj https://github.com/sclorg/django-ex.git
adresu URL repozytorium Git. Przykładowa aplikacja internetowa jest implementowana przy użyciu języka programowania Python.
Uwaga
Usługa OpenShift wykrywa, że jest to projekt w języku Python i wybiera odpowiedni obraz konstruktora.
Przewiń do pozycji Zasoby i upewnij się, że usługa knative jest wybrana jako typ zasobu do wygenerowania. Spowoduje to utworzenie usługi Knative Service , typu wdrożenia, które umożliwia skalowanie bezserwerowe OpenShift do zera w przypadku bezczynności.
W dolnej części strony wybierz pozycję Utwórz. Spowoduje to utworzenie zasobów w celu zarządzania kompilacją i wdrożeniem aplikacji. Następnie nastąpi przekierowanie do przeglądu topologii projektu.
Omówienie topologii zawiera wizualną reprezentację wdrożonej aplikacji. Zobaczysz ogólną strukturę aplikacji.
Poczekaj na zakończenie kompilacji. Może to potrwać kilka minut. Po zakończeniu kompilacji w lewym dolnym rogu usługi pojawi się zielony znacznik wyboru.
Wyświetlanie skali aplikacji
W górnej części widoku Topologia na liście Opcje wyświetlania wybierz pozycję Liczba zasobników. Poczekaj, aż liczba zasobników zostanie przeskalowania w dół do zera zasobników. Skalowanie w dół może potrwać kilka minut.
W prawym górnym rogu panelu Knative Service wybierz ikonę Otwórz adres URL . Aplikacja zostanie otwarta na nowej karcie przeglądarki. Zamknij kartę i wróć do widoku Topologia. Zobaczysz, że aplikacja została przeskalowana w górę do jednego zasobnika, aby uwzględnić twoje żądanie. Po kilku minutach aplikacja jest skalowana z powrotem w dół do zera zasobników.
Wymuszanie nowej poprawki i ustawianie dystrybucji ruchu
Usługi knative umożliwiają mapowanie ruchu, co oznacza, że poprawki usługi można mapować na przydzieloną część ruchu. Po każdej aktualizacji konfiguracji usługi zostanie utworzona nowa poprawka. Następnie trasa usługi domyślnie wskazuje cały ruch do najnowszej gotowej wersji. To zachowanie można zmienić, definiując, która poprawka pobiera fragmenty ruchu. Mapowanie ruchu zapewnia również opcję tworzenia unikatowych adresów URL dla poszczególnych poprawek.
W utworzonej topologii wybierz poprawkę wyświetlaną w usłudze, aby wyświetlić jej szczegóły. Znaczki pod pierścieniem zasobnika i w górnej części panelu szczegółów powinny mieć wartość (REV)
. Na panelu bocznym na karcie Zasoby przewiń w dół i wybierz konfigurację skojarzona z usługą.
Wymuś aktualizację konfiguracji, przełączając się na kartę YAML i przewijając w dół, aby edytować wartość .timeoutSeconds
Zmień wartość na 301
. Wybierz pozycję Zapisz. W rzeczywistym scenariuszu aktualizacje konfiguracji można również wyzwolić, aktualizując tag obrazu kontenera.
Wróć do widoku Topologia , zobaczysz, że została wdrożona nowa poprawka. Wybierz usługę kończącą się znaczkiem (KSVC)
i wybierz przycisk Ustaw dystrybucję ruchu. Teraz powinno być możliwe podzielenie ruchu między poprawkami w usłudze.
Widok topologii pokazuje teraz, jak ruch jest dystrybuowany między poprawkami.
Korzystanie z interfejsu wiersza polecenia knative (kn)
W poprzednich krokach użyto konsoli internetowej OpenShift do utworzenia i wdrożenia aplikacji w rozwiązaniu OpenShift Serverless. Ponieważ rozwiązanie OpenShift Serverless działa pod spodem, możesz również użyć interfejsu wiersza polecenia knative (kn) do tworzenia usług knative.
Uwaga
Jeśli interfejs wiersza polecenia nie został jeszcze zainstalowany kn
, pamiętaj, aby wykonać kroki opisane w sekcji wymagań wstępnych tego artykułu. Upewnij się również, że zalogowano się przy użyciu interfejsu oc
wiersza polecenia OpenShift.
Użyjemy obrazu kontenera, który został już skompilowany w usłudze quay.io/rhdevelopers/knative-tutorial-greeter
.
Wdrażanie usługi
Aby wdrożyć usługę, uruchom następujące polecenie:
kn service create greeter \
--image quay.io/rhdevelopers/knative-tutorial-greeter:quarkus \
--namespace demoserverless \
--revision-name greeter-v1
Zobaczysz dane wyjściowe podobne do poniższych.
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
Listę tras w projekcie można pobrać, uruchamiając polecenie:
kn route list
Wrócisz do listy tras w przestrzeni nazw. Otwórz adres URL w przeglądarce internetowej, aby wyświetlić wdrożona usługa.
NAME URL READY
greeter http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io True
Wdrażanie nowej wersji usługi
Wdróż nową wersję aplikacji, uruchamiając następujące polecenie, przekazując :latest
tag obrazu i zmienną środowiskową MESSAGE_PREFIX
:
kn service update greeter \
--image quay.io/rhdevelopers/knative-tutorial-greeter:latest \
--namespace demoserverless \
--env MESSAGE_PREFIX=GreeterV2 \
--revision-name greeter-v2
Otrzymasz potwierdzenie wdrożenia nowej poprawki greeter-v2
.
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
Aby wyświetlić listę wszystkich poprawek i ich dystrybucji ruchu, uruchom następujące polecenie:
kn revision list
Uzyskasz listę podobną do poniższych danych wyjściowych. Należy pamiętać, że w tym przypadku nowa poprawka otrzymuje 100% ruchu.
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
Wdrożenia niebieskie/zielone i kanary
Po wdrożeniu nowej poprawki domyślnie jest przypisywana 100% ruchu. Załóżmy, że chcesz zaimplementować strategię wdrażania niebieskiego/zielonego, w której można szybko wycofać się ze starszej wersji aplikacji. Knative sprawia, że to łatwe.
Możesz zaktualizować usługę, aby utworzyć trzy tagi ruchu, przypisując do nich 100% ruchu.
- current: wskazuje aktualnie wdrożoną wersję
- prev: wskazuje poprzednią wersję
- latest: zawsze wskazuje najnowszą wersję
kn service update greeter \
--tag greeter-v2=current \
--tag greeter-v1=prev \
--tag @latest=latest
Otrzymasz potwierdzenie podobne do poniższego.
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
Wyświetl listę tras przy użyciu poniższego polecenia:
kn route describe greeter
Otrzymasz dane wyjściowe z adresami URL dla każdego z tagów wraz z ich rozkładem ruchu.
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
[..]
Załóżmy, że chcesz szybko wycofać się z poprzedniej wersji. Możesz zaktualizować dystrybucję ruchu, aby wysłać 100% ruchu do poprzedniego tagu:
kn service update greeter --traffic current=0 --traffic prev=100
Wyświetl listę tras i sprawdź ponownie, używając następującego polecenia:
kn route describe greeter
Zobaczysz dane wyjściowe pokazujące, że 100% dystrybucji ruchu przechodzi do poprzedniej wersji.
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
[..]
Przetwórz dystrybucję ruchu podczas odświeżania trasy głównej w przeglądarce (http://greeter-demoserverless.apps.wzy5hg7x.eastus.aroapp.io
w tym przypadku).
Czyszczenie zasobów
Po zakończeniu pracy z aplikacją możesz uruchomić następujące polecenie, aby usunąć projekt:
oc delete project demoserverless
Klaster można również usunąć, postępując zgodnie z instrukcjami w temacie Samouczek: usuwanie klastra usługi Azure Red Hat OpenShift 4.
Następne kroki
W tym przewodniku przedstawiono sposób wykonywania następujących instrukcji:
- Instalowanie operatora Bezserwerowego openShift i usługi knative
- Wdrażanie projektu bezserwerowego przy użyciu konsoli sieci Web
- Wdrażanie projektu bezserwerowego przy użyciu interfejsu wiersza polecenia knative (kn)
- Konfigurowanie wdrożeń niebieski/zielonych i wdrożeń kanarowych przy użyciu interfejsu wiersza polecenia knative (kn)
Dowiedz się więcej o tworzeniu i wdrażaniu bezserwerowych aplikacji opartych na zdarzeniach w usłudze Azure Red Hat OpenShift przy użyciu rozwiązania OpenShift Serverless, postępuj zgodnie z dokumentacją Wprowadzenie do rozwiązania OpenShift Serverless oraz dokumentacją Tworzenie aplikacji bezserwerowych i zarządzanie nimi.