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.
- Assicurarsi di seguire la procedura descritta in "Installare l'interfaccia della riga di comando di OpenShift" perché il comando verrà usato
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.
Accedere alla console Web OpenShift dal browser usando le
kubeadmin
credenziali.Passare a Operatori>OperatorHub e cercare Open Liberty.
Selezionare Open Liberty nei risultati della ricerca.
Selezionare Installa.
Nella pagina Operatore di installazione seguire questa procedura:
- Per Canale di aggiornamento selezionare il canale v1.3 più recente.
- Per la modalità di installazione, vedere Spazi dei nomi alllct nel cluster (impostazione predefinita).For Installation mode, seelct All namespaces on the cluster (default).
- Per Approvazione aggiornamenti selezionare Automatico.
Selezionare Installa e attendere un minuto o due fino al completamento dell'installazione.
Osservare che l'operatore Open Liberty è installato e pronto per l'uso. Se non è pronto, diagnosticare e risolvere il problema prima di continuare.
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:
Assicurarsi di aver eseguito l'accesso alla console Web OpenShift dal browser usando le
kubeadmin
credenziali.Passare a Spazi dei nomi di amministrazione>Crea spazio dei nomi.>
open-liberty-demo
Immettere Name (Nome) e selezionare Create (Crea), come illustrato di seguito.
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:
- Accedere al portale di Azure e passare all'istanza del server flessibile Database di Azure per MySQL creata in precedenza.
- Nel riquadro sinistro selezionare Impostazioni>rete.
- Selezionare Aggiungi indirizzo IP client corrente.
- 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.
Avviare l'ambiente Docker locale, se necessario. Le istruzioni per eseguire questa operazione variano a seconda del sistema operativo host.
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
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 ahttps://localhost:9443/
nel browser e verificare che l'applicazione sia accessibile e che tutte le funzioni funzionino.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:
Assicurarsi di accedere all'interfaccia della riga di comando di OpenShift usando le
kubeadmin
credenziali.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
Usare il comando seguente per modificare il progetto in open-liberty-demo:
oc project open-liberty-demo
Usare il comando seguente per creare un flusso di immagini:
oc create imagestream javaee-cafe-mysql
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
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:
Accedere alla console Web OpenShift dal browser usando le
kubeadmin
credenziali.Selezionare il progetto visitando Home>Projects>open-liberty-demo.
Passare a Carichi di lavoro>Segreti.
Selezionare Crea> da YAML.
Sostituire il file yaml generato con il <percorso path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml.
Seleziona Crea. Si torna alla pagina Dei dettagli del segreto.
Passare a Operatori> installati.
Al centro della pagina, vedi Open Liberty.
In API fornite selezionare OpenLibertyApplication. La navigazione degli elementi nell'interfaccia utente rispecchia la gerarchia effettiva di contenimento delle tecnologie in uso.
Selezionare Crea OpenLibertyApplication.
Selezionare visualizzazione YAML per Configura tramite.
Sostituire il file yaml generato con yours, disponibile in <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.
Seleziona Crea. Si torna all'elenco di OpenLibertyApplications.
Passare a Operatori>>installati Open Liberty>OpenLibertyApplication.
Selezionare javaee-café-mysql.
Nella parte centrale della pagina selezionare Risorse.
Nella tabella selezionare il collegamento per javaee-café-mysql con tipo di route.
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:
- Nel riquadro di spostamento sinistro espandere la voce per Operatori.
- Selezionare Operatori installati.
- Selezionare Apri libertà.
- Al centro della pagina selezionare OpenLibertyApplication.
- Per javaee-café-mysql, selezionare i puntini di sospensione verticali (tre punti verticali) e quindi selezionare Elimina OpenLibertyApplication.
- Selezionare Elimina per eliminare l'applicazione.
Per eliminare il segreto da Open Shift, seguire questa procedura:
- Passare a Carichi di lavoro>Segreti.
- Selezionare db-secret-mysql.
- Selezionare Azioni>Elimina segreto.
- 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:
- Aprire Liberty
- Azure Red Hat OpenShift
- Aprire operatore Liberty
- Aprire Configurazione di Liberty Server
- Plug-in Liberty Maven
- Open Liberty Container Images
- Immagini contenitore WebSphere Liberty
Per esplorare le opzioni per eseguire prodotti WebSphere in Azure, vedere Quali sono le soluzioni per eseguire la famiglia di prodotti WebSphere in Azure?