Distribuire un'applicazione Java con Open Liberty/WebSphere Liberty in un cluster Azure Red Hat OpenShift

Questa guida illustra come eseguire l'applicazione Java, Java edizione Enterprise, Jakarta edizione Enterprise o MicroProfile nel runtime Open Liberty/WebSphere Liberty. La guida illustra quindi come distribuire l'applicazione in contenitori in un cluster Azure Red Hat OpenShift 4 usando Open Liberty Operator. Questo articolo illustra come preparare un'applicazione Liberty, compilare l'immagine Docker dell'applicazione ed eseguire l'applicazione in contenitori in un cluster Azure Red Hat OpenShift 4. Per altre informazioni su Open Liberty, vedere la pagina del progetto Open Liberty. Per altre informazioni su WebSphere Liberty, vedere la pagina del prodotto WebSphere Liberty.

Questo articolo è una guida dettagliata per l'esecuzione di Open/WebSphere Liberty in un cluster Azure Red Hat OpenShift 4. Per una soluzione più automatizzata che accelera il percorso verso il cluster Azure Red Hat OpenShift 4, vedere Distribuire IBM WebSphere Liberty e Open Liberty in Azure Red Hat OpenShift.

Questo articolo è progettato per facilitare rapidamente la distribuzione. Prima di passare alla produzione, è consigliabile esplorare Tuning Liberty.

Importante

Anche se Azure Red Hat OpenShift è progettato, gestito e supportato congiuntamente da Red Hat e Microsoft per offrire un'esperienza di supporto integrata, il software eseguito su Azure Red Hat OpenShift, incluso quello descritto in questo articolo, è soggetto alle proprie condizioni di supporto e licenza. Per altre informazioni sul supporto per Azure Red Hat OpenShift, vedere Ciclo di vita del supporto per Azure Red Hat OpenShift 4. Per altre informazioni sul supporto per il software descritto in questo articolo, vedere le pagine principali per tale software, come indicato nell'articolo.

Prerequisiti

Nota

Azure Red Hat OpenShift richiede almeno 40 core per creare ed eseguire un cluster OpenShift. La quota di risorse di Azure predefinita per una nuova sottoscrizione di Azure non soddisfa questo requisito. Per richiedere un aumento del limite di risorse, vedere Quota standard: aumentare i limiti per serie di macchine virtuali. Si noti che la sottoscrizione di valutazione gratuita non è idonea per un aumento della quota, eseguire l'aggiornamento a una sottoscrizione con pagamento in base al consumo prima di richiedere un aumento della quota.

Completare i prerequisiti seguenti per usare correttamente questa guida.

  1. Preparare un computer locale con sistema operativo simile a Unix installato (ad esempio, Ubuntu, macOS).

  2. Installare un'implementazione di Java edizione Standard, versione 17 o successiva (ad esempio, Eclipse Open J9).

  3. Installare Maven 3.5.0 o versione successiva.

  4. Installare Docker per il sistema operativo.

  5. Installare l'interfaccia della riga di comando di Azure 2.0.75 o versione successiva.

  6. Controllare e installare envsubst se non è preinstallato nel sistema operativo.

  7. Clonare il codice per questo esempio nel sistema locale. L'esempio è disponibile in GitHub.

  8. Seguire le istruzioni in Creare un cluster Azure Red Hat OpenShift 4.

    Anche se il passaggio "Ottenere un segreto pull di Red Hat" è etichettato come facoltativo, è necessario per questo articolo. Il segreto pull consente al cluster Azure Red Hat OpenShift di trovare Open Liberty Operator.

    Se si prevede di eseguire applicazioni a elevato utilizzo di memoria nel cluster, specificare le dimensioni della macchina virtuale appropriate per i nodi di lavoro usando il --worker-vm-size parametro . Ad esempio, Standard_E4s_v3 è la dimensione minima della macchina virtuale per installare l'operatore Elasticsearch in un cluster. Per altre informazioni, vedi:

  9. Connessione al cluster seguendo la procedura descritta in Connessione a un cluster Azure Red Hat OpenShift 4.

    • Assicurarsi di seguire la procedura descritta in "Installare l'interfaccia della riga di comando di OpenShift" perché il comando verrà usato oc più avanti in questo articolo.
    • Annotare l'URL della console del cluster. Dovrebbe essere simile https://console-openshift-console.apps.<random>.<region>.aroapp.io/a .
    • Prendere nota delle kubeadmin credenziali.
    • Assicurarsi di seguire i passaggi descritti in "Connessione usando l'interfaccia della riga di comando di OpenShift" con le kubeadmin credenziali.

