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:

Button to launch Azure Cloud Shell

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

Azure Red Hat OpenShift login screen

Przejdź do perspektywy dewelopera zamiast perspektywy Administracja istrator w menu po lewej stronie i wybierz pozycję demoproject na liście projektów. Następnie powinien znajdować się na stronie Topologia projektu.

Azure Red Hat OpenShift project topology

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.

Azure Red Hat OpenShift project from Git

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.

Azure Red Hat OpenShift project from Git - Route setup

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.

Azure Red Hat OpenShift project from Git - Topology

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.

Azure Red Hat OpenShift project from Git - Details

Wyświetlanie dzienników konstruktora

Po rozpoczęciu kompilacji kliknij link Wyświetl dzienniki wyświetlany na panelu Zasoby .

Azure Red Hat OpenShift project from Git - Build logs

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.

Azure Red Hat OpenShift project from Git - Browse app

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.

Azure Red Hat OpenShift project from Git - Edit application in Azure Cloud Shell editor

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

Azure Red Hat OpenShift project from Git - Browse updated app

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.