Wdrażanie aplikacji ze źródła do usługi Azure Red Hat OpenShift
W tym artykule wdrożysz aplikację w klastrze usługi Azure Red Hat OpenShift z kodu źródłowego przy użyciu kompilacji typu source-to-image (S2I). Source-to-Image (S2I) to proces kompilacji umożliwiający tworzenie odtwarzalnych obrazów kontenerów z kodu źródłowego. Funkcja S2I tworzy gotowe do uruchomienia obrazy przez wstrzyknięcie kodu źródłowego do obrazu kontenera i umożliwienie kontenerowi przygotowania tego kodu źródłowego do wykonania. Możesz utworzyć aplikację typu OpenShift ze źródła, aby ją wdrożyć, więc nie trzeba tworzyć kontenera ręcznie z każdą zmianą. Usługa OpenShift może następnie automatycznie kompilować i wdrażać nowe wersje po powiadomieniu o zmianach kodu źródłowego.
Zanim rozpoczniesz
Uwaga
W tym artykule założono, że skonfigurowaliśmy wpis tajny ściągania. Jeśli nie masz wpisu tajnego ściągania dla klastra, możesz postępować zgodnie z dokumentacją, aby dodać lub zaktualizować wpis tajny ściągania oprogramowania Red Hat.
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".
Tworzenie projektu
Aby utworzyć nowy projekt o nazwie demoproject
, uruchom polecenie :
oc new-project demoproject
Powinny zostać wyświetlone dane wyjściowe podobne do następujących:
Now using project "demoproject" on server "https://api.wzy5hg7x.eastus.aroapp.io:6443".
You can add applications to this project with the 'new-app' command. For example, try:
oc new-app django-psql-example
to build a new example application in Python. Or use kubectl to deploy a simple Kubernetes application:
kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
Uruchamianie konsoli sieci Web
Znajdź adres URL konsoli sieci Web klastra, uruchamiając polecenie:
az aro show \
--name <cluster name> \
--resource-group <resource group> \
--query "consoleProfile.url" -o tsv
Powinien zostać wyświetlony adres URL podobny do tego.
https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/
Uruchom adres URL konsoli w przeglądarce i zaloguj się przy użyciu kubeadmin
poświadczeń.
Przejdź do perspektywy dewelopera zamiast perspektywy Administrator w menu po lewej stronie i wybierz na demoproject
liście projektów. Następnie powinien znajdować się na stronie Topologia projektu.
Ponieważ projekt jest pusty, nie powinny być znajdowane żadne obciążenia i zostaną wyświetlone różne opcje wdrażania aplikacji.
Wdrażanie przy użyciu konsoli sieci Web
W opcjach przedstawionych na potrzeby wdrażania aplikacji wybierz pozycję Z usługi Git. Spowoduje to zmianę na stronie Importowanie z usługi Git . Użyj https://github.com/sclorg/django-ex.git
jako 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ń w dół do pozycji Opcje zaawansowane i upewnij się, że zaznaczono opcję Utwórz trasę do aplikacji . Ta akcja spowoduje utworzenie trasy OpenShift, która umożliwia uwidocznienie usługi przez nadanie jej zewnętrznie dostępnej nazwy hosta.
Gdy wszystko będzie gotowe, w dolnej części strony kliknij pozycję Utwórz. Spowoduje to utworzenie zasobów do zarządzania kompilacją i wdrażaniem aplikacji. Następnie nastąpi przekierowanie do przeglądu topologii projektu.
Omówienie topologii zawiera wizualną reprezentację wdrożonej aplikacji. W tym widoku można zobaczyć ogólną strukturę aplikacji.
Ikonę Git można kliknąć, aby przejść do repozytorium Git, z którego utworzono kod źródłowy aplikacji. Ikona wyświetlana w lewym dolnym rogu pokazuje stan kompilacji aplikacji. Kliknięcie tej ikony spowoduje przejście do sekcji szczegółów kompilacji. Jeśli aplikacja udostępniła trasy, ikona w prawym górnym rogu można kliknąć, aby otworzyć adres URL trasy aplikacji, która została utworzona.
Podczas gdy aplikacja skaluje się w górę lub w dół, uruchamianie wdrożeń i ponowne tworzenie zasobników, reprezentacja aplikacji w widoku topologii będzie animowana, aby zapewnić wgląd w to, co dzieje się w czasie rzeczywistym.
Kliknięcie ikony aplikacji spowoduje wyświetlenie dodatkowych szczegółów, jak pokazano poniżej.
Wyświetlanie dzienników konstruktora
Po rozpoczęciu kompilacji kliknij link Wyświetl dzienniki wyświetlany na panelu Zasoby .
Umożliwi to monitorowanie postępu kompilacji podczas jej uruchamiania. Obraz konstruktora, Python w tym przypadku, spowoduje wstrzyknięcie kodu źródłowego aplikacji do końcowego obrazu przed wypchnięciem go do wewnętrznego rejestru obrazów OpenShift. Kompilacja zakończy się pomyślnie po wyświetleniu końcowego komunikatu "Wypychanie powiodło się".
Uzyskiwanie dostępu do aplikacji
Po zakończeniu kompilacji obrazu aplikacji zostanie on wdrożony.
Kliknij pozycję Topologia na pasku menu po lewej stronie, aby powrócić do widoku topologii projektu. Po utworzeniu aplikacji przy użyciu konsoli sieci Web trasa została automatycznie utworzona dla aplikacji i zostanie udostępniona poza klastrem. Adres URL, który może służyć do uzyskiwania dostępu do aplikacji z przeglądarki internetowej, był widoczny na karcie Zasoby dla wcześniej wyświetlonej aplikacji.
W widoku topologii możesz przejść do adresu URL wdrożonej aplikacji, klikając ikonę w prawym górnym rogu pierścienia. Po zakończeniu wdrażania kliknij ikonę i powinna zostać wyświetlona wdrożona aplikacja.
Wdrażanie przy użyciu wiersza polecenia
Wiesz już, jak wdrożyć aplikację przy użyciu konsoli sieci Web, teraz pozwala wdrożyć tę samą aplikację internetową, ale tym razem przy użyciu oc
narzędzia wiersza polecenia.
Uruchom następujące polecenie, aby usunąć projekt i rozpocząć od nowa:
oc delete project demoproject
Powinien zostać wyświetlony komunikat z potwierdzeniem, że demoproject
element został usunięty.
project.project.openshift.io "demoproject" deleted
Utwórz ponownie, demoproject
uruchamiając polecenie:
oc new-project demoproject
W projekcie utwórz nową aplikację ze źródła w usłudze GitHub, określając konstruktorA S2I dla najnowszej dostępnej wersji języka Python.
oc new-app python:latest~https://github.com/sclorg/django-ex.git
Powinno to wyświetlić dane wyjściowe podobne do:
--> Found image 8ec6f0d (4 weeks old) in image stream "openshift/python" under tag "latest" for "python:latest"
Python 3.8
----------
[...]
Tags: builder, python, python38, python-38, rh-python38
* A source build using source code from https://github.com/sclorg/django-ex.git will be created
* The resulting image will be pushed to image stream tag "django-ex:latest"
* Use 'oc start-build' to trigger a new build
* This image will be deployed in deployment config "django-ex"
* Port 8080/tcp will be load balanced by service "django-ex"
* Other containers can access this service through the hostname "django-ex"
--> Creating resources ...
imagestream.image.openshift.io "django-ex" created
buildconfig.build.openshift.io "django-ex" created
deploymentconfig.apps.openshift.io "django-ex" created
service "django-ex" created
--> Success
Build scheduled, use 'oc logs -f bc/django-ex' to track its progress.
Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
'oc expose svc/django-ex'
Run 'oc status' to view your app.
Usługa OpenShift będzie używać nazwy repozytorium Git jako nazwy aplikacji. Przejrzyj stan kompilacji i wdrożenia, uruchamiając polecenie:
oc status
Po zakończeniu kompilacji i wdrożenia powinny zostać wyświetlone podobne dane wyjściowe.
In project demoproject on server https://api.wzy5hg7x.eastus.aroapp.io:6443
svc/django-ex - 172.30.200.50:8080
dc/django-ex deploys istag/django-ex:latest <-
bc/django-ex source builds https://github.com/sclorg/django-ex.git on openshift/python:latest
deployment #1 deployed about a minute ago - 1 pod
2 infos identified, use 'oc status --suggest' to see details.
Aby uwidocznić aplikację poza klastrem OpenShift, należy utworzyć trasę, uruchamiając polecenie:
oc expose service/django-ex
Powinno zostać wyświetlone potwierdzenie.
route.route.openshift.io/django-ex exposed
Pobierz adres URL, uruchamiając polecenie:
oc get route django-ex
Powinna zostać zwrócona nazwa hosta przypisana do trasy, której można użyć do przeglądania wdrożonej aplikacji.
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
django-ex django-ex-demoproject.apps.wzy5hg7x.eastus.aroapp.io django-ex 8080-tcp None
Wyzwalanie nowej kompilacji binarnej
Podczas pracy nad aplikacją prawdopodobnie zechcesz wprowadzić zmiany i zobaczyć je wdrożone. Możesz łatwo skonfigurować element webhook, który wyzwoli nową kompilację i wdrożenie przy każdym zatwierdzeniu kodu. Jednak może to nie być pożądane, ponieważ czasami chcesz zobaczyć zmiany bez konieczności wypychania każdej zmiany kodu do repozytorium.
W przypadkach, gdy szybko iterujesz zmiany, możesz użyć tego, co jest nazywane kompilacją binarną. Aby zademonstrować ten scenariusz, sklonuj repozytorium Git dla aplikacji lokalnie, uruchamiając polecenie:
git clone https://github.com/sclorg/django-ex.git
Spowoduje to utworzenie katalogu django-ex
podrzędnego zawierającego kod źródłowy aplikacji:
Cloning into 'django-ex'...
remote: Enumerating objects: 980, done.
remote: Total 980 (delta 0), reused 0 (delta 0), pack-reused 980
Receiving objects: 100% (980/980), 276.23 KiB | 4.85 MiB/s, done.
Resolving deltas: 100% (434/434), done.
Przejdź do katalogu podrzędnego:
cd django-ex
Otwórz zintegrowany edytor usługi Azure Cloud Shell:
code welcome/templates/welcome/index.html
Przewiń w dół i zmień wiersz, który mówi Welcome to your Django application on OpenShift
, aby powiedzieć Welcome to Azure Red Hat OpenShift
. Zapisz plik i zamknij edytor za pomocą ...
menu w prawym górnym rogu.
Uruchom nową kompilację, uruchamiając polecenie :
oc start-build django-ex --from-dir=. --wait
Przekazując flagę --from-dir=.
, wiersz polecenia OpenShift przekaże kod źródłowy z określonego katalogu, a następnie zainicjuje proces kompilacji i wdrażania. Powinny zostać wyświetlone dane wyjściowe podobne do poniższych, a po kilku minutach kompilacja powinna zostać ukończona.
Uploading directory "." as binary input for the build ...
.
Uploading finished
build.build.openshift.io/django-ex-2 started
Jeśli odświeżysz przeglądarkę przy użyciu aplikacji, powinien zostać wyświetlony zaktualizowany tytuł.
Czyszczenie zasobów
Po zakończeniu pracy z aplikacją możesz uruchomić następujące polecenie, aby usunąć projekt:
oc delete project demoproject
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:
- Tworzenie projektu
- Wdrażanie aplikacji z kodu źródłowego przy użyciu konsoli sieci Web
- Wdrażanie aplikacji z kodu źródłowego przy użyciu wiersza polecenia OpenShift
- Wyzwalanie kompilacji binarnej przy użyciu wiersza polecenia openShift
Dowiedz się więcej o sposobie kompilowania i wdrażania aplikacji przy użyciu strategii typu source-to-image i innych strategii kompilacji.