Installare l'operatore Open Liberty OpenShift

Dopo aver creato e connesso il cluster, installare Open Liberty Operator. La pagina iniziale principale per Open Liberty Operator è disponibile in GitHub.

  1. Accedere alla console Web OpenShift dal browser usando le kubeadmin credenziali.

  2. Passare a Operatori>OperatorHub e cercare Open Liberty.

  3. Selezionare Open Liberty nei risultati della ricerca.

  4. Selezionare Installa.

  5. Nella pagina Operatore di installazione selezionare v1.2 per Canale di aggiornamento, Tutti gli spazi dei nomi nel cluster (impostazione predefinita) per Modalità di installazione e Automatico per l'approvazione dell'aggiornamento:

    Screenshot della creazione della sottoscrizione dell'operatore per Open Liberty Operator.

  6. Selezionare Installa e attendere un minuto o due fino al completamento dell'installazione.

  7. Osservare che Open Liberty Operator è installato e pronto per l'uso. In caso contrario, diagnosticare e risolvere il problema prima di continuare.

    Operatori installati che mostrano l'installazione di Open Liberty.

Creare uno spazio dei nomi OpenShift per l'app Java

Usare la procedura seguente per creare uno spazio dei nomi OpenShift da usare con l'app:

  1. Assicurarsi di aver eseguito l'accesso alla console Web OpenShift dal browser usando le kubeadmin credenziali.

  2. Passare a Amministrazione istration>Namespaces Create Namespaces>(Crea spazio dei nomi).

  3. open-liberty-demoImmettere Name (Nome) e selezionare Create (Crea), come illustrato di seguito.

    Screenshot della creazione dello spazio dei nomi.

Creare un'istanza di Database di Azure per MySQL

Usare la procedura seguente per configurare un Database di Azure per MySQL da usare con l'app. Se l'applicazione non richiede un database, è possibile ignorare questa sezione.

  1. Creare un server flessibile Database di Azure per MySQL seguendo la procedura descritta in Avvio rapido: Usare il portale di Azure per creare un server flessibile Database di Azure per MySQL. Tornare a questo documento dopo la creazione del database.

    Nota

    Nel passaggio Informazioni di base annotare i valori Nome server.mysql.database.azure.com, nome utente Amministrazione e Password.

  2. Dopo aver creato il database, aprire la rete del database>.

    1. In Accesso pubblico assicurarsi che l'opzione Consenti l'accesso pubblico a questa risorsa tramite Internet tramite un indirizzo IP pubblico sia selezionata.
    2. Selezionare Consenti l'accesso pubblico da qualsiasi servizio di Azure in Azure a questo server.
    3. Assicurarsi che l'indirizzo IPv4 del client sia incluso nell'elenco di regole del firewall consentite.

    Screenshot della configurazione della rete del database mysql.

  3. Aprire il database> Connessione> Selezionare Connessione dall'app>JDBC. Annotare il numero di porta seguente all'indirizzo del server di database. Ad esempio, 3306 è il numero di porta nell'esempio seguente.

    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. Aprire i database di database>> selezionare Aggiungi. Immettere un valore per Nome e selezionare Salva per creare un nuovo database. Questo database ha tipo di schema come Utente e viene usato per l'applicazione in un secondo momento.

    Nota

    Annotare il nome del database creato.

Preparare l'applicazione Liberty

In questa guida viene usata un'applicazione Java edizione Enterprise 8. Open Liberty è un server compatibile con profili completi java edizione Enterprise 8, in modo da poter eseguire facilmente l'applicazione. Open Liberty è anche Jakarta edizione Enterprise 8 profilo completo compatibile.

