Dela via


Distribuera ett Java-program med Open Liberty eller WebSphere Liberty i ett AKS-kluster (Azure Kubernetes Service)

Den här artikeln visar hur du:

  • Kör ditt Java-, Java EE-, Jakarta EE- eller MicroProfile-program på Open Liberty - eller IBM WebSphere Liberty-körningen .
  • Skapa programmets Docker-avbildning med hjälp av Open Liberty- eller WebSphere Liberty-containeravbildningar.
  • Distribuera det containerbaserade programmet till ett AKS-kluster (Azure Kubernetes Service) med hjälp av Open Liberty Operator eller WebSphere Liberty Operator.

Open Liberty Operator förenklar distributionen och hanteringen av program som körs i Kubernetes-kluster. Med Open Liberty Operator eller WebSphere Liberty Operator kan du också utföra mer avancerade åtgärder, till exempel att samla in spårningar och dumpar.

Den här artikeln använder Azure Marketplace-erbjudandet för Open Liberty eller WebSphere Liberty för att påskynda din resa till AKS. Erbjudandet etablerar automatiskt vissa Azure-resurser, inklusive:

  • En Azure Container Registry-instans.
  • Ett AKS-kluster.
  • En Ingresskontrollant för Application Gateway (AGIC).
  • Open Liberty Operator och WebSphere Liberty Operator.
  • Du kan också använda en containeravbildning som innehåller Liberty och ditt program.

Om du föredrar manuell stegvis vägledning för att köra Liberty på AKS kan du läsa Distribuera ett Java-program manuellt med Open Liberty eller WebSphere Liberty i ett AKS-kluster (Azure Kubernetes Service).

Den här artikeln är avsedd att hjälpa dig att snabbt komma till distributionen. Innan du går till produktion bör du utforska IBM-dokumentationen om justering av Liberty.

Om du är intresserad av att ge feedback eller arbeta nära dina migreringsscenarier med teknikteamet som utvecklar WebSphere på Azure-lösningar kan du fylla i den här korta undersökningen om WebSphere-migrering och inkludera din kontaktinformation. Teamet med programchefer, arkitekter och ingenjörer kommer snabbt att kontakta dig för att initiera ett nära samarbete.

Förutsättningar

Kommentar

Du kan också köra kommandona i den här artikeln från Azure Cloud Shell. Den här metoden har alla nödvändiga verktyg förinstallerade, med undantag för Docker.

  • Om du kör kommandona i den här guiden lokalt (i stället för Azure Cloud Shell):
    • Förbered en lokal dator med Unix-liknande operativsystem installerat (till exempel Ubuntu, Azure Linux, macOS, Windows podsistem za Linux).
    • Installera en Java SE-implementering, version 17 eller senare. (till exempel Eclipse Open J9).
    • Installera Maven 3.5.0 eller senare.
    • Installera Docker för operativsystemet.
  • Kontrollera att du har tilldelats rollen Owner eller rollerna Contributor och User Access Administrator i prenumerationen. Du kan verifiera det genom att följa stegen i Lista rolltilldelningar för en användare eller grupp.

Skapa en Liberty på AKS-distribution med hjälp av portalen

Följande steg hjälper dig att skapa en Liberty-körning på AKS. När du har slutfört de här stegen har du en Container Registry-instans och ett AKS-kluster för att distribuera ditt containerbaserade program.

  1. Gå till Azure-portalen. I sökrutan överst på sidan anger du IBM Liberty på AKS. När förslagen visas väljer du den och matchar bara i avsnittet Marketplace .

    Om du vill kan du gå direkt till erbjudandet.

  2. Välj Skapa.

  3. I fönstret Grundläggande :

    1. Skapa en ny resursgrupp. Eftersom resursgrupper måste vara unika i en prenumeration väljer du ett unikt namn. Ett enkelt sätt att få unika namn är att använda en kombination av dina initialer, dagens datum och någon identifierare (till exempel ejb0913-java-liberty-project-rg).

    2. För Region väljer du USA, östra.

    3. Skapa en miljövariabel i gränssnittet för resursgruppsnamnen för klustret och databasen:

      export RESOURCE_GROUP_NAME=<your-resource-group-name>
      

  4. Välj Nästa. I AKS-fönstret kan du välja ett befintligt AKS-kluster och containerregisterinstans i stället för att orsaka att distributionen skapar nya. Med det här valet kan du använda sidovagnsmönstret, som du ser i Azure Architecture Center. Du kan också justera inställningarna för storleken och antalet virtuella datorer i AKS-nodpoolen.

    I den här artikeln behåller du bara alla standardvärden i det här fönstret.

  5. Välj Nästa. Välj Ja bredvid Anslut till Azure Application Gateway i fönstret Belastningsutjämning. I det här avsnittet kan du anpassa följande distributionsalternativ:

    • För Virtuellt nätverk och undernät kan du välja att anpassa det virtuella nätverket och undernätet som distributionen placerar resurserna i. Du behöver inte ändra de återstående värdena från deras standardvärden.

    • För TLS/SSL-certifikat kan du ange TLS/SSL-certifikatet från Azure Application Gateway. Lämna värdena som standard så att erbjudandet genererar ett självsignerat certifikat.

      Gå inte till produktion med ett självsignerat certifikat. Mer information om självsignerade certifikat finns i Skapa ett självsignerat offentligt certifikat för att autentisera ditt program.

    • Du kan välja Aktivera cookiebaserad tillhörighet, även kallat sticky-sessioner. Den här artikeln använder klibbiga sessioner, så se till att välja det här alternativet.

  6. Välj Nästa. I fönstret Operator och program använder den här artikeln alla standardvärden. Du kan dock anpassa följande distributionsalternativ:

    • Du kan distribuera WebSphere Liberty Operator genom att välja Ja för alternativet IBM stöds?. Om du lämnar standardvärdet Nej distribueras Open Liberty Operator.
    • Du kan distribuera ett program för den valda operatorn genom att välja Ja för alternativet Distribuera ett program?. Om du lämnar standardvärdet Nej distribueras inget program.
  7. Välj Granska + skapa för att verifiera de valda alternativen. I fönstret Granska + skapa väljer du när du ser Skapa bli tillgängligt när valideringen har godkänts.

    Distributionen kan ta upp till 20 minuter. Medan du väntar på att distributionen ska slutföras kan du följa stegen i avsnittet Skapa en Azure SQL Database-instans. När du har slutfört avsnittet kommer du tillbaka hit och fortsätter.

Samla in vald information från distributionen

Om du har flyttat från fönstret Distribution pågår visar följande steg hur du kommer tillbaka till fönstret. Om du fortfarande är i fönstret som visar Att distributionen är klar går du till den nyligen skapade resursgruppen och går vidare till det tredje steget.

  1. I hörnet på en portalsida väljer du menyknappen och sedan Resursgrupper.

  2. I rutan med texten Filtrera för ett fält anger du de första tecknen i resursgruppen som du skapade tidigare. Om du följde den rekommenderade konventionen anger du dina initialer och väljer sedan lämplig resursgrupp.

  3. I listan över resurser i resursgruppen väljer du resursen med typvärdetcontainerregister.

  4. I navigeringsfönstret går du till Inställningar och väljer Åtkomstnycklar.

  5. Spara värdena för Inloggningsserver, Registernamn, Användarnamn och Lösenord. Du kan använda kopieringsikonen bredvid varje fält för att kopiera värdet till systemets Urklipp.

  6. Gå tillbaka till den resursgrupp där du distribuerade resurserna.

  7. I avsnittet Inställningar väljer du Distributioner.

  8. Välj den längst nedersta distributionen i listan. Värdet Distributionsnamn matchar utgivar-ID:t för erbjudandet. Den innehåller strängen ibm.

  9. I navigeringsfönstret väljer du Utdata.

  10. Genom att använda samma kopieringsteknik som med föregående värden sparar du värdena åt sidan för följande utdata:

    • cmdToConnectToCluster
    • appDeploymentTemplateYaml om distributionen inte innehåller något program. Du har alltså valt Nej för Distribuera ett program när du distribuerade Marketplace-erbjudandet.
    • appDeploymentYaml om distributionen innehåller ett program. Du har alltså valt Ja för Distribuera ett program?.

    Klistra in värdet appDeploymentTemplateYaml för eller appDeploymentYaml i ett Bash-gränssnitt, lägg till | grep secretNameoch kör kommandot.

    Utdata från det här kommandot är det inkommande TLS-hemlighetsnamnet, till exempel - secretName: secret785e2c. Spara åt sidan värdet secretName .

Du använder dessa värden senare i den här artikeln. Utdata visar flera andra användbara kommandon.

Skapa en Azure SQL Database-instans

Om du vill skapa en enkel Azure SQL Database-databas för användning med din app följer du stegen i Snabbstart: Skapa en enkel databas i Azure SQL Database. Observera noggrant följande skillnader:

  • I steget Grundläggande skriver du ned värdena för resursgrupp, databasnamn, <servernamn.database.windows.net>, inloggning för serveradministratör och lösenord. Den här artikeln refererar till databasens resursgruppsvärde som <db-resource-group>.

  • I steget Nätverk anger du Anslutningsmetod till Offentlig slutpunkt, anger Tillåt Att Azure-tjänster och resurser får åtkomst till den här servern till Ja och anger Lägg till aktuell klient-IP-adress till Ja.

    Skärmbild av Azure-portalen som visar fliken Nätverk på sidan Skapa SQL Database med inställningar för anslutningsmetoden och brandväggsregler markerade.

