Wdrażanie aplikacji Java przy użyciu serwera WebLogic w klastrze usługi Azure Kubernetes Service (AKS)

W tym artykule pokazano, jak:

  • Uruchom środowisko Java, Java EE lub Jakarta EE na serwerze Oracle WebLogic Server (WLS).
  • Utwórz klaster WLS przy użyciu oferty witryny Azure Marketplace.
  • Skompiluj obraz platformy Docker aplikacji, aby służyć jako obraz pomocniczy w celu udostępnienia modeli i aplikacji webLogic Deploy Tooling (WDT).
  • Wdróż konteneryzowaną aplikację w istniejącym klastrze WLS w usłudze AKS z połączeniem z usługą Microsoft Azure SQL.

W tym artykule do przyspieszenia podróży do usługi AKS używana jest oferta witryny Azure Marketplace dla usług WLS. Oferta automatycznie aprowizuje kilka zasobów platformy Azure, w tym następujące zasoby:

  • Wystąpienie usługi Azure Container Registry
  • Klaster usługi AKS
  • Wystąpienie kontrolera ruchu przychodzącego bramy aplikacja systemu Azure (AGIC)
  • The WebLogic Operator
  • Obraz kontenera, w tym środowisko uruchomieniowe WebLogic
  • Klaster WLS bez aplikacji

Następnie w tym artykule przedstawiono tworzenie obrazu pomocniczego krok po kroku w celu zaktualizowania istniejącego klastra WLS. Obraz pomocniczy udostępnia modele aplikacji i WDT.

Aby uzyskać pełną automatyzację, możesz wybrać aplikację i skonfigurować połączenie źródła danych z witryny Azure Portal przed wdrożeniem oferty. Aby wyświetlić ofertę, odwiedź witrynę Azure Portal.

Aby uzyskać szczegółowe wskazówki dotyczące konfigurowania serwera WebLogic w usłudze Azure Kubernetes Service, zobacz oficjalną dokumentację firmy Oracle w usłudze Azure Kubernetes Service.

Wymagania wstępne

  • Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
  • Upewnij się, że tożsamość platformy Azure używana do logowania się i ukończenie tego artykułu ma rolę Właściciel w bieżącej subskrypcji lub współautora i dostępu użytkowników Administracja istrator ról w bieżącej subskrypcji. Aby zapoznać się z omówieniem ról platformy Azure, zobacz Co to jest kontrola dostępu oparta na rolach platformy Azure (Azure RBAC)? Aby uzyskać szczegółowe informacje na temat określonych ról wymaganych przez usługę WLS w usłudze AKS, zobacz Role wbudowane platformy Azure.
  • Poświadczenia dla konta logowania jednokrotnego (SSO) oracle. Aby je utworzyć, zobacz Tworzenie konta Oracle.
  • Zaakceptuj postanowienia licencyjne dotyczące usługi WLS.
    • Odwiedź usługę Oracle Container Registry i zaloguj się.
    • Jeśli masz uprawnienie do pomocy technicznej, wybierz pozycję Oprogramowanie pośredniczące, a następnie wyszukaj i wybierz pozycję weblogic_cpu.
    • Jeśli nie masz uprawnień do pomocy technicznej w programie Oracle, wybierz pozycję Oprogramowanie pośredniczące, a następnie wyszukaj i wybierz pozycję weblogic.

      Uwaga

      Uzyskaj uprawnienie do pomocy technicznej od firmy Oracle przed przejściem do środowiska produkcyjnego. Niepowodzenie w tym celu powoduje uruchomienie niezabezpieczonych obrazów, które nie są poprawiane pod kątem krytycznych wad zabezpieczeń. Aby uzyskać więcej informacji na temat aktualizacji poprawek krytycznych firmy Oracle, zobacz Krytyczne poprawki Aktualizacje, Alerty zabezpieczeń i biuletyny firmy Oracle.

    • Zaakceptuj umowę licencyjną.
  • Przygotuj maszynę lokalną z zainstalowanym systemem operacyjnym przypominającym system Unix (na przykład Ubuntu, Azure Linux, macOS, Podsystem Windows dla systemu Linux).
    • Interfejs wiersza polecenia platformy Azure. Użyj polecenia az --version , aby sprawdzić, czy polecenie az works. Ten dokument został przetestowany w wersji 2.55.1.
    • Platforma Docker Ten dokument został przetestowany przy użyciu platformy Docker w wersji 20.10.7. Użyj polecenia docker info , aby sprawdzić, czy demon platformy Docker jest uruchomiony.
    • kubectl. Użyj polecenia kubectl version , aby sprawdzić, czy narzędzie kubectl działa. Ten dokument został przetestowany z wersją 1.21.2.
    • Zestaw Java JDK zgodny z wersją systemu WLS, którą zamierzasz uruchomić. Ten artykuł kieruje Cię do zainstalowania wersji systemu WLS korzystającej z zestawu JDK 11. Platforma Azure zaleca korzystanie z pakietu Microsoft Build zestawu OpenJDK. Upewnij się, że JAVA_HOME zmienna środowiskowa jest poprawnie ustawiona w powłokach, w których uruchamiasz polecenia.
    • Maven 3.5.0 lub nowszy.
    • Upewnij się, że masz zainstalowane narzędzie zip/unzip. Użyj polecenia zip/unzip -v , aby sprawdzić, czy zip/unzip działa.
  • Wszystkie kroki opisane w tym artykule, z wyjątkiem tych, które dotyczą platformy Docker, można również wykonać w usłudze Azure Cloud Shell. Aby dowiedzieć się więcej o usłudze Azure Cloud Shell, zobacz Co to jest usługa Azure Cloud Shell?

Wdrażanie zabezpieczeń WLS w usłudze AKS

Kroki opisane w tej sekcji umożliwiają wdrożenie zabezpieczeń WLS w usłudze AKS w najprostszy możliwy sposób. Usługa WLS w usłudze AKS oferuje szeroki i szeroki wybór integracji platformy Azure. Aby uzyskać więcej informacji, zobacz Co to są rozwiązania dotyczące uruchamiania serwera Oracle WebLogic w usłudze Azure Kubernetes Service?

W poniższych krokach pokazano, jak znaleźć ofertę WLS w usłudze AKS i wypełnić okienko Podstawy .

  1. Na pasku wyszukiwania w górnej części witryny Azure Portal wprowadź ciąg weblogic. W wynikach wyszukiwania sugerowanych automatycznie w sekcji Marketplace wybierz pozycję Serwer WebLogic w usłudze AKS.

    Zrzut ekranu witryny Azure Portal przedstawiający usługę WLS w wynikach wyszukiwania.

    Możesz również przejść bezpośrednio do serwera WebLogic w ofercie usługi AKS .

  2. Na stronie oferty wybierz pozycję Utwórz.

  3. W okienku Podstawowe upewnij się, że wartość wyświetlana w polu Subskrypcja jest taka sama, do której zalogowano się na platformie Azure. Upewnij się, że masz role wymienione w sekcji wymagań wstępnych.

    Zrzut ekranu witryny Azure Portal przedstawiający serwer WebLogic w usłudze AKS.

  4. Należy wdrożyć ofertę w pustej grupie zasobów. W polu Grupa zasobów wybierz pozycję Utwórz nową, a następnie wypełnij wartość dla grupy zasobów. Ponieważ grupy zasobów muszą być unikatowe w ramach subskrypcji, wybierz unikatową nazwę. Łatwym sposobem na używanie unikatowych nazw jest użycie kombinacji inicjałów, dzisiejszej daty i identyfikatora — na przykład ejb0723wls.

  5. W obszarze Szczegóły wystąpienia wybierz region wdrożenia. Aby uzyskać listę regionów świadczenia usługi Azure, w których usługa AKS jest dostępna, zobacz Dostępność regionów usługi AKS.

  6. W obszarze Credentials for WebLogic (Poświadczenia dla serwera WebLogic) pozostaw wartość domyślną pola Username for WebLogic Administracja istrator.

  7. wlsAksCluster2022Wprowadź hasło dla Administracja istratora WebLogic. Użyj tej samej wartości dla pól potwierdzenia i hasła dla pól szyfrowania modelu WebLogic.

  8. Przewiń do dołu okienka Podstawy i zwróć uwagę na przydatne linki do dokumentacji, pomocy technicznej społeczności i sposobu zgłaszania problemów.

  9. Wybierz Dalej.

W poniższych krokach pokazano, jak rozpocząć proces wdrażania.

  1. Przewiń do sekcji z etykietą Provide an Oracle Single Sign-On (SSO) account (Zapewnianie konta logowania jednokrotnego Oracle). Wypełnij poświadczenia logowania jednokrotnego Oracle z warunków wstępnych.

    Zrzut ekranu witryny Azure Portal przedstawiający skonfigurowane okienko logowania jednokrotnego.

  2. Wykonaj kroki opisane w polu informacyjnym, zaczynając od pozycji Przed przejściem do przodu, musisz zaakceptować standardowe warunki i ograniczenia oracle.

  3. W zależności od tego, czy konto logowania jednokrotnego Oracle ma uprawnienie do obsługi oracle, wybierz odpowiednią opcję dla pozycji Wybierz typ obrazów serwera WebLogic. Jeśli konto ma uprawnienie do pomocy technicznej, wybierz pozycję Patched WebLogic Server Images (Poprawione obrazy serwera WebLogic). W przeciwnym razie wybierz pozycję Ogólne obrazy serwera WebLogic.

  4. Pozostaw wartość w polu Wybierz żądaną kombinację serwera WebLogic... w wartości domyślnej. Masz szeroką gamę opcji dla systemów WLS, JDK i OS.

  5. W sekcji Aplikacja obok pozycji Wdróż aplikację? wybierz pozycję Nie.

Poniższe kroki sprawiają, że konsola administracyjna usługi WLS i przykładowa aplikacja są uwidocznione w publicznym Internecie z wbudowanym dodatkiem ruchu przychodzącego usługi Application Gateway. Aby uzyskać więcej informacji, zobacz Co to jest kontroler ruchu przychodzącego usługi Application Gateway?

Zrzut ekranu witryny Azure Portal przedstawiający najprostszą możliwą konfigurację modułu równoważenia obciążenia na stronie Tworzenie serwera Oracle WebLogic w usłudze Azure Kubernetes Service.

  1. Wybierz pozycję Dalej , aby wyświetlić okienko TLS/SSL .

  2. Wybierz pozycję Dalej , aby wyświetlić okienko Równoważenie obciążenia.

  3. Obok pozycji Opcje równoważenia obciążenia wybierz pozycję Kontroler ruchu przychodzącego usługi Application Gateway.

  4. W obszarze Kontroler ruchu przychodzącego usługi Application Gateway powinny zostać wyświetlone wszystkie pola wstępnie wypełnione wartościami domyślnymi dla sieci wirtualnej i podsieci. Pozostaw wartości domyślne.

  5. W obszarze Create ingress for Administracja istration Console (Utwórz ruch przychodzący dla konsoli Administracja istration) wybierz pozycję Tak.

    Zrzut ekranu witryny Azure Portal przedstawiający konfigurację kontrolera ruchu przychodzącego usługi Application Gateway na stronie Tworzenie serwera Oracle WebLogic w usłudze Azure Kubernetes Service.

  6. Pozostaw wartości domyślne dla innych pól.

  7. Wybierz pozycję Przejrzyj i utwórz. Upewnij się, że walidacja nie zakończy się niepowodzeniem. Jeśli zakończy się to niepowodzeniem, rozwiąż wszelkie problemy z walidacją, a następnie ponownie wybierz pozycję Przejrzyj i utwórz .

  8. Wybierz pozycję Utwórz.

  9. Śledzenie postępu wdrażania na stronie Wdrażanie jest w toku .

W zależności od warunków sieciowych i innych działań w wybranym regionie wdrożenie może potrwać do 50 minut.

Możesz wykonać kroki opisane w sekcji Tworzenie bazy danych Azure SQL Database podczas oczekiwania. Wróć do tej sekcji po zakończeniu tworzenia bazy danych.

Sprawdzanie danych wyjściowych wdrożenia

Wykonaj kroki opisane w tej sekcji, aby sprawdzić, czy wdrożenie zakończyło się pomyślnie.

Jeśli nastąpi przejście z dala od strony Wdrożenie jest w toku , poniższe kroki pokazują, jak wrócić do tej strony. Jeśli nadal znajdujesz się na stronie z wyświetlonym komunikatem Wdrożenie zostało ukończone, możesz przejść do kroku 5 po następnym zrzucie ekranu.

  1. W rogu dowolnej strony witryny Azure Portal wybierz menu typu hamburger i wybierz pozycję Grupy zasobów.

  2. W polu z tekstem Filtr dla dowolnego pola wprowadź kilka pierwszych znaków utworzonej wcześniej grupy zasobów. Jeśli wykonano zalecaną konwencję, wprowadź swoje inicjały, a następnie wybierz odpowiednią grupę zasobów.

  3. W okienku nawigacji w sekcji Ustawienia wybierz pozycję Wdrożenia. Zostanie wyświetlona uporządkowana lista wdrożeń w tej grupie zasobów z najnowszą.

  4. Przewiń do najstarszego wpisu na tej liście. Ten wpis odpowiada wdrożeniu rozpoczętym w poprzedniej sekcji. Wybierz najstarsze wdrożenie, jak pokazano na poniższym zrzucie ekranu.

    Zrzut ekranu witryny Azure Portal przedstawiający listę wdrożeń grup zasobów.

  5. W okienku nawigacji wybierz pozycję Dane wyjściowe. Ta lista zawiera wartości wyjściowe z wdrożenia. Przydatne informacje są zawarte w danych wyjściowych.

  6. Wartość adminConsoleExternalUrl to w pełni kwalifikowany, publiczny link widoczny w Internecie do konsoli administracyjnej usługi WLS dla tego klastra usługi AKS. Wybierz ikonę kopiowania obok wartości pola, aby skopiować link do schowka. Zapisz tę wartość na bok później.

  7. Wartość clusterExternalUrl to w pełni kwalifikowany, publiczny link widoczny w Internecie do przykładowej aplikacji wdrożonej w usłudze WLS w tym klastrze usługi AKS. Wybierz ikonę kopiowania obok wartości pola, aby skopiować link do schowka. Zapisz tę wartość na bok później.

  8. ShellCmdtoOutputWlsImageModelYaml jest ciągiem base64 modelu WDT wbudowanym w obraz kontenera. Zapisz tę wartość na bok później.

  9. Wartość shellCmdtoOutputWlsImageProperties jest ciągiem base64 właściwości modelu WDT wbudowanym w obraz kontenera. Zapisz tę wartość na bok później.

  10. Wartość shellCmdto Połączenie Aks to polecenie interfejsu wiersza polecenia platformy Azure służące do łączenia się z tym konkretnym klastrem usługi AKS. kubectl Umożliwia to administrowanie klastrem.

Inne wartości w danych wyjściowych wykraczają poza zakres tego artykułu, ale zostały szczegółowo wyjaśnione w podręczniku użytkownika aplikacji WebLogic w usłudze AKS.

Tworzenie bazy danych SQL platformy Azure

Aby utworzyć pojedynczą bazę danych usługi Azure SQL Database do użycia z aplikacją, wykonaj kroki opisane w przewodniku Szybki start: tworzenie pojedynczej bazy danych w usłudze Azure SQL Database. Uważnie zanotuj następujące różnice:

  • W kroku Podstawowe zapisz wartości dla grupy zasobów, nazwy bazy danych, <nazwy> serwera.database.windows.net, identyfikatora logowania administratora serwera i hasła. W tym artykule opisano wartość grupy zasobów bazy danych jako <db-resource-group>.

  • W kroku Sieć ustaw metodę Połączenie ivity na Publiczny punkt końcowy, ustaw opcję Zezwalaj usługom i zasobom platformy Azure na dostęp do tego serwera na wartość Tak, a następnie ustaw pozycję Dodaj bieżący adres IP klienta na Wartość Tak.

    Zrzut ekranu witryny Azure Portal przedstawiający kartę Sieć na stronie Tworzenie bazy danych SQL z wyróżnioną metodą Połączenie ivity i ustawieniami reguł zapory.

Uwaga

Bezserwerowa warstwa obliczeniowa wybrana dla tej bazy danych pozwala zaoszczędzić pieniądze, umieszczając bazę danych w stanie uśpienia w okresach braku aktywności. Przykładowa aplikacja zakończy się niepowodzeniem, jeśli baza danych zostanie uśpiona po uruchomieniu aplikacji.

Aby wymusić wznawianie bazy danych, możesz uruchomić zapytanie przy użyciu edytora zapytań. Wykonaj kroki opisane w artykule Wykonywanie zapytań względem bazy danych. Oto przykładowe zapytanie: SELECT * FROM COFFEE;.

  1. Utwórz schemat dla przykładowej aplikacji. Wykonaj zapytanie względem bazy danych , aby otworzyć okienko Edytor zapytań. Wpisz i uruchom następujące zapytanie:

    CREATE TABLE COFFEE (ID NUMERIC(19) NOT NULL, NAME VARCHAR(255) NULL, PRICE FLOAT(32) NULL, PRIMARY KEY (ID));
    CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT NUMERIC(28) NULL, PRIMARY KEY (SEQ_NAME));
    INSERT INTO SEQUENCE VALUES ('SEQ_GEN',0);
    

    Po pomyślnym uruchomieniu powinien zostać wyświetlony komunikat Zapytanie powiodło się: wiersze, których dotyczy problem: 0. Jeśli ten komunikat nie jest widoczny, przed kontynuowaniem rozwiąż problem i rozwiąż go.

Tworzona jest baza danych, tabele, klaster usługi AKS i klaster WLS. Jeśli chcesz, możesz eksplorować konsolę administracyjną, otwierając przeglądarkę i przechodząc do adresu adminConsoleExternalUrl. Zaloguj się przy użyciu wartości wprowadzonych podczas wdrażania usługi WLS w usłudze AKS.

Możesz kontynuować przygotowywanie usługi AKS do hostowania aplikacji WebLogic.

Konfigurowanie i wdrażanie przykładowej aplikacji

Oferta aprowizuje klaster WLS za pomocą modelu na obrazie. Obecnie klaster WLS nie ma wdrożonej aplikacji.

Ta sekcja aktualizuje klaster WLS, wdrażając przykładową aplikację przy użyciu obrazu pomocniczego.

Wyewidencjonowywanie aplikacji

W tej sekcji sklonujesz przykładowy kod dla tego przewodnika. Przykład znajduje się w witrynie GitHub w repozytorium weblogic-on-azure w folderze javaee/weblogic-café/ . Oto struktura plików aplikacji.

weblogic-cafe
├── pom.xml
└── src
    └── main
        ├── java
        │   └── cafe
        │       ├── model
        │       │   ├── CafeRepository.java
        │       │   └── entity
        │       │       └── Coffee.java
        │       └── web
        │           ├── rest
        │           │   └── CafeResource.java
        │           └── view
        │               └── Cafe.java
        ├── resources
        │   ├── META-INF
        │   │   └── persistence.xml
        │   └── cafe
        │       └── web
        │           ├── messages.properties
        │           └── messages_es.properties
        └── webapp
            ├── WEB-INF
            │   ├── beans.xml
            │   ├── faces-config.xml
            │   └── web.xml
            ├── index.xhtml
            └── resources
                └── components
                    └── inputPrice.xhtml

Użyj następujących poleceń, aby sklonować repozytorium:

cd <parent-directory-to-check-out-sample-code>
export BASE_DIR=$PWD
git clone --single-branch https://github.com/microsoft/weblogic-on-azure.git --branch 20240201 $BASE_DIR/weblogic-on-azure

Jeśli zostanie wyświetlony komunikat o stanie "odłączony HEAD", ten komunikat jest bezpieczny do zignorowania. Oznacza to po prostu wyewidencjonowanie tagu.

Użyj następującego polecenia, aby skompilować plik javaee/weblogic-café/:

mvn clean package --file $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/pom.xml

Pakiet powinien zostać pomyślnie wygenerowany i zlokalizowany w lokalizacji $BASE_DIR/weblogic-on-azure/javaee/weblogic-café/target/weblogic-café.war. Jeśli nie widzisz pakietu, przed kontynuowaniem musisz rozwiązać problem i rozwiązać ten problem.

Tworzenie obrazu pomocniczego przy użyciu platformy Docker

W krokach w tej sekcji pokazano, jak utworzyć obraz pomocniczy. Ten obraz zawiera następujące składniki:

  • Model w plikach modelu obrazów
  • Twoja aplikacja
  • Plik archiwum sterownika JDBC
  • Instalacja narzędzi WebLogic Deploy

Obraz pomocniczy to obraz kontenera platformy Docker zawierający aplikację i konfigurację. Operator Kubernetes WebLogic łączy obraz pomocniczy z domain.spec.image klastrem AKS zawierającym serwer WebLogic, zestaw JDK i system operacyjny. Aby uzyskać więcej informacji na temat obrazów pomocniczych, zobacz Obrazy pomocnicze w dokumentacji oracle.

Ta sekcja wymaga terminalu systemu Linux z zainstalowanym interfejsem wiersza polecenia platformy Azure i rozwiązaniem kubectl.

Aby skompilować obraz, wykonaj następujące czynności:

  1. Użyj następujących poleceń, aby utworzyć katalog do przygotowania modeli i aplikacji:

    mkdir -p ${BASE_DIR}/mystaging/models
    cd ${BASE_DIR}/mystaging/models
    
  2. Skopiuj wartość shellCmdtoOutputWlsImageModelYaml zapisaną z danych wyjściowych wdrożenia, wklej ją w oknie powłoki Bash i uruchom polecenie. Polecenie powinno wyglądać podobnie do następującego przykładu:

    echo -e IyBDb3B5cmlna...Cgo= | base64 -d > model.yaml
    

    To polecenie tworzy plik ${BASE_DIR}/mystaging/models/model.yaml z zawartością podobną do następującego przykładu:

    # Copyright (c) 2020, 2021, Oracle and/or its affiliates.
    # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
    
    # Based on ./kubernetes/samples/scripts/create-weblogic-domain/model-in-image/model-images/model-in-image__WLS-v1/model.10.yaml
    # in https://github.com/oracle/weblogic-kubernetes-operator.
    
    domainInfo:
      AdminUserName: "@@SECRET:__weblogic-credentials__:username@@"
      AdminPassword: "@@SECRET:__weblogic-credentials__:password@@"
      ServerStartMode: "prod"
    
    topology:
      Name: "@@ENV:CUSTOM_DOMAIN_NAME@@"
      ProductionModeEnabled: true
      AdminServerName: "admin-server"
      Cluster:
        "cluster-1":
          DynamicServers:
            ServerTemplate: "cluster-1-template"
            ServerNamePrefix: "@@ENV:MANAGED_SERVER_PREFIX@@"
            DynamicClusterSize: "@@PROP:CLUSTER_SIZE@@"
            MaxDynamicClusterSize: "@@PROP:CLUSTER_SIZE@@"
            MinDynamicClusterSize: "0"
            CalculatedListenPorts: false
      Server:
        "admin-server":
          ListenPort: 7001
      ServerTemplate:
        "cluster-1-template":
          Cluster: "cluster-1"
          ListenPort: 8001
      SecurityConfiguration:
        NodeManagerUsername: "@@SECRET:__weblogic-credentials__:username@@"
        NodeManagerPasswordEncrypted: "@@SECRET:__weblogic-credentials__:password@@"
    
    resources:
      SelfTuning:
        MinThreadsConstraint:
          SampleMinThreads:
            Target: "cluster-1"
            Count: 1
        MaxThreadsConstraint:
          SampleMaxThreads:
            Target: "cluster-1"
            Count: 10
        WorkManager:
          SampleWM:
            Target: "cluster-1"
            MinThreadsConstraint: "SampleMinThreads"
            MaxThreadsConstraint: "SampleMaxThreads"
    
  3. W podobny sposób skopiuj wartość shellCmdtoOutputWlsImageProperties , wklej ją w oknie powłoki Bash i uruchom polecenie . Polecenie powinno wyglądać podobnie do następującego przykładu:

    echo -e IyBDb3B5cml...pFPTUK | base64 -d > model.properties
    

    To polecenie tworzy plik ${BASE_DIR}/mystaging/models/model.properties z zawartością podobną do następującego przykładu:

    # Copyright (c) 2021, Oracle Corporation and/or its affiliates.
    # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
    
    # Based on ./kubernetes/samples/scripts/create-weblogic-domain/model-in-image/model-images/model-in-image__WLS-v1/model.10.properties
    # in https://github.com/oracle/weblogic-kubernetes-operator.
    
    CLUSTER_SIZE=5
    
  4. Aby utworzyć plik modelu aplikacji, wykonaj następujące kroki.

    1. Użyj następujących poleceń, aby skopiować plik weblogic-café.war i zapisać go wlsdeploy /applications:

      mkdir -p ${BASE_DIR}/mystaging/models/wlsdeploy/applications
      cp $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/target/weblogic-cafe.war ${BASE_DIR}/mystaging/models/wlsdeploy/applications/weblogic-cafe.war
      
    2. Użyj następujących poleceń, aby utworzyć plik modelu aplikacji z wyświetloną zawartością. Zapisz plik modelu w lokalizacji ${BASE_DIR}/mystaging/models/appmodel.yaml.

      cat <<EOF >appmodel.yaml
      appDeployments:
        Application:
          weblogic-cafe:
            SourcePath: 'wlsdeploy/applications/weblogic-cafe.war'
            ModuleType: ear
            Target: 'cluster-1'
      EOF
      
  5. Użyj następujących poleceń, aby pobrać i zainstalować sterownik JDBC programu Microsoft SQL Server wlsdeploy /externalJDBCLibraries:

    export DRIVER_VERSION="10.2.1.jre8"
    export MSSQL_DRIVER_URL="https://repo.maven.apache.org/maven2/com/microsoft/sqlserver/mssql-jdbc/${DRIVER_VERSION}/mssql-jdbc-${DRIVER_VERSION}.jar"
    
    mkdir ${BASE_DIR}/mystaging/models/wlsdeploy/externalJDBCLibraries
    curl -m 120 -fL ${MSSQL_DRIVER_URL} -o ${BASE_DIR}/mystaging/models/wlsdeploy/externalJDBCLibraries/mssql-jdbc-${DRIVER_VERSION}.jar
    
  6. Następnie użyj następujących poleceń, aby utworzyć plik modelu połączenia bazy danych z wyświetloną zawartością. Zapisz plik modelu w lokalizacji ${BASE_DIR}/mystaging/models/dbmodel.yaml. Model używa symboli zastępczych (wpisów tajnych sqlserver-secret) dla nazwy użytkownika, hasła i adresu URL bazy danych. Upewnij się, że następujące pola są poprawnie ustawione. Poniższy model nazywa zasób ciągiem jdbc/WebLogicCafeDB.

    Nazwa elementu Pole Wartość
    Nazwa JNDI resources.JDBCSystemResource.<resource-name>.JdbcResource.JDBCDataSourceParams.JNDIName jdbc/WebLogicCafeDB
    Nazwa sterownika resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.DriverName com.microsoft.sqlserver.jdbc.SQLServerDriver
    Adres URL bazy danych resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.URL @@SECRET:sqlserver-secret:url@@
    Hasło bazy danych resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.PasswordEncrypted @@SECRET:sqlserver-secret:password@@
    Nazwa użytkownika bazy danych resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.Properties.user.Value '@@SECRET:sqlserver-secret:user@@'
    cat <<EOF >dbmodel.yaml
    resources:
      JDBCSystemResource:
        jdbc/WebLogicCafeDB:
          Target: 'cluster-1'
          JdbcResource:
            JDBCDataSourceParams:
              JNDIName: [
                jdbc/WebLogicCafeDB
              ]
              GlobalTransactionsProtocol: None
            JDBCDriverParams:
              DriverName: com.microsoft.sqlserver.jdbc.SQLServerDriver
              URL: '@@SECRET:sqlserver-secret:url@@'
              PasswordEncrypted: '@@SECRET:sqlserver-secret:password@@'
              Properties:
                user:
                  Value: '@@SECRET:sqlserver-secret:user@@'
            JDBCConnectionPoolParams:
              TestTableName: SQL SELECT 1
              TestConnectionsOnReserve: true
    EOF
    
  7. Użyj następujących poleceń, aby utworzyć plik archiwum aplikacji, a następnie usunąć folder wlsdeploy , którego nie potrzebujesz już:

    cd ${BASE_DIR}/mystaging/models
    zip -r archive.zip wlsdeploy
    
    rm -f -r wlsdeploy
    
  8. Użyj następujących poleceń, aby pobrać i zainstalować narzędzie WebLogic Deploy Tooling (WDT) w katalogu przejściowym i usunąć jego pliki weblogic-deploy/bin/*.cmd, które nie są używane w środowiskach system UNIX:

    cd ${BASE_DIR}/mystaging
    curl -m 120 -fL https://github.com/oracle/weblogic-deploy-tooling/releases/latest/download/weblogic-deploy.zip -o weblogic-deploy.zip
    
    unzip weblogic-deploy.zip -d .
    rm ./weblogic-deploy/bin/*.cmd
    
  9. Użyj następującego polecenia, aby usunąć instalatora WDT:

    rm weblogic-deploy.zip
    
  10. Użyj następujących poleceń, aby skompilować obraz pomocniczy przy użyciu platformy Docker:

    cd ${BASE_DIR}/mystaging
    cat <<EOF >Dockerfile
    FROM busybox
    ARG AUXILIARY_IMAGE_PATH=/auxiliary
    ARG USER=oracle
    ARG USERID=1000
    ARG GROUP=root
    ENV AUXILIARY_IMAGE_PATH=\${AUXILIARY_IMAGE_PATH}
    RUN adduser -D -u \${USERID} -G \$GROUP \$USER
    # ARG expansion in COPY command's --chown is available in docker version 19.03.1+.
    # For older docker versions, change the Dockerfile to use separate COPY and 'RUN chown' commands.
    COPY --chown=\$USER:\$GROUP ./ \${AUXILIARY_IMAGE_PATH}/
    USER \$USER
    EOF
    
  11. docker buildx build Uruchom polecenie przy użyciu polecenia ${BASE_DIR}/mystaging/Dockerfile, jak pokazano w poniższym przykładzie:

    cd ${BASE_DIR}/mystaging
    docker buildx build --platform linux/amd64 --build-arg AUXILIARY_IMAGE_PATH=/auxiliary --tag model-in-image:WLS-v1 .
    

    Po pomyślnym skompilowania obrazu dane wyjściowe wyglądają podobnie do następującego przykładu:

    [+] Building 12.0s (8/8) FINISHED                                   docker:default
    => [internal] load build definition from Dockerfile                          0.8s
    => => transferring dockerfile: 473B                                          0.0s
    => [internal] load .dockerignore                                             1.1s
    => => transferring context: 2B                                               0.0s
    => [internal] load metadata for docker.io/library/busybox:latest             5.0s
    => [1/3] FROM docker.io/library/busybox@sha256:6d9ac9237a84afe1516540f40a0f  0.0s
    => [internal] load build context                                             0.3s
    => => transferring context: 21.89kB                                          0.0s
    => CACHED [2/3] RUN adduser -D -u 1000 -G root oracle                        0.0s
    => [3/3] COPY --chown=oracle:root ./ /auxiliary/                             1.5s
    => exporting to image                                                        1.3s
    => => exporting layers                                                       1.0s
    => => writing image sha256:2477d502a19dcc0e841630ea567f50d7084782499fe3032a  0.1s
    => => naming to docker.io/library/model-in-image:WLS-v1                      0.2s
    
  12. Jeśli obraz został pomyślnie utworzony, powinien on teraz znajdować się w repozytorium platformy Docker komputera lokalnego. Aby zweryfikować tworzenie obrazu, użyj następującego polecenia:

    docker images model-in-image:WLS-v1
    

    To polecenie powinno wygenerować dane wyjściowe podobne do następującego przykładu:

    REPOSITORY       TAG       IMAGE ID       CREATED       SIZE
    model-in-image   WLS-v1    76abc1afdcc6   2 hours ago   8.61MB
    

    Po utworzeniu obrazu powinny znajdować się pliki wykonywalne WDT w plikach /auxiliary/weblogic-deploy oraz w modelu WDT, właściwości i plikach archiwum w /auxiliary/models. Użyj następującego polecenia na obrazie platformy Docker, aby zweryfikować ten wynik:

    docker run -it --rm model-in-image:WLS-v1 find /auxiliary -maxdepth 2 -type f -print
    

    To polecenie powinno wygenerować dane wyjściowe podobne do następującego przykładu:

    /auxiliary/models/model.properties
    /auxiliary/models/dbmodel.yaml
    /auxiliary/models/model.yaml
    /auxiliary/models/archive.zip
    /auxiliary/models/appmodel.yaml
    /auxiliary/Dockerfile
    /auxiliary/weblogic-deploy/LICENSE.txt
    /auxiliary/weblogic-deploy/VERSION.txt
    
  13. Aby wypchnąć obraz pomocniczy do usługi Azure Container Registry, wykonaj następujące kroki:

    1. Otwórz witrynę Azure Portal i przejdź do grupy zasobów aprowizowanej w sekcji Wdrażanie programu WSL w usłudze AKS .

    2. Wybierz zasób typu Rejestr kontenerów z listy zasobów.

    3. Umieść kursor myszy na wartości obok pozycji Serwer logowania i wybierz ikonę kopiowania obok tekstu.

    4. Zapisz wartość w zmiennej środowiskowej ACR_LOGIN_SERVER przy użyciu następującego polecenia:

      export ACR_LOGIN_SERVER=<value-from-clipboard>
      
    5. Uruchom następujące polecenia, aby oznaczyć obraz i wypchnąć go. Przed wykonaniem tych poleceń upewnij się, że platforma Docker jest uruchomiona.

      export ACR_NAME=$(echo ${ACR_LOGIN_SERVER} | cut -d '.' -f 1)
      az acr login -n $ACR_NAME
      docker tag model-in-image:WLS-v1 $ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0
      docker push $ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0
      
    6. Możesz uruchomić polecenie az acr repository show , aby sprawdzić, czy obraz jest wypychany do repozytorium zdalnego, jak pokazano w poniższym przykładzie:

      az acr repository show --name ${ACR_NAME} --image wlsaks-auxiliary-image:1.0
      

      To polecenie powinno wygenerować dane wyjściowe podobne do następującego przykładu:

      {
        "changeableAttributes": {
          "deleteEnabled": true,
          "listEnabled": true,
          "readEnabled": true,
          "writeEnabled": true
        },
        "createdTime": "2024-01-24T06:14:19.4546321Z",
        "digest": "sha256:a1befbefd0181a06c6fe00848e76f1743c1fecba2b42a975e9504ba2aaae51ea",
        "lastUpdateTime": "2024-01-24T06:14:19.4546321Z",
        "name": "1.0",
        "quarantineState": "Passed",
        "signed": false
      }
      

Stosowanie obrazu pomocniczego

W poprzednich krokach utworzono obraz pomocniczy, w tym modele i WDT. Przed zastosowaniem obrazu pomocniczego do klastra WLS wykonaj następujące kroki, aby utworzyć wpis tajny dla adresu URL źródła danych, nazwy użytkownika i hasła. Wpis tajny jest używany jako część symbolu zastępczego w pliku dbmodel.yaml.

  1. Połączenie do klastra usługi AKS, kopiując wartość shellCmdto Połączenie Aks zapisaną wcześniej, wklejając ją w oknie powłoki Bash, a następnie uruchamiając polecenie. Polecenie powinno wyglądać podobnie do następującego przykładu:

    az account set --subscription <subscription>; 
    az aks get-credentials \
        --resource-group <resource-group> \
        --name <name>
    

    Powinny zostać wyświetlone dane wyjściowe podobne do poniższego przykładu. Jeśli te dane wyjściowe nie są widoczne, przed kontynuowaniem rozwiąż problem i rozwiąż go.

    Merged "<name>" as current context in /Users/<username>/.kube/config
    
  2. Wykonaj poniższe kroki, aby uzyskać wartości zmiennych przedstawionych w poniższej tabeli. Te wartości będą później używane do utworzenia wpisu tajnego dla połączenia źródła danych.

    Zmienna opis Przykład
    DB_CONNECTION_STRING Parametry połączenia programu SQL Server. jdbc:sqlserver://sqlserverforwlsaks.database.windows.net:1433;database=wlsaksquickstart0125
    DB_USER Nazwa użytkownika do logowania się do serwera SQL. welogic@sqlserverforwlsaks
    DB_PASSWORD Hasło do logowania się na serwerze sQL. Secret123456
    1. Odwiedź zasób bazy danych SQL w witrynie Azure Portal.

    2. W okienku nawigacji w obszarze Ustawienia wybierz pozycję ciągi Połączenie ion.

    3. Wybierz kartę JDBC .

    4. Wybierz ikonę kopiowania, aby skopiować parametry połączenia do schowka.

    5. W przypadku DB_CONNECTION_STRINGprogramu użyj całej parametry połączenia, ale zastąp symbol zastępczy {your_password_here} hasłem bazy danych.

    6. W przypadku DB_USERprogramu użyj części parametry połączenia z azureuser maksymalnie do , ale nie w tym ;password={your_password_here}.

    7. W polu DB_PASSWORDużyj wartości wprowadzonej podczas tworzenia bazy danych.

  3. Użyj następujących poleceń, aby utworzyć wpis tajny platformy Kubernetes. W tym artykule użyto nazwy sqlserver-secret wpisu tajnego dla wpisu tajnego połączenia ze źródłem danych. Jeśli używasz innej nazwy, upewnij się, że wartość jest taka sama jak w pliku dbmodel.yaml.

    W poniższych poleceniach pamiętaj, aby ustawić zmienne DB_CONNECTION_STRING, DB_USERi DB_PASSWORD poprawnie, zastępując przykłady symboli zastępczych wartościami opisanymi w poprzednich krokach. Pamiętaj, aby ująć wartość DB_ zmiennych w pojedynczych cudzysłowach, aby zapobiec zakłócaniu działania powłoki z wartościami.

    export DB_CONNECTION_STRING='<example-jdbc:sqlserver://sqlserverforwlsaks.database.windows.net:1433;database=wlsaksquickstart0125>'
    export DB_USER='<example-welogic@sqlserverforwlsaks>'
    export DB_PASSWORD='<example-Secret123456>'
    export WLS_DOMAIN_NS=sample-domain1-ns
    export WLS_DOMAIN_UID=sample-domain1
    export SECRET_NAME=sqlserver-secret
    
    kubectl -n ${WLS_DOMAIN_NS} create secret generic \
        ${SECRET_NAME} \
        --from-literal=password="${DB_PASSWORD}" \
        --from-literal=url="${DB_CONNECTION_STRING}" \
        --from-literal=user="${DB_USER}"
    
    kubectl -n ${WLS_DOMAIN_NS} label secret \
        ${SECRET_NAME} \
        weblogic.domainUID=${WLS_DOMAIN_UID}
    

    Zanim przejdziesz dalej, musisz wyświetlić następujące dane wyjściowe. Jeśli nie widzisz tych danych wyjściowych, rozwiąż problem przed kontynuowaniem.

    secret/sqlserver-secret created
    secret/sqlserver-secret labeled
    
  4. Zastosuj obraz pomocniczy, stosując poprawkę niestandardowej definicji zasobu domeny (CRD) przy użyciu kubectl patch polecenia .

    Obraz pomocniczy jest zdefiniowany w spec.configuration.model.auxiliaryImagespliku , jak pokazano w poniższym przykładzie. Aby uzyskać więcej informacji, zobacz obrazy pomocnicze.

    spec:
      clusters:
      - name: sample-domain1-cluster-1
      configuration:
        model:
          auxiliaryImages:
          - image: wlsaksacrafvzeyyswhxek.azurecr.io/wlsaks-auxiliary-image:1.0
            imagePullPolicy: IfNotPresent
            sourceModelHome: /auxiliary/models
            sourceWDTInstallHome: /auxiliary/weblogic-deploy
    

    Użyj następujących poleceń, aby zwiększyć restartVersion wartość i użyć kubectl patch polecenia , aby zastosować obraz pomocniczy do domeny CRD przy użyciu przedstawionej definicji:

    export VERSION=$(kubectl -n ${WLS_DOMAIN_NS} get domain ${WLS_DOMAIN_UID} -o=jsonpath='{.spec.restartVersion}' | tr -d "\"")
    export VERSION=$((VERSION+1))
    
    cat <<EOF >patch-file.json
    [
      {
        "op": "replace",
        "path": "/spec/restartVersion",
        "value": "${VERSION}"
      },
      {
        "op": "add",
        "path": "/spec/configuration/model/auxiliaryImages",
        "value": [{"image": "$ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0", "imagePullPolicy": "IfNotPresent", "sourceModelHome": "/auxiliary/models", "sourceWDTInstallHome": "/auxiliary/weblogic-deploy"}]
      },
      {
        "op": "add",
        "path": "/spec/configuration/secrets",
        "value": ["${SECRET_NAME}"]
      }
    ]
    EOF
    
    kubectl -n ${WLS_DOMAIN_NS} patch domain ${WLS_DOMAIN_UID} \
        --type=json \
        --patch-file patch-file.json
    
    kubectl get pod -n ${WLS_DOMAIN_NS} -w
    
  5. Przed kontynuowaniem poczekaj, aż serwer administracyjny i serwery zarządzane pokażą wartości w następującym bloku danych wyjściowych:

    NAME                             READY   STATUS    RESTARTS   AGE
    sample-domain1-admin-server      1/1     Running   0          20m
    sample-domain1-managed-server1   1/1     Running   0          19m
    sample-domain1-managed-server2   1/1     Running   0          18m
    

    Osiągnięcie tego stanu przez system może potrwać od 5 do 10 minut. Poniższa lista zawiera omówienie tego, co się dzieje podczas oczekiwania:

    • Powinien zostać wyświetlony sample-domain1-introspector pierwszy uruchomiony element. To oprogramowanie wyszukuje zmiany w zasobie niestandardowym domeny, dzięki czemu może podejmować niezbędne działania w klastrze Kubernetes.
    • Po wykryciu zmian introspektor domeny zabija i uruchamia nowe zasobniki w celu wdrożenia zmian.
    • Następnie powinno zostać wyświetlone sample-domain1-admin-server zakończenie i ponowne uruchomienie zasobnika.
    • Następnie powinny zostać wyświetlone dwa serwery zarządzane, które zakończą działanie i uruchom ponownie.
    • Tylko wtedy, gdy wszystkie trzy zasobniki pokazują 1/1 Running stan, czy można kontynuować.

Weryfikowanie funkcjonalności wdrożenia

Wykonaj następujące kroki, aby zweryfikować funkcjonalność wdrożenia, wyświetlając konsolę administracyjną usługi WLS i przykładową aplikację:

  1. Wklej wartość adminConsoleExternalUrl na pasku adresu przeglądarki internetowej połączonej z Internetem. Powinien zostać wyświetlony ekran logowania zaznajomiony z konsolą administracyjną usługi WLS.

  2. Zaloguj się przy użyciu nazwy użytkownika weblogic i hasła wprowadzonego podczas wdrażania zabezpieczeń WLS z witryny Azure Portal. Pamiętaj, że ta wartość to wlsAksCluster2022.

  3. W polu Struktura domeny wybierz pozycję Usługi.

  4. W obszarze Usługi wybierz pozycję Źródła danych.

  5. W panelu Podsumowanie źródeł danych JDBC wybierz pozycję Monitorowanie. Ekran powinien wyglądać podobnie do poniższego przykładu. Stan źródła danych jest uruchomiony na serwerach zarządzanych.

    Zrzut ekranu przedstawiający stan źródła danych.

  6. W polu Struktura domeny wybierz pozycję Wdrożenia.

  7. W tabeli Wdrożenia powinien istnieć jeden wiersz. Nazwa powinna być taka sama jak Application wartość w pliku appmodel.yaml . Wybierz nazwę.

  8. Na panelu Ustawienia wybierz kartę Testowanie.

  9. Wybierz pozycję weblogic-café.

  10. W panelu Ustawienia dla weblogic-café wybierz kartę Testowanie.

  11. Rozwiń ikonę + obok weblogic-café. Ekran powinien wyglądać podobnie do poniższego przykładu. W szczególności powinny być widoczne wartości podobne do http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml w kolumnie Punkt testu.

    Zrzut ekranu przedstawiający punkty testowe weblogic-café.

    Uwaga

    Hiperlinki w kolumnie Punkt testowy nie można zaznaczyć, ponieważ nie skonfigurowaliśmy konsoli administracyjnej przy użyciu zewnętrznego adresu URL, na którym jest uruchomiony. W tym artykule przedstawiono konsolę administracyjną ZLS tylko w sposób demonstracyjny. Nie używaj konsoli administracyjnej usługi WLS do żadnych trwałych zmian konfiguracji podczas uruchamiania usługi WLS w usłudze AKS. Natywny dla chmury projekt usługi WLS w usłudze AKS wymaga, aby każda trwała konfiguracja została przedstawiona w początkowych obrazach platformy Docker lub zastosowana do uruchomionego klastra usługi AKS przy użyciu technik ciągłej integracji/ciągłego wdrażania, takich jak aktualizowanie modelu, zgodnie z opisem w dokumentacji oracle.

  12. Zapoznaj się z wartością context-path wdrożonej przykładowej aplikacji. Jeśli wdrożono zalecaną przykładową aplikację, parametr context-path to weblogic-cafe.

  13. Skonstruuj w pełni kwalifikowany adres URL przykładowej aplikacji, dołączając context-path element do wartości clusterExternalUrl . Jeśli wdrożono zalecaną przykładową aplikację, w pełni kwalifikowany adres URL powinien być podobny do http://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/następującego: .

  14. Wklej w pełni kwalifikowany adres URL w przeglądarce internetowej połączonej z Internetem. Jeśli wdrożono zalecaną przykładową aplikację, powinny zostać wyświetlone wyniki podobne do poniższego zrzutu ekranu:

    Zrzut ekranu przedstawiający testową aplikację internetową.

Czyszczenie zasobów

Aby uniknąć opłat za platformę Azure, należy wyczyścić niepotrzebne zasoby. Gdy klaster nie jest już potrzebny, użyj polecenia az group delete . Następujące polecenie usuwa grupę zasobów, usługę kontenera, rejestr kontenerów i wszystkie powiązane zasoby:

az group delete --name <resource-group-name> --yes --no-wait
az group delete --name <db-resource-group-name> --yes --no-wait

Następne kroki

Dowiedz się więcej na temat uruchamiania zabezpieczeń WLS na usłudze AKS lub maszynach wirtualnych, korzystając z następujących linków: