Wdrażanie aplikacji Java przy użyciu biblioteki Open Liberty/WebSphere Liberty w klastrze usługi Azure Red Hat OpenShift

W tym przewodniku przedstawiono sposób uruchamiania aplikacji Java, Java EE, Jakarta EE lub MicroProfile w środowisku uruchomieniowym Open Liberty/WebSphere Liberty. W tym przewodniku pokazano, jak wdrożyć konteneryzowaną aplikację w klastrze usługi Azure Red Hat OpenShift 4 przy użyciu operatora Open Liberty. Ten artykuł przeprowadzi Cię przez proces przygotowywania aplikacji Liberty, tworzenia obrazu platformy Docker aplikacji i uruchamiania konteneryzowanej aplikacji w klastrze usługi Azure Red Hat OpenShift 4. Aby uzyskać więcej informacji na temat open liberty, zobacz stronę projektu Open Liberty. Aby uzyskać więcej informacji na temat platformy WebSphere Liberty, zobacz stronę produktu WebSphere Liberty.

Ten artykuł zawiera szczegółowe wskazówki dotyczące uruchamiania oprogramowania Open/WebSphere Liberty w klastrze usługi Azure Red Hat OpenShift 4. Aby uzyskać bardziej zautomatyzowane rozwiązanie, które przyspiesza podróż do klastra usługi Azure Red Hat OpenShift 4, zobacz Deploy IBM WebSphere Liberty and Open Liberty on Azure Red Hat OpenShift (Wdrażanie oprogramowania IBM WebSphere Liberty i Open Liberty w usłudze Azure Red Hat OpenShift).

Ten artykuł ma pomóc w szybkim rozpoczęciu wdrażania. Przed przejściem do środowiska produkcyjnego należy zapoznać się z tematem Tuning Liberty.

Ważne

Chociaż usługa Azure Red Hat OpenShift jest wspólnie zaprojektowana, obsługiwana i obsługiwana przez firmę Red Hat i Microsoft w celu zapewnienia zintegrowanego środowiska pomocy technicznej, oprogramowanie uruchamiane na platformie Azure Red Hat OpenShift, w tym opisane w tym artykule, podlega własnym warunkom pomocy technicznej i postanowień licencyjnych. Aby uzyskać więcej informacji o obsłudze usługi Azure Red Hat OpenShift, zobacz Cykl życia pomocy technicznej dla usługi Azure Red Hat OpenShift 4. Aby uzyskać więcej informacji o obsłudze oprogramowania opisanego w tym artykule, zobacz strony główne dotyczące tego oprogramowania zgodnie z opisem w artykule.

Wymagania wstępne

Uwaga

Usługa Azure Red Hat OpenShift wymaga co najmniej 40 rdzeni do utworzenia i uruchomienia klastra OpenShift. Domyślny limit przydziału zasobów platformy Azure dla nowej subskrypcji platformy Azure nie spełnia tego wymagania. Aby zażądać zwiększenia limitu zasobów, zobacz Limit przydziału w warstwie Standardowa: Zwiększanie limitów według serii maszyn wirtualnych. Pamiętaj, że subskrypcja bezpłatnej wersji próbnej nie kwalifikuje się do zwiększenia limitu przydziału, uaktualnij subskrypcję do subskrypcji z płatnością zgodnie z rzeczywistym użyciem przed zażądaniem zwiększenia limitu przydziału.