Eseguire l'applicazione in Open Liberty

Per eseguire l'applicazione in Open Liberty, è necessario creare un file di configurazione del server Open Liberty in modo che il plug-in Liberty Maven possa creare un pacchetto dell'applicazione per la distribuzione. Il plug-in Liberty Maven non è necessario per distribuire l'applicazione in OpenShift. Tuttavia, viene usato in questo esempio con la modalità sviluppatore (dev) di Open Liberty. La modalità sviluppatore consente di eseguire facilmente l'applicazione in locale. Per altre informazioni su liberty-maven-plugin, vedere Compilazione di un'applicazione Web con Maven.

Seguire i passaggi descritti in questa sezione per preparare l'applicazione di esempio per un uso successivo in questo articolo. Questi passaggi usano Maven e liberty-maven-plugin.

Consultare l'applicazione

Clonare il codice di esempio per questa guida. L'esempio è disponibile in GitHub.

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

Se viene visualizzato un messaggio relativo allo stato "HEAD scollegato", questo messaggio è sicuro da ignorare. Significa semplicemente che hai estratto un tag.

Nel repository sono disponibili alcuni esempi. Si usa open-liberty-on-aro/3-integration/connect-db/mysql. Ecco la struttura di file dell'applicazione:

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

Le directory java, resources e webapp contengono il codice sorgente dell'applicazione di esempio. Il codice dichiara e usa un'origine dati denominata jdbc/JavaEECafeDB.

Nella directory aro sono stati inseriti due file di distribuzione. db-secret.xml viene usato per creare segreti con credenziali di connessione al database. Il file openlibertyapplication.yaml viene usato per distribuire l'immagine dell'applicazione.

Nella directory radice sono stati inseriti due Dockerfile. Dockerfile e Dockerfile-wlp vengono usati per il debug locale e per compilare l'immagine per una distribuzione di Azure Red Hat OpenShift, usando rispettivamente Open Liberty e WebSphere Liberty.

Nella directory liberty/config il server.xml viene usato per configurare la connessione db per il cluster Open Liberty e WebSphere Liberty.

Compilare un progetto

Dopo aver raccolto le proprietà necessarie, è possibile compilare l'applicazione. Il file POM per il progetto legge molte proprietà dall'ambiente.

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

Testare l'applicazione in locale

Usare il comando liberty:devc per eseguire e testare il progetto in locale prima di gestire qualsiasi complessità di Azure. Per altre informazioni su liberty:devc, vedere la documentazione del plug-in Liberty.

  1. Avviare l'ambiente Docker locale, se non è già stato fatto. Le istruzioni per eseguire questa operazione variano a seconda del sistema operativo host.

  2. Avviare l'applicazione in modalità liberty:devc

    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. Verificare che l'applicazione funzioni come previsto. Se ha esito positivo, verrà visualizzato un messaggio simile a [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. nell'output del comando. Passare a https://localhost:9443/ nel browser e verificare che l'applicazione sia accessibile e che tutte le funzioni funzionino.

  4. Premere CTRL+C per arrestare liberty:devc la modalità.

Preparare l'immagine dell'applicazione

Per distribuire ed eseguire l'applicazione Liberty in un cluster Azure Red Hat OpenShift 4, creare un contenitore dell'applicazione come immagine Docker usando immagini del contenitore Open Liberty o immagini del contenitore WebSphere Liberty.

Completare i passaggi seguenti per compilare l'immagine dell'applicazione:

Compilare l'applicazione ed eseguire il push nel flusso di immagini

Poiché l'app è già stata eseguita correttamente nel contenitore Liberty Docker, si creerà l'immagine in modalità remota nel cluster eseguendo i comandi seguenti.

  1. Assicurarsi di aver già eseguito l'accesso all'interfaccia della riga di comando di OpenShift usando le kubeadmin credenziali.

  2. Identificare la directory di origine e il 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. Modificare il progetto in "open-liberty-demo"

    oc project open-liberty-demo
    
  4. Creare un flusso di immagini.

    oc create imagestream ${IMAGE_NAME}
    
  5. Creare una configurazione di compilazione che specifica il tag del flusso di immagini dell'output di compilazione.

    oc new-build --name ${IMAGE_NAME}-config --binary --strategy docker --to ${IMAGE_NAME}:${IMAGE_VERSION}
    
  6. Avviare la compilazione per caricare contenuti locali, contenitori e output nel tag del flusso di immagini specificato in precedenza.

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

Distribuire l'applicazione nel cluster Azure Red Hat OpenShift 4

È ora possibile distribuire l'applicazione Liberty di esempio nel cluster Azure Red Hat OpenShift 4 creato in precedenza durante l'uso dei prerequisiti.

Distribuire l'applicazione dalla console Web

Poiché si usa Open Liberty Operator per gestire le applicazioni Liberty, è necessario creare un'istanza della relativa definizione di risorsa personalizzata, di tipo OpenLibertyApplication. L'operatore si occupa di tutti gli aspetti della gestione delle risorse OpenShift necessarie per la distribuzione.

  1. Accedere alla console Web OpenShift dal browser usando le kubeadmin credenziali.

  2. Espandere Home, Selezionare Progetti>open-liberty-demo.

  3. Passare a Operatori> installati.

  4. Al centro della pagina selezionare Apri Liberty.

  5. In API fornite selezionare OpenLibertyApplication. La navigazione degli elementi nell'interfaccia utente rispecchia la gerarchia effettiva di contenimento delle tecnologie in uso.

    Diagramma del contenimento java di Azure Red Hat OpenShift.

  6. Selezionare Crea OpenLibertyApplication.

  7. Selezionare visualizzazione YAML per Configura tramite.

  8. Sostituire il file yaml generato con yours, disponibile in <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.

  9. Seleziona Crea. Si torna all'elenco di OpenLibertyApplications.

  10. Passare a Carichi di lavoro>Segreti.

  11. Selezionare Crea> da YAML.

  12. Sostituire il file yaml generato con il <percorso path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml.

  13. Seleziona Crea. Si torna alla pagina Dei dettagli del segreto.

  14. Passare a Operatori>>installati Open Liberty>OpenLibertyApplication.

  15. Selezionare javaee-café-mysql.

  16. Nella parte centrale della pagina selezionare Risorse.

  17. Nella tabella selezionare il collegamento per javaee-café-mysql con tipo di route.

  18. Nella pagina visualizzata selezionare il collegamento seguente Percorso.

Viene visualizzata la home page dell'applicazione aperta nel browser.

Eliminare l'applicazione dalla console Web

Al termine dell'applicazione, seguire questa procedura per eliminare l'applicazione da Open Shift.

  1. Nel riquadro di spostamento sinistro espandere la voce per Operatori.
  2. Selezionare Operatori installati.
  3. Selezionare Apri libertà.
  4. Al centro della pagina selezionare OpenLibertyApplication.
  5. Per javaee-café-mysql, selezionare i puntini di sospensione verticali (tre punti verticali) e quindi selezionare Elimina OpenLibertyApplication.
  6. Selezionare Elimina per eliminare l'applicazione.

Seguire questa procedura per eliminare il segreto da Open Shift.

  1. Passare a Carichi di lavoro>Segreti.
  2. Selezionare db-secret-mysql.
  3. Selezionare Azioni>Elimina segreto.
  4. Selezionare Elimina per eliminare il segreto.

Pulire le risorse

Eliminare il cluster Azure Red Hat OpenShift seguendo la procedura descritta in Esercitazione: Eliminare un cluster Azure Red Hat OpenShift 4

Passaggi successivi

In questa guida si è appreso come:

  • Preparare l'applicazione Liberty
  • Compilare l'immagine dell'applicazione
  • Eseguire l'applicazione in contenitori in un cluster Azure Red Hat OpenShift 4 usando l'interfaccia utente grafica e l'interfaccia della riga di comando

Per altre informazioni, vedere i riferimenti usati in questa guida: