Condividi tramite


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

Questo articolo fornisce indicazioni dettagliate sull'esecuzione di Open/WebSphere Liberty in un cluster Azure Red Hat OpenShift. 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.

In particolare, si apprenderà come eseguire le attività seguenti:

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

Per una soluzione più automatizzata che accelera il percorso verso il cluster Azure Red Hat OpenShift, vedere Distribuire IBM WebSphere Liberty e Open Liberty in Azure Red Hat OpenShift usando l'offerta azure Marketplace.

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 è progettato per facilitare rapidamente la distribuzione. Prima di passare alla produzione, è consigliabile esplorare Tuning Liberty.

Se si è interessati a fornire commenti e suggerimenti o lavorare sugli scenari di migrazione in stretta collaborazione con il team di progettazione che sviluppa WebSphere nelle soluzioni di Azure, compilare questo breve sondaggio sulla migrazione di WebSphere e includere le informazioni di contatto. Il team di responsabili del programma, architetti e ingegneri si metterà immediatamente in contatto con l'utente per avviare una stretta collaborazione.

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.

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 della versione 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.

Prerequisiti

  • Un computer locale con sistema operativo simile a Unix installato, ad esempio Ubuntu, macOS o sottosistema Windows per Linux.

  • Implementazione di Java edizione Standard (SE), versione 17 o successiva, oppure Eclipse Open J9.

  • Maven, versione 3.9.8 o successiva.

  • Docker per il sistema operativo.

  • Interfaccia della riga di comando di Azure, versione 2.61.0 o successiva.

  • Un cluster Azure Red Hat OpenShift 4. Per creare il cluster, seguire le istruzioni riportate in Creare un cluster Azure Red Hat OpenShift 4 usando le istruzioni seguenti:

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

    • Le variabili di ambiente seguenti definite in Creare un cluster Azure Red Hat OpenShift 4 vengono usate più avanti in questo articolo:

      • RESOURCEGROUP : nome del gruppo di risorse in cui viene distribuito il cluster.
      • CLUSTER: nome del cluster.
    • 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 . Per altre informazioni, vedere gli articoli seguenti:

  • Connettersi al cluster seguendo la procedura descritta in Connettersi a un cluster Azure Red Hat OpenShift 4 usando le istruzioni seguenti:

    • 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.
    • Salvare 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 "Connettersi usando l'interfaccia della riga di comando di OpenShift" con le kubeadmin credenziali.

Installare l'operatore Open Liberty OpenShift

Dopo aver creato e connesso al cluster, seguire questa procedura per 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 seguire questa procedura:

    1. Per Canale di aggiornamento selezionare il canale v1.3 più recente.
    2. Per la modalità di installazione, vedere Spazi dei nomi alllct nel cluster (impostazione predefinita).For Installation mode, seelct All namespaces on the cluster (default).
    3. Per Approvazione aggiornamenti selezionare Automatico.

    Screenshot della console Web OpenShift che mostra la pagina Operatore di installazione.

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

  7. Osservare che l'operatore Open Liberty è installato e pronto per l'uso. Se non è pronto, diagnosticare e risolvere il problema prima di continuare.

    Screenshot della console Web OpenShift che mostra la finestra di dialogo Operatore installato.

Nota

Questa guida installa Open Liberty Operator per gestire le applicazioni Liberty nel cluster Azure Red Hat OpenShift. Se si vuole usare l'operatore WebSphere Liberty, seguire la procedura descritta in Installazione dell'operatore WebSphere Liberty per installare WebSphere Liberty Operator nel cluster.

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 Spazi dei nomi di amministrazione>Crea spazio dei nomi.>

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

    Screenshot della console Web OpenShift che mostra la finestra di dialogo Crea spazio dei nomi.

Creare un server flessibile di Database di Azure per MySQL

Database di Azure per MySQL modello di distribuzione Server flessibile è una modalità di distribuzione progettata per offrire un controllo e una flessibilità più granulari rispetto alle funzioni di gestione del database e alle impostazioni di configurazione rispetto alla modalità di distribuzione a server singolo Database di Azure per MySQL. Questa sezione illustra come creare un'istanza del server flessibile Database di Azure per MySQL usando l'interfaccia della riga di comando di Azure. Per altre informazioni, vedere Avvio rapido: Creare un'istanza di Database di Azure per MySQL - Server flessibile usando l'interfaccia della riga di comando di Azure.

Eseguire il comando seguente nel terminale per creare un'istanza del server flessibile Database di Azure per MySQL. Sostituire <server-admin-password> con una password che soddisfi i requisiti di complessità delle password per Database di Azure per MySQL server flessibile.

az mysql flexible-server create \
    --name ${CLUSTER} \
    --resource-group ${RESOURCEGROUP} \
    --admin-user admin${RESOURCEGROUP} \
    --admin-password '<server-admin-password>' \
    --database-name ${RESOURCEGROUP}db \
    --public-access 0.0.0.0 \
    --yes

Nota

Se viene visualizzato un messaggio di errore Nessun SKU disponibile in questo percorso, è necessario specificare un percorso diverso usando il --location parametro e riprovare. Usare il comando seguente per elencare gli SKU disponibili in una posizione specifica:

az mysql flexible-server list-skus --location <Location>

Trovare un percorso con SKU disponibili e quindi ripetere l'oggetto precedente az mysql flexible-server create command, ma aggiungere il parametro appropriato --location <Location> , lasciando invariati tutti gli altri parametri.

Sono necessari alcuni minuti per creare il server, il database, l'utente amministratore e la regola del firewall che accetta le connessioni da tutte le risorse di Azure. Se il comando va a buon fine, l'output sarà simile all'esempio seguente:

{
  "connectionString": "mysql <database-name> --host <server-name>.mysql.database.azure.com --user <server-admin-username> --password=<server-admin-password>",
  "databaseName": "<database-name>",
  "firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2024-7-10_16-22-8",
  "host": "<server-name>.mysql.database.azure.com",
  "id": "/subscriptions/REDACTED/resourceGroups/<resource-group-of-the-OpenShift-cluster>/providers/Microsoft.DBforMySQL/flexibleServers/<server-name>",
  "location": "West US",
  "password": "<server-admin-password>",
  "resourceGroup": "<resource-group-of-the-OpenShift-cluster>",
  "skuname": "Standard_B1ms",
  "username": "<server-admin-username>",
  "version": "5.7"
}

Preparare l'applicazione Liberty

Usiamo un'applicazione Java EE 8 come esempio in questa guida. Open Liberty è un server compatibile con profili completi Java EE 8, in modo da poter eseguire facilmente l'applicazione. Open Liberty è anche compatibile con il profilo completo Jakarta EE 8.

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

Usare i comandi seguenti per 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
export BASE_DIR=$PWD
git checkout 20240920
cd ${BASE_DIR}/3-integration/connect-db/mysql

Se viene visualizzato un messaggio relativo allo stato "HEAD scollegato", questo messaggio può essere tranquillamente ignorato. Significa semplicemente che è stato 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 di database per il cluster Open Liberty e WebSphere Liberty.

Compilare il progetto

Usando le variabili di ambiente definite in precedenza, eseguire i comandi seguenti nel terminale per compilare il progetto. Il file POM per il progetto legge molte proprietà dall'ambiente.

cd ${BASE_DIR}/3-integration/connect-db/mysql

# The following variables are used for deployment file generation
export DB_SERVER_NAME=$CLUSTER.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=${RESOURCEGROUP}db
export DB_USER=admin${RESOURCEGROUP}
export DB_PASSWORD='<server-admin-password>'
export NAMESPACE=open-liberty-demo

mvn clean install

(Facoltativo) Testare l'applicazione in locale

Facoltativamente, è possibile eseguire l'applicazione in locale per verificare che funzioni come previsto. Prima di tutto, è necessario aggiungere una regola del firewall per consentire al computer locale di connettersi all'istanza del server flessibile Database di Azure per MySQL. Per aggiungere la regola del firewall, seguire questa procedura:

  1. Accedere al portale di Azure e passare all'istanza del server flessibile Database di Azure per MySQL creata in precedenza.
  2. Nel riquadro sinistro selezionare Impostazioni>rete.
  3. Selezionare Aggiungi indirizzo IP client corrente.
  4. Selezionare Salva e attendere l'aggiunta della regola del firewall.

Usare la procedura seguente per eseguire il liberty:devc comando per eseguire localmente e testare il progetto e l'immagine del contenitore 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 necessario. Le istruzioni per eseguire questa operazione variano a seconda del sistema operativo host.

  2. Usare i comandi seguenti per avviare l'applicazione in liberty:devc modalità:

    cd ${BASE_DIR}/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. Per arrestare liberty:devc la modalità, premere CTRL+C.

Preparare l'immagine dell'applicazione

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

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

Poiché l'app è già stata eseguita correttamente nel contenitore Liberty Docker usando il liberty:devc comando , si creerà l'immagine in modalità remota nel cluster seguendo questa procedura:

  1. Assicurarsi di accedere all'interfaccia della riga di comando di OpenShift usando le kubeadmin credenziali.

  2. Usare i comandi seguenti per identificare la directory di origine e dockerfile:

    cd ${BASE_DIR}/3-integration/connect-db/mysql
    
    # If you are building with the Open Liberty base image, the existing Dockerfile is ready for you
    
    # If you are building with the 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. Usare il comando seguente per modificare il progetto in open-liberty-demo:

    oc project open-liberty-demo
    
  4. Usare il comando seguente per creare un flusso di immagini:

    oc create imagestream javaee-cafe-mysql
    
  5. Usare il comando seguente per creare una configurazione di compilazione che specifica il tag del flusso di immagini dell'output di compilazione:

    oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
    
  6. Usare il comando seguente per avviare la compilazione per caricare contenuti, contenitori e output locali nel tag del flusso di immagini specificato prima:

    oc start-build javaee-cafe-mysql-config --from-dir . --follow
    

Distribuire l'applicazione nel cluster Azure Red Hat OpenShift

È ora possibile distribuire l'applicazione Liberty di esempio nel cluster Azure Red Hat OpenShift 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. Per creare questa istanza, seguire questa procedura:

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

  2. Selezionare il progetto visitando Home>Projects>open-liberty-demo.

  3. Passare a Carichi di lavoro>Segreti.

  4. Selezionare Crea> da YAML.

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

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

  7. Passare a Operatori> installati.

  8. Al centro della pagina, vedi Open Liberty.

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

  10. Selezionare Crea OpenLibertyApplication.

  11. Selezionare visualizzazione YAML per Configura tramite.

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

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

  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.

La home page dell'applicazione viene 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.

Per eliminare il segreto da Open Shift, seguire questa procedura:

  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. Assicurarsi che anche il database e le risorse associate vengano eliminate.

Passaggi successivi

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

Per esplorare le opzioni per eseguire prodotti WebSphere in Azure, vedere Quali sono le soluzioni per eseguire la famiglia di prodotti WebSphere in Azure?