Kommentar

Den serverlösa beräkningsnivå som du valde för den här databasen sparar pengar genom att placera databasen i viloläge under perioder av inaktivitet. Exempelappen misslyckas om databasen är i viloläge när appen startas.

Om du vill tvinga databasen att aktiveras kan du köra en fråga med hjälp av frågeredigeraren. Följ stegen i Fråga databasen. Här är en exempelfråga: SELECT * FROM COFFEE;.

Skapa en miljövariabel i gränssnittet för resursgruppens namn för databasen:

export DB_RESOURCE_GROUP_NAME=<db-resource-group>

Nu när du har skapat databasen och AKS-klustret kan du fortsätta med att förbereda AKS som värd för ditt Open Liberty-program.

Konfigurera och distribuera exempelprogrammet

Följ stegen i det här avsnittet för att distribuera exempelprogrammet på Liberty-körningen. De här stegen använder Maven.

Kolla in programmet

Klona exempelkoden för den här artikeln. Exemplet finns på GitHub.

Det finns några exempel på lagringsplatsen. Den här artikeln använder java-app/. Kör följande kommandon för att hämta exemplet:

git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20240220

Om du ser ett meddelande om att vara i "frånkopplat HEAD"-tillstånd kan du ignorera det på ett säkert sätt. Meddelandet innebär bara att du checkade ut en tagg.

Här är programmets filstruktur:

java-app
├─ src/main/
│  ├─ aks/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication-agic.yaml
│  │  ├─ openlibertyapplication.yaml
│  │  ├─ webspherelibertyapplication-agic.yaml
│  │  ├─ webspherelibertyapplication.yaml
│  ├─ docker/
│  │  ├─ Dockerfile
│  │  ├─ Dockerfile-wlp
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ pom.xml

Katalogerna java, resources och webapp innehåller källkoden för exempelprogrammet. Koden deklarerar och använder en datakälla med namnet jdbc/JavaEECafeDB.

I aks-katalogen finns det fem distributionsfiler:

  • db-secret.xml: Använd den här filen för att skapa Kubernetes-hemligheter med autentiseringsuppgifter för databasanslutning.
  • openlibertyapplication-agic.yaml: Använd den här filen för att distribuera Open Liberty-programmet med AGIC. Den här artikeln förutsätter att du använder den här filen.
  • openlibertyapplication.yaml: Använd den här filen om du vill distribuera Open Liberty-programmet utan AGIC.
  • webspherelibertyapplication-agic.yaml: Använd den här filen för att distribuera WebSphere Liberty-programmet med AGIC om du distribuerade WebSphere Liberty Operator tidigare i den här artikeln.
  • webspherelibertyapplication.yaml: Använd den här filen för att distribuera WebSphere Liberty-programmet utan AGIC om du distribuerade WebSphere Liberty Operator tidigare i den här artikeln.

I docker-katalogen finns det två filer för att skapa programbilden:

  • Dockerfile: Använd den här filen för att skapa programbilden med Open Liberty i den här artikeln.
  • Dockerfile-wlp: Använd den här filen för att skapa programbilden med WebSphere Liberty om du distribuerade WebSphere Liberty Operator tidigare i den här artikeln.

I katalogen liberty/config använder du filen server.xml för att konfigurera databasanslutningen för Open Liberty- och WebSphere Liberty-klustret.

Bygga projektet

Nu när du har de nödvändiga egenskaperna kan du skapa programmet. POM-filen för projektet läser många variabler från miljön. Som en del av Maven-versionen används dessa variabler för att fylla i värden i YAML-filerna som finns i src/main/aks. Du kan göra något liknande för ditt program utanför Maven om du vill.

cd $BASE_DIR/java-app
# The following variables are used for deployment file generation into the target.
export LOGIN_SERVER=<Azure-Container-Registry-Login-Server-URL>
export REGISTRY_NAME=<Azure-Container-Registry-name>
export USER_NAME=<Azure-Container-Registry-username>
export PASSWORD='<Azure-Container-Registry-password>'
export DB_SERVER_NAME=<server-name>.database.windows.net
export DB_NAME=<database-name>
export DB_USER=<server-admin-login>@<server-name>
export DB_PASSWORD='<server-admin-password>'
export INGRESS_TLS_SECRET=<ingress-TLS-secret-name>

mvn clean install

(Valfritt) Testa projektet lokalt

Kör och testa projektet lokalt innan du distribuerar till Azure. För enkelhetens skull använder liberty-maven-pluginden här artikeln . Mer information om liberty-maven-pluginfinns i open liberty-artikeln Skapa ett webbprogram med Maven.

För ditt program kan du göra något liknande genom att använda andra metoder, till exempel din lokala utvecklingsmiljö. Du kan också överväga att använda det liberty:devc alternativ som är avsett för utveckling med containrar. Du kan läsa mer om liberty:devc i Open Liberty-dokumentationen.

  1. Starta programmet med hjälp liberty:runav . liberty:run använder också de miljövariabler som du definierade tidigare.

    cd $BASE_DIR/java-app
    mvn liberty:run
    
  2. Om testet lyckas visas ett meddelande som liknar [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds det i kommandoutdata. Gå till http://localhost:9080/ i webbläsaren och kontrollera att programmet är tillgängligt och att alla funktioner fungerar.

  3. Välj Ctrl+C för att stoppa.

Skapa avbildningen för AKS-distribution

Nu kan du köra docker build kommandot för att skapa avbildningen:

cd $BASE_DIR/java-app/target

docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile .

(Valfritt) Testa Docker-avbildningen lokalt

Använd följande steg för att testa Docker-avbildningen lokalt innan du distribuerar till Azure:

  1. Kör avbildningen med hjälp av följande kommando. Det här kommandot använder de miljövariabler som du definierade tidigare.

    docker run -it --rm -p 9080:9080 \
       -e DB_SERVER_NAME=${DB_SERVER_NAME} \
       -e DB_NAME=${DB_NAME} \
       -e DB_USER=${DB_USER} \
       -e DB_PASSWORD=${DB_PASSWORD} \
       javaee-cafe:v1
    
  2. När containern har startat går du till http://localhost:9080/ i webbläsaren för att komma åt programmet.

  3. Välj Ctrl+C för att stoppa.

Ladda upp avbildningen till Azure Container Registry

Ladda upp den skapade avbildningen till containerregisterinstansen som du skapade i erbjudandet:

docker tag javaee-cafe:v1 ${LOGIN_SERVER}/javaee-cafe:v1
docker login -u ${USER_NAME} -p ${PASSWORD} ${LOGIN_SERVER}
docker push ${LOGIN_SERVER}/javaee-cafe:v1

Distribuera och testa programmet

Använd följande steg för att distribuera och testa programmet:

  1. Anslut till AKS-klustret.

    Klistra in värdet cmdToConnectToCluster för i ett gränssnitt och kör kommandot.

  2. Använd databashemligheten:

    cd $BASE_DIR/java-app/target
    kubectl apply -f db-secret.yaml
    

    Utdata är secret/db-secret-sql created.

  3. Använd distributionsfilen:

    kubectl apply -f openlibertyapplication-agic.yaml
    
  4. Vänta tills alla poddar har startats om med hjälp av följande kommando:

    kubectl get pods --watch
    

    Utdata som liknar följande exempel anger att alla poddar körs:

    NAME                                       READY   STATUS    RESTARTS   AGE
    javaee-cafe-cluster-agic-67cdc95bc-2j2gr   1/1     Running   0          29s
    javaee-cafe-cluster-agic-67cdc95bc-fgtt8   1/1     Running   0          29s
    javaee-cafe-cluster-agic-67cdc95bc-h47qm   1/1     Running   0          29s
    
  5. Kontrollera resultatet:

    1. Hämta adressen till den ingressresurs som distribuerats med programmet:

      kubectl get ingress
      

      Kopiera värdet för ADDRESS från utdatan. Det här värdet är klientdelens offentliga IP-adress för den distribuerade Application Gateway-instansen.

    2. Gå till för att https://<ADDRESS> testa programmet. För din bekvämlighet skapar det här gränssnittet en miljövariabel vars värde du kan klistra in direkt i webbläsaren:

      export APP_URL=https://$(kubectl get ingress | grep javaee-cafe-cluster-agic-ingress | cut -d " " -f14)/
      echo $APP_URL
      

      Om webbsidan inte renderas korrekt eller returnerar ett 502 Bad Gateway fel startar appen fortfarande i bakgrunden. Vänta några minuter och försök sedan igen.

Rensa resurser

För att undvika Azure-avgifter bör du rensa onödiga resurser. När du inte längre behöver klustret använder du kommandot az group delete för att ta bort resursgruppen, containertjänsten, containerregistret, databasen och alla relaterade resurser:

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
az group delete --name $DB_RESOURCE_GROUP_NAME --yes --no-wait

Nästa steg

Du kan lära dig mer från följande referenser:

Mer information om hur du distribuerar IBM WebSphere-familjen i Azure finns i Vad finns lösningar för att köra WebSphere-serien med produkter i Azure?