Wykonaj następujące wymagania wstępne, aby pomyślnie użyć tego przewodnika.

  1. Przygotuj maszynę lokalną z zainstalowanym systemem operacyjnym przypominającym system Unix (na przykład Ubuntu, macOS).

  2. Zainstaluj implementację środowiska Java SE w wersji 17 lub nowszej (na przykład Eclipse Open J9).

  3. Zainstaluj program Maven w wersji 3.5.0 lub nowszej.

  4. Zainstaluj platformę Docker dla systemu operacyjnego.

  5. Zainstaluj interfejs wiersza polecenia platformy Azure w wersji 2.0.75 lub nowszej.

  6. Sprawdź i zainstaluj envsubst , czy nie jest on wstępnie zainstalowany w systemie operacyjnym.

  7. Sklonuj kod dla tego przykładu w systemie lokalnym. Przykład znajduje się w witrynie GitHub.

  8. Postępuj zgodnie z instrukcjami w artykule Create an Azure Red Hat OpenShift 4 cluster (Tworzenie klastra usługi Azure Red Hat OpenShift 4).

    Chociaż krok "Pobierz wpis tajny ściągnięcia red hat" jest oznaczony jako opcjonalny, jest wymagany w tym artykule. Wpis tajny ściągania umożliwia klastrowi usługi Azure Red Hat OpenShift znalezienie operatora Open Liberty.

    Jeśli planujesz uruchamianie aplikacji intensywnie korzystających z pamięci w klastrze, określ odpowiedni rozmiar maszyny wirtualnej dla węzłów procesu roboczego przy użyciu parametru --worker-vm-size . Na przykład Standard_E4s_v3 jest to minimalny rozmiar maszyny wirtualnej do zainstalowania operatora Elasticsearch w klastrze. Aby uzyskać więcej informacji, zobacz:

  9. Połączenie do klastra, wykonując kroki opisane w artykule Połączenie do klastra usługi Azure Red Hat OpenShift 4.

    • Pamiętaj, aby wykonać kroki opisane w artykule "Instalowanie interfejsu wiersza polecenia platformy OpenShift", ponieważ w dalszej części tego artykułu użyjemy oc polecenia .
    • Zapisz adres URL konsoli klastra. Powinien wyglądać następująco: https://console-openshift-console.apps.<random>.<region>.aroapp.io/.
    • Zanotuj kubeadmin poświadczenia.
    • Pamiętaj, aby wykonać kroki opisane w temacie "Połączenie using the OpenShift CLI" with the credentials (Używanie interfejsu wiersza polecenia platformy OpenShift) z kubeadmin poświadczeniami.

Instalowanie operatora Open Liberty OpenShift

Po utworzeniu i nawiązaniu połączenia z klastrem zainstaluj operator Open Liberty. Główna strona początkowa operatora Open Liberty znajduje się w witrynie GitHub.

  1. Zaloguj się do konsoli internetowej openShift z przeglądarki przy użyciu kubeadmin poświadczeń.

  2. Przejdź do pozycji Operator OperatorHub> i wyszukaj ciąg Open Liberty.

  3. Wybierz pozycję Otwórz wolność w wynikach wyszukiwania.

  4. Wybierz Zainstaluj.

  5. Na stronie Operator instalacji sprawdź wersję 1.2 dla kanału aktualizacji, Wszystkie przestrzenie nazw w klastrze (ustawienie domyślne) dla trybu instalacji i Automatyczne w celu zatwierdzenia aktualizacji:

    Zrzut ekranu przedstawiający tworzenie subskrypcji operatora dla operatora Open Liberty.

  6. Wybierz pozycję Zainstaluj i zaczekaj minutę lub dwie, aż instalacja zostanie ukończona.

  7. Sprawdź, czy operator Open Liberty jest pomyślnie zainstalowany i gotowy do użycia. Jeśli tego nie zrobisz, zdiagnozuj i rozwiąż problem przed kontynuowaniem.

    Zainstalowane operatory z wyświetloną pozycją Open Liberty są zainstalowane.

Tworzenie przestrzeni nazw OpenShift dla aplikacji Java

Wykonaj następujące kroki, aby utworzyć przestrzeń nazw openShift do użycia z aplikacją:

  1. Upewnij się, że zalogowano się do konsoli internetowej openShift z przeglądarki przy użyciu kubeadmin poświadczeń.

  2. Przejdź do obszaru Administracja istration>Przestrzenie>nazw Utwórz przestrzeń nazw.

  3. open-liberty-demoWypełnij pola Nazwa i wybierz pozycję Utwórz, jak pokazano poniżej.

    Zrzut ekranu przedstawiający tworzenie przestrzeni nazw.

Tworzenie usługi Azure Database for MySQL

Wykonaj poniższe kroki, aby skonfigurować usługę Azure Database for MySQL do użycia z aplikacją. Jeśli aplikacja nie wymaga bazy danych, możesz pominąć tę sekcję.

  1. Utwórz serwer elastyczny usługi Azure Database for MySQL, wykonując kroki opisane w artykule Szybki start: tworzenie usługi Azure Database for MySQL — serwer elastyczny przy użyciu witryny Azure Portal. Wróć do tego dokumentu po utworzeniu bazy danych.

    Uwaga

    W kroku Podstawowe zapisz wartości Nazwa serwera.mysql.database.azure.com, nazwa użytkownika Administracja i Hasło.

  2. Po utworzeniu bazy danych otwórz sieć bazy danych>.

    1. W obszarze Dostęp publiczny upewnij się, że wybrano opcję Zezwalaj na publiczny dostęp do tego zasobu za pośrednictwem Internetu przy użyciu publicznego adresu IP.
    2. Wybierz pozycję Zezwalaj na dostęp publiczny z dowolnej usługi platformy Azure na platformie Azure do tego serwera.
    3. Upewnij się, że adres IPv4 klienta znajduje się na liście dozwolonych reguł zapory.

    Zrzut ekranu przedstawiający konfigurowanie sieci bazy danych mysql.

  3. Otwórz bazę danych> Połączenie> wybierz Połączenie z aplikacji>JDBC. Zapisz numer portu po adresie serwera bazy danych. Na przykład 3306 jest numerem portu w poniższym przykładzie.

    String url="jdbc:mysql://<Server name>.mysql.database.azure.com:3306/{your_database}?useSSL=true";myDbConn=DriverManager.getConnection(url, "<Server admin username>", "{your_password}");
    
  4. Otwórz bazy danych>Wybierz> pozycję Dodaj. Wypełnij wartość w polu Nazwa i wybierz pozycję Zapisz , aby utworzyć nową bazę danych. Ta baza danych ma typ schematu jako użytkownik i jest używana dla aplikacji później.

    Uwaga

    Zapisz nazwę utworzonej bazy danych.

Przygotowywanie aplikacji Liberty

Jako przykład w tym przewodniku używamy aplikacji Java EE 8. Open Liberty to pełny serwer zgodny z profilem Java EE 8, dzięki czemu można łatwo uruchomić aplikację. Open Liberty jest również zgodny z pełnym profilem Dżakarta EE 8.

Uruchamianie aplikacji na platformie Open Liberty

Aby uruchomić aplikację na platformie Open Liberty, należy utworzyć plik konfiguracji serwera Open Liberty, aby wtyczka Liberty Maven mogła spakować aplikację do wdrożenia. Wtyczka Liberty Maven nie jest wymagana do wdrożenia aplikacji w usłudze OpenShift. Jednak w tym przykładzie używamy go w trybie deweloperskim (deweloperskim) platformy Open Liberty. Tryb dewelopera umożliwia łatwe uruchamianie aplikacji lokalnie. Aby dowiedzieć się więcej na temat programu liberty-maven-plugin, zobacz Tworzenie aplikacji internetowej za pomocą narzędzia Maven.

Wykonaj kroki opisane w tej sekcji, aby przygotować przykładową aplikację do późniejszego użycia w tym artykule. W tych krokach są używane narzędzia Maven i liberty-maven-plugin.

Wyewidencjonowywanie aplikacji

Sklonuj przykładowy kod dla tego przewodnika. Przykład znajduje się w witrynie GitHub.

git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
git checkout 20231026

Jeśli zostanie wyświetlony komunikat o stanie "odłączony HEAD", ten komunikat jest bezpieczny do zignorowania. Oznacza to, że wyewidencjonowaliśmy tag.

W repozytorium znajduje się kilka przykładów. Używamy open-liberty-on-aro/3-integration/connect-db/mysql. Oto struktura plików aplikacji:

open-liberty-on-aro/3-integration/connect-db/mysql
├─ src/main/
│  ├─ aro/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication.yaml
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml

Katalogi java, zasoby i aplikacja internetowa zawierają kod źródłowy przykładowej aplikacji. Kod deklaruje i używa źródła danych o nazwie jdbc/JavaEECafeDB.

W katalogu aro umieściliśmy dwa pliki wdrożenia. db-secret.xml służy do tworzenia wpisów tajnych przy użyciu poświadczeń połączenia z bazą danych. Plik openlibertyapplication.yaml służy do wdrażania obrazu aplikacji.

W katalogu głównym umieściliśmy dwa pliki Dockerfile. Pliki Dockerfile i Dockerfile-wlp są używane do debugowania lokalnego i do kompilowania obrazu na potrzeby wdrożenia usługi Azure Red Hat OpenShift, współpracując odpowiednio z platformami Open Liberty i WebSphere Liberty.

W katalogu liberty/config server.xml służy do konfigurowania połączenia bazy danych dla klastra Open Liberty i WebSphere Liberty.

Kompilowanie projektu

Po zebraniu niezbędnych właściwości możesz skompilować aplikację. Plik POM dla projektu odczytuje wiele właściwości ze środowiska.

cd <path-to-your-repo>/open-liberty-on-aro/3-integration/connect-db/mysql

# The following variables are used for deployment file generation
export DB_SERVER_NAME=<Server name>.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=<Database name>
export DB_USER=<Server admin username>
export DB_PASSWORD=<Server admin password>
export NAMESPACE=open-liberty-demo

mvn clean install

Testowanie aplikacji lokalnie

Użyj polecenia , liberty:devc aby uruchomić i przetestować projekt lokalnie przed rozpoczęciem pracy z dowolną złożonością platformy Azure. Aby uzyskać więcej informacji na liberty:devctemat programu , zobacz dokumentację wtyczki Liberty.

  1. Uruchom lokalne środowisko platformy Docker, jeśli jeszcze tego nie zrobiono. Instrukcje dotyczące tego działania różnią się w zależności od systemu operacyjnego hosta.

  2. Uruchamianie aplikacji w liberty:devc trybie

    cd <path-to-your-repo>/open-liberty-on-aro/3-integration/connect-db/mysql
    
    # If you are running with Open Liberty
    mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile
    
    # If you are running with WebSphere Liberty
    mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile-wlp
    
  3. Sprawdź, czy aplikacja działa zgodnie z oczekiwaniami. W przypadku powodzenia powinien zostać wyświetlony komunikat podobny do [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. w danych wyjściowych polecenia. Przejdź do https://localhost:9443/ witryny w przeglądarce i sprawdź, czy aplikacja jest dostępna, a wszystkie funkcje działają.

  4. Naciśnij klawisze Control+C, aby zatrzymać liberty:devc tryb.

Przygotowywanie obrazu aplikacji

Aby wdrożyć i uruchomić aplikację Liberty w klastrze usługi Azure Red Hat OpenShift 4, konteneryzuj aplikację jako obraz platformy Docker przy użyciu obrazów kontenerów Open Liberty lub obrazów kontenerów WebSphere Liberty.

Wykonaj następujące kroki, aby skompilować obraz aplikacji:

Kompilowanie aplikacji i wypychanie do strumienia obrazu

Ponieważ aplikacja została już pomyślnie uruchomiona w kontenerze Liberty Docker, utworzysz obraz zdalnie w klastrze, wykonując następujące polecenia.

  1. Upewnij się, że zalogowano się już do interfejsu wiersza polecenia platformy OpenShift przy użyciu kubeadmin poświadczeń.

  2. Zidentyfikuj katalog źródłowy i plik Dockerfile.

    cd <path-to-your-repo>/open-liberty-on-aro/3-integration/connect-db/mysql
    
    # Fetch maven artifactId as image name, maven build version as image version
    export IMAGE_NAME=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' --non-recursive exec:exec)
    export IMAGE_VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
    
    # If you are building with Open Liberty base image, the existing Dockerfile is ready for you
    
    # If you are building with WebSphere Liberty base image, uncomment and execute the following two commands to rename Dockerfile-wlp to Dockerfile
    # mv Dockerfile Dockerfile.backup
    # mv Dockerfile-wlp Dockerfile
    
  3. Zmień projekt na "open-liberty-demo"

    oc project open-liberty-demo
    
  4. Tworzenie strumienia obrazów.

    oc create imagestream ${IMAGE_NAME}
    
  5. Utwórz konfigurację kompilacji, która określa tag strumienia obrazu danych wyjściowych kompilacji.

    oc new-build --name ${IMAGE_NAME}-config --binary --strategy docker --to ${IMAGE_NAME}:${IMAGE_VERSION}
    
  6. Uruchom kompilację, aby przekazać zawartość lokalną, konteneryzować i dane wyjściowe do tagu strumienia obrazu określonego wcześniej.

    oc start-build ${IMAGE_NAME}-config --from-dir . --follow
    

Wdrażanie aplikacji w klastrze usługi Azure Red Hat OpenShift 4

Teraz możesz wdrożyć przykładową aplikację Liberty w klastrze usługi Azure Red Hat OpenShift 4 utworzonym wcześniej podczas pracy z wymaganiami wstępnymi.

Wdrażanie aplikacji z poziomu konsoli sieci Web

Ponieważ używamy operatora Open Liberty do zarządzania aplikacjami Liberty, musimy utworzyć wystąpienie niestandardowej definicji zasobów typu OpenLibertyApplication. Operator zajmuje się wszystkimi aspektami zarządzania zasobami openShift wymaganymi do wdrożenia.

  1. Zaloguj się do konsoli internetowej openShift z przeglądarki przy użyciu kubeadmin poświadczeń.

  2. Rozwiń węzeł Strona główna, wybierz pozycję Projekty>open-liberty-demo.

  3. Przejdź do pozycji Operatory zainstalowane operatory>.

  4. W środku strony wybierz pozycję Otwórz wolność.

  5. W obszarze Udostępnione interfejsy API wybierz pozycję OpenLibertyApplication. Nawigacja elementów w interfejsie użytkownika odzwierciedla rzeczywistą hierarchię zawierania używanych technologii.

    Diagram zawierania języka Java w usłudze Azure Red Hat OpenShift.

  6. Wybierz pozycję Utwórz plik OpenLibertyApplication.

  7. Wybierz widok YAML dla pozycji Konfiguruj za pośrednictwem.

  8. Zastąp wygenerowany plik yaml elementem yours, który znajduje się w folderze <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.

  9. Wybierz pozycję Utwórz. Zostanie wyświetlona lista aplikacji OpenLibertyApplications.

  10. Przejdź do pozycji Wpisy tajne obciążeń>.

  11. Wybierz pozycję Utwórz> z YAML.

  12. Zastąp wygenerowany plik yaml elementem yours, który znajduje się w <lokalizacji path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml.

  13. Wybierz pozycję Utwórz. Wrócisz do strony Szczegóły wpisu tajnego.

  14. Przejdź do pozycji Operatory Zainstalowane operatory>>Otwórz Liberty>OpenLibertyApplication.

  15. Wybierz pozycję javaee-café-mysql.

  16. W środku strony wybierz pozycję Zasoby.

  17. W tabeli wybierz link javaee-café-mysql z typem Trasy.

  18. Na stronie, która zostanie otwarta, wybierz link poniżej lokalizacji.

Zostanie wyświetlona strona główna aplikacji otwarta w przeglądarce.

Usuwanie aplikacji z konsoli sieci Web

Po zakończeniu pracy z aplikacją wykonaj następujące kroki, aby usunąć aplikację z funkcji Open Shift.

  1. W okienku nawigacji po lewej stronie rozwiń wpis Operatory.
  2. Wybierz pozycję Zainstalowane operatory.
  3. Wybierz pozycję Otwórz wolność.
  4. W środku strony wybierz pozycję OpenLibertyApplication.
  5. W obszarze javaee-café-mysql wybierz wielokropek pionowy (trzy pionowe kropki), a następnie wybierz pozycję Usuń OpenLibertyApplication.
  6. Wybierz pozycję Usuń , aby usunąć aplikację.

Wykonaj następujące kroki, aby usunąć wpis tajny z funkcji Open Shift.

  1. Przejdź do pozycji Wpisy tajne obciążeń>.
  2. Wybierz pozycję db-secret-mysql.
  3. Wybierz pozycję Akcje>Usuń wpis tajny.
  4. Wybierz pozycję Usuń , aby usunąć wpis tajny.

Czyszczenie zasobów

Usuń klaster usługi Azure Red Hat OpenShift, wykonując kroki opisane w artykule Samouczek: usuwanie klastra usługi Azure Red Hat OpenShift 4

Następne kroki

W tym przewodniku przedstawiono sposób wykonywania następujących instrukcji:

  • Przygotowywanie aplikacji Liberty
  • Kompilowanie obrazu aplikacji
  • Uruchamianie konteneryzowanej aplikacji w klastrze usługi Azure Red Hat OpenShift 4 przy użyciu graficznego interfejsu użytkownika i interfejsu wiersza polecenia

Więcej informacji można dowiedzieć się z odwołań używanych w tym przewodniku: