Dela via


Distribuera ett Java-program med WebLogic Server i ett AKS-kluster (Azure Kubernetes Service)

Den här artikeln visar hur du:

  • Kör ditt Java-program på Oracle WebLogic Server (WLS).
  • Skapa ett WebLogic Server-kluster på AKS med hjälp av ett Azure Marketplace-erbjudande.
  • Skapa en Docker-avbildning för program som innehåller WDT-modeller (WebLogic Deploy Tooling).
  • Distribuera det containerbaserade programmet till WebLogic Server-klustret på AKS med anslutning till Microsoft Azure SQL.

Den här artikeln använder Azure Marketplace-erbjudandet för WebLogic Server för att påskynda din resa till AKS. Erbjudandet etablerar automatiskt flera Azure-resurser, inklusive följande resurser:

  • En Azure Container Registry-instans
  • Ett AKS-kluster
  • En Ingresskontrollant för Azure App Gateway (AGIC)
  • WebLogic Kubernetes-operatorn
  • En containeravbildning inklusive WebLogic-körningen
  • Ett WebLogic Server-kluster utan program

Sedan introducerar artikeln att skapa en avbildning för att uppdatera WebLogic Server-klustret. Avbildningen innehåller program- och WDT-modeller.

Om du föredrar en mindre automatiserad metod för att distribuera WebLogic på AKS kan du läsa den stegvisa vägledningen som ingår i den officiella dokumentationen från Oracle för Azure Kubernetes Service.

Om du är intresserad av att ge feedback eller arbeta nära dina migreringsscenarier med teknikteamet som utvecklar WebLogic på AKS-lösningar, fyller du i den här korta undersökningen om WebLogic-migrering och inkluderar 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

  • Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
  • Kontrollera att den Azure-identitet som du använder för att logga in och slutföra den här artikeln har rollen Ägare i den aktuella prenumerationen eller rollen Deltagare och Administratör för användaråtkomst i den aktuella prenumerationen. En översikt över Azure-roller finns i Vad är rollbaserad åtkomstkontroll i Azure (Azure RBAC)? Mer information om de specifika roller som krävs av WLS i AKS finns i Inbyggda Roller i Azure.
  • Ha autentiseringsuppgifterna för ett Oracle-konto för enkel inloggning (SSO). Information om hur du skapar ett finns i Skapa ditt Oracle-konto.
  • Godkänn licensvillkoren för WebLogic Server.
    • Besök Oracle Container Registry och logga in.
    • Om du har en stödrättighet väljer du Mellanprogram och söker sedan efter och väljer weblogic_cpu.
    • Om du inte har någon stödrättighet från Oracle väljer du Mellanprogram och söker sedan efter och väljer weblogic.
    • Godkänn licensavtalet.

    Kommentar

    Skaffa en supporträttighet från Oracle innan du går till produktion. Om du inte gör det körs osäkra avbildningar som inte har korrigerats för kritiska säkerhetsbrister. Mer information om Oracles kritiska korrigeringsuppdateringar finns i Viktiga uppdateringsuppdateringar, säkerhetsaviseringar och bulletiner från Oracle.

  • Förbered en lokal dator med Unix-liknande operativsystem installerat – till exempel Ubuntu, Azure Linux, macOS Windows-undersystem för Linux.
    • Azure CLI. Använd az --version för att testa om az fungerar. Det här dokumentet har testats med version 2.55.1.
    • kubectl. Använd kubectl version för att testa om kubectl fungerar. Det här dokumentet testades med version v1.21.2.
    • Ett Java Development Kit (JDK). I artikeln uppmanas du att installera Microsoft Build of OpenJDK 11. Kontrollera att miljövariabeln JAVA_HOME är korrekt inställd i de gränssnitt där du kör kommandona.
    • Maven 3.5.0 eller senare.
    • Kontrollera att zip/unzip-verktyget är installerat. Använd zip/unzip -v för att testa om zip/unzip fungerar.

Skapa en Azure SQL Database

Det här avsnittet skapar en Azure SQL Database med Hjälp av Microsoft Entra-autentisering, med hanterad identitetsanslutning aktiverad.

Skapa en resursgrupp

Skapa en resursgrupp med az group create. 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. Exempel: abc1228rg I det här exemplet skapas en resursgrupp med namnet abc1228rg på platsen eastus :

export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
    --name ${RESOURCE_GROUP_NAME} \
    --location eastus

Skapa en databasserver och en databas

Skapa en server med kommandot az sql server create . I det här exemplet skapas en server med namnet myazuresql20130213 med administratörsanvändare azureuser och administratörslösenord. Ersätt <your-password> med ditt lösenord. Mer information finns i Snabbstart: Skapa en enkel databas – Azure SQL Database.

Kommentar

Även om du använder ett användarnamn och lösenord här exponeras inte dessa autentiseringsuppgifter utanför databasen. Anslutningen mellan programskiktet och databasen skyddas med hanterade identiteter.

export AZURESQL_SERVER_NAME="myazuresql20130213"
export AZURESQL_ADMIN_USER="azureuser"
export AZURESQL_ADMIN_PASSWORD="<your-password>"
export DATABASE_NAME="mysingledatabase20230213"
az sql server create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $AZURESQL_SERVER_NAME \
    --location westus \
    --admin-user $AZURESQL_ADMIN_USER \
    --admin-password $AZURESQL_ADMIN_PASSWORD

Skapa en databas med kommandot az sql db create på den serverlösa beräkningsnivån.

az sql db create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $AZURESQL_SERVER_NAME \
    --name $DATABASE_NAME \
    --sample-name AdventureWorksLT \
    --edition GeneralPurpose \
    --compute-model Serverless \
    --family Gen5 \
    --capacity 2

Konfigurera en Microsoft Entra-administratör

Information om hur Azure SQL Server interagerar med hanterade identiteter finns i Ansluta med Microsoft Entra-autentisering.

Använd följande steg för att konfigurera ett Microsoft Entra-administratörskonto till Azure SQL Server från Azure Portal:

  1. Öppna Azure SQL Server-instansen myazuresql20130213i Azure Portal .
  2. Välj Inställningar och välj sedan Microsoft Entra-ID. På sidan Microsoft Entra-ID väljer du Ange administratör.
  3. På sidan Lägg till administratör söker du efter en användare, väljer den användare eller grupp som ska vara administratör och väljer sedan Välj.
  4. Längst upp på sidan Microsoft Entra-ID väljer du Spara. För Microsoft Entra-användare och -grupper visas objekt-ID bredvid administratörsnamnet.
  5. Det kan ta flera minuter att ändra administratören. Sedan visas den nya administratören i rutan Microsoft Entra-ID .

Skapa en användartilldelad hanterad identitet

I Azure CLI skapar du sedan en identitet i din prenumeration med hjälp av kommandot az identity create . Du använder den här hanterade identiteten för att ansluta till databasen.

az identity create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myManagedIdentity

Skapa en databasanvändare för din hanterade identitet

Anslut nu som Microsoft Entra-administratörsanvändare till din Azure SQL-databas från Azure Portal och skapa en användare för din hanterade identitet.

Skapa först en brandväggsregel för åtkomst till Azure SQL-servern från portalen, enligt följande steg:

  1. Öppna Azure SQL Server-instansen myazuresql20130213i Azure Portal .
  2. Välj Säkerhet och sedan Nätverk.
  3. Under Brandväggsregler väljer du Lägg till klientens IPV4 IP-adress.
  4. Under Undantag väljer du Tillåt Att Azure-tjänster och resurser får åtkomst till den här servern.
  5. Välj Spara.

När brandväggsregeln har skapats kan du komma åt Azure SQL-servern från portalen. Använd följande steg för att skapa en databasanvändare:

  1. Välj Inställningar och välj sedan SQL-databaser. Välj mysingledatabase20230213.

  2. Välj Frågeredigeraren. På sidan Välkommen till SQL Database Power Query-redigeraren, under Active Directory-autentisering, hittar du ett meddelande som Logged in as user@contoso.com.

  3. Välj Fortsätt som user@contoso.com, där user är ditt AD-administratörskontonamn.

  4. När du har loggat in kör du följande kommandon i Fråge 1-redigeraren för att skapa en databasanvändare för hanterad identitet myManagedIdentity.

    CREATE USER "myManagedIdentity" FROM EXTERNAL PROVIDER
    ALTER ROLE db_datareader ADD MEMBER "myManagedIdentity";
    ALTER ROLE db_datawriter ADD MEMBER "myManagedIdentity";
    ALTER ROLE db_ddladmin ADD MEMBER "myManagedIdentity";
    GO
    
  5. I frågeredigeraren väljer du Kör för att köra SQL-kommandona.

  6. Om kommandona har slutförts kan du hitta ett meddelande med texten Query succeeded: Affected rows: 0.

Använd följande kommando för att hämta anslutningssträng som du använder i nästa avsnitt:

export CONNECTION_STRING="jdbc:sqlserver://${AZURESQL_SERVER_NAME}.database.windows.net:1433;database=${DATABASE_NAME};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"
echo ${CONNECTION_STRING}

Skapa ett schema för exempelprogrammet

Välj Ny fråga och kör sedan följande fråga i frågeredigeraren:

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);

Efter en lyckad körning bör du se meddelandet Fråga lyckades: Berörda rader: 1. Om du inte ser det här meddelandet kan du felsöka och lösa problemet innan du fortsätter.

Du kan fortsätta att distribuera WLS i AKS-erbjudandet.

Distribuera WebLogic Server på AKS

Använd följande steg för att hitta WebLogic Server i AKS-erbjudandet och fylla i fönstret Grundläggande :

  1. I sökfältet överst i Azure Portal anger du weblogic. I de automatiska sökresultaten går du till avsnittet Marketplace och väljer WebLogic Server på AKS.

    Skärmbild av Azure Portal som visar WebLogic Server i sökresultaten.

    Du kan också gå direkt till WebLogic Server på AKS-erbjudandet .

  2. På erbjudandesidan väljer du Skapa.

  3. I fönstret Grundläggande kontrollerar du att värdet som visas i fältet Prenumeration är samma som du loggade in på i Azure. Kontrollera att du har de roller som anges i avsnittet för förhandskrav för prenumerationen.

    Skärmbild av Azure Portal som visar WebLogic Server på AKS.

  4. Du måste distribuera erbjudandet i en tom resursgrupp. I fältet Resursgrupp väljer du Skapa ny och fyller sedan i ett värde för resursgruppen. 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 ejb0723wls.

  5. Under Instansinformation väljer du regionen för distributionen. En lista över Azure-regioner där AKS är tillgängligt finns i TILLGÄNGLIGHET för AKS-regioner.

  6. Under Autentiseringsuppgifter för WebLogic lämnar du standardvärdet för Användarnamn för WebLogic-administratör.

  7. Fyll i wlsAksCluster2022 för Lösenordet för WebLogic-administratören. Använd samma värde för krypteringsfälten för bekräftelse och lösenord för WebLogic Model .

  8. Välj Nästa.

Använd följande steg för att starta distributionsprocessen:

  1. Rulla till avsnittet med etiketten Ange ett Oracle-konto för enkel inloggning (SSO). Fyll i dina Oracle SSO-autentiseringsuppgifter från förhandsvillkoren.

    Skärmbild av Azure Portal som visar det konfigurerade fönstret enkel inloggning.

  2. Observera stegen i informationsrutan som börjar med Innan du går vidare måste du godkänna Oracles standardvillkor och -begränsningar.

  3. Beroende på om Oracle SSO-kontot har en Oracle-stödrättighet eller inte väljer du lämpligt alternativ för Välj typ av WebLogic Server-avbildningar. Om kontot har en stödrättighet väljer du Korrigerade WebLogic Server-avbildningar. Annars väljer du Allmänna WebLogic Server-avbildningar.

  4. Lämna värdet i Välj önskad kombination av WebLogic Server... som standardvärde. Du har ett brett utbud av alternativ för WebLogic Server, JDK och OS-version.

  5. I avsnittet Program bredvid Distribuera ett program?, väljer du Nej.

Följande steg gör det så att WebLogic Server-administratörskonsolen och exempelappen exponeras för det offentliga Internet med ett inbyggt Application Gateway-tillägg. Mer information finns i Vad är Application Gateway Ingress Controller?

  1. Välj Nästa för att se TLS/SSL-fönstret .

  2. Välj Nästa för att se fönstret Belastningsutjämning .

  3. Bredvid Alternativ för belastningsutjämning väljer du Application Gateway-ingresskontrollant.

    Skärmbild av Azure Portal som visar den enklaste möjliga lastbalanserarens konfiguration på sidan Skapa Oracle WebLogic Server på Azure Kubernetes Service.

  4. Under Application Gateway-ingresskontrollanten bör du se alla fält ifyllda med standardvärdena för virtuellt nätverk och undernät. Låt standardvärdena vara kvar.

  5. För Skapa ingress för administrationskonsolen väljer du Ja.

    Skärmbild av Azure Portal som visar konfigurationen av Application Gateway-ingresskontrollanten på sidan Skapa Oracle WebLogic Server på Azure Kubernetes Service.

  6. Välj Nästa för att se DNS-fönstret .

  7. Välj Nästa för att se fönstret Databas .

Använd följande steg för att konfigurera en databasanslutning med hjälp av en hanterad identitet:

  1. Välj Ja för Anslut till databas?.
  2. Under Anslutningsinställningar för Välj databastyp öppnar du listrutan och väljer sedan Microsoft SQL Server (med stöd för lösenordslös anslutning).
  3. För JNDI-namn anger du jdbc/WebLogicCafeDB.
  4. För DataSource-anslutningssträng anger du anslutningssträng du fick i det senaste avsnittet.
  5. Välj Använd lösenordslös datakällaanslutning.
  6. För Användartilldelad hanterad identitet väljer du den hanterade identitet som du skapade i föregående steg. I det här exemplet är myManagedIdentitydess namn .
  7. Markera Lägga till.

Avsnittet Anslutningsinställningar bör se ut som på följande skärmbild:

Skärmbild av Azure Portal som visar fliken Databas på sidan Skapa Oracle WebLogic Server på Azure Kubernetes Service.

Slutför distributionen med hjälp av följande steg:

  1. Välj Granska + skapa. Kontrollera att verifieringen inte misslyckas. Om det misslyckas kan du åtgärda eventuella valideringsproblem och sedan välja Granska + skapa igen.
  2. Välj Skapa.
  3. Spåra förloppet för distributionen på sidan Distribution pågår .

Beroende på nätverksförhållanden och annan aktivitet i den valda regionen kan distributionen ta upp till 50 minuter att slutföra.

Kommentar

Om din organisation kräver att du distribuerar arbetsbelastningen i ett virtuellt företagsnätverk utan att några offentliga IP-adresser tillåts kan du välja den interna Load Balancer-tjänsten. Om du vill konfigurera den interna load balancer-tjänsten använder du följande steg på fliken Belastningsutjämning :

  1. För Alternativ för belastningsutjämning väljer du Standard Load Balancer Service.

  2. Välj Använd intern lastbalanserare.

  3. Lägg till följande rader i tabellen:

    Prefix för tjänstnamn Mål Port
    wls-admin-internal admin-server 7001
    wls-cluster-internal cluster-1 8001

Fliken Belastningsutjämning bör se ut som på följande skärmbild:

Skärmbild av Azure Portal som visar fliken Belastningsutjämning på sidan Skapa Oracle WebLogic Server på Azure Kubernetes Service.

Efter distributionen kan du hitta åtkomst-URL:er för administratörsservern och klustret från utdata, med etiketten adminConsoleExternalUrl och clusterExternalUrl.

Granska distributionsutdata

Använd stegen i det här avsnittet för att kontrollera att distributionen lyckades.

Om du har navigerat bort från sidan Distribution pågår visar följande steg hur du kommer tillbaka till den sidan. Om du fortfarande är på sidan som visar Att distributionen är klar kan du gå vidare till steg 5 efter nästa skärmbild.

  1. I hörnet på en Azure Portal sida väljer du hamburgermenyn och väljer 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 navigeringsfönstret går du till avsnittet Inställningar och väljer Distributioner. Du ser en ordnad lista över distributionerna till den här resursgruppen, med den senaste först.

  4. Rulla till den äldsta posten i den här listan. Den här posten motsvarar den distribution som du startade i föregående avsnitt. Välj den äldsta distributionen enligt följande skärmbild.

    Skärmbild av Azure Portal som visar distributionslistan för resursgrupper.

  5. I navigeringsfönstret väljer du Utdata. Den här listan visar utdatavärdena från distributionen. Användbar information ingår i utdata.

  6. Värdet adminConsoleExternalUrl är den fullständigt kvalificerade, offentliga Internet synliga länken till WebLogic Server-administratörskonsolen för det här AKS-klustret. Välj kopieringsikonen bredvid fältvärdet för att kopiera länken till Urklipp. Spara det här värdet åt sidan för senare.

  7. Värdet clusterExternalUrl är den fullständigt kvalificerade, offentliga Internet-synliga länken till exempelappen som distribueras i WebLogic Server i det här AKS-klustret. Välj kopieringsikonen bredvid fältvärdet för att kopiera länken till Urklipp. Spara det här värdet åt sidan för senare.

  8. Värdet shellCmdtoOutputWlsImageModelYaml är base64-strängen för den WDT-modell som används för att skapa containeravbildningen. Spara det här värdet åt sidan för senare.

  9. Värdet shellCmdtoOutputWlsImageProperties är base64-strängen för de WDT-modellegenskaper som används för att skapa containeravbildningen. Spara det här värdet åt sidan för senare.

  10. ShellCmdtoConnectAks-värdet är Azure CLI-kommandot för att ansluta till det här specifika AKS-klustret.

De andra värdena i utdata ligger utanför omfånget för den här artikeln, men beskrivs i detalj i användarhandboken för WebLogic i AKS.

Konfigurera och distribuera exempelprogrammet

Erbjudandet etablerar WebLogic Server-klustret via modellen i avbildningen. WebLogic Server-klustret har för närvarande inget distribuerat program.

Det här avsnittet uppdaterar WebLogic Server-klustret genom att distribuera ett exempelprogram med hjälp av en extra avbildning.

Kolla in programmet

I det här avsnittet klonar du exempelkoden för den här guiden. Exemplet finns på GitHub på lagringsplatsen weblogic-on-azure i mappen javaee/weblogic-café/ . Här är programmets filstruktur.

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

Använd följande kommandon för att klona lagringsplatsen:

# 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

Om du ser ett meddelande om att vara i "frånkopplat HEAD"-tillstånd är det här meddelandet säkert att ignorera. Det betyder bara att du checkade ut en tagg.

Använd följande kommando för att skapa javaee/weblogic-café/:

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

Paketet ska genereras och finnas på $BASE_DIR/weblogic-on-azure/javaee/weblogic-café/target/weblogic-café.war. Om du inte ser paketet måste du felsöka och lösa problemet innan du fortsätter.

Använda Azure Container Registry för att skapa en extra avbildning

Stegen i det här avsnittet visar hur du skapar en extra avbildning. Den här avbildningen innehåller följande komponenter:

  • Modell i bildmodellfiler
  • Ditt program
  • JDBC-drivrutinsarkivfilen (Java Database Connectivity)
  • Installationen av WebLogic Deploy Tooling

En extra avbildning är en Docker-containeravbildning som innehåller din app och konfiguration. WebLogic Kubernetes-operatorn kombinerar din extra avbildning med domain.spec.image i AKS-klustret som innehåller WebLogic Server, JDK och operativsystemet. Mer information om extra bilder finns i Hjälpbilder i Oracle-dokumentationen.

Det här avsnittet kräver en Linux-terminal med Azure CLI och kubectl installerat.

Använd följande steg för att skapa avbildningen:

  1. Använd följande kommandon för att skapa en katalog för att mellanlagra modellerna och programmet:

    mkdir -p ${BASE_DIR}/mystaging/models
    cd ${BASE_DIR}/mystaging/models
    
  2. Kopiera shellCmdtoOutputWlsImageModelYaml-värdet som du sparade från distributionsutdata, klistra in det i Bash-fönstret och kör kommandot. Kommandot bör se ut ungefär som i följande exempel:

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

    Det här kommandot genererar en ${BASE_DIR}/mystaging/models/model.yaml-fil med innehåll som liknar följande exempel:

    # 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. På liknande sätt kopierar du värdet shellCmdtoOutputWlsImageProperties , klistrar in det i Bash-fönstret och kör kommandot. Kommandot bör se ut ungefär som i följande exempel:

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

    Det här kommandot genererar filen ${BASE_DIR}/mystaging/models/model.properties med innehåll som liknar följande exempel:

    # 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. Använd följande steg för att skapa programmodellfilen.

    1. Använd följande kommandon för att kopiera weblogic-café.war och spara det i 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. Använd följande kommandon för att skapa programmodellfilen med det innehåll som visas. Spara modellfilen till ${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. Använd följande steg för att konfigurera datakällans anslutning.

    1. Följ stegen nedan för att ladda ned och installera Microsoft SQL Server JDBC-drivrutinen och Azure Identity Extension som möjliggör databasanslutningar med hjälp av Azure Managed Identity.

      1. Använd följande kommandon för att ladda ned och installera Microsoft SQL Server JDBC-drivrutinen för att 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
        
      2. Använd följande kommandon för att installera Azure Identity Extension på wlsdeploy/classpathLibraries:

        curl -LO https://github.com/oracle/weblogic-azure/raw/refs/heads/main/weblogic-azure-aks/src/main/resources/azure-identity-extensions.xml
        
        mvn dependency:copy-dependencies -f azure-identity-extensions.xml
        
        mkdir -p ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/azureLibraries
        mkdir ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson
        # fix JARs conflict issue in GA images, put jackson libraries to PRE_CLASSPATH to upgrade the existing libs.
        mv target/dependency/jackson-annotations-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/
        mv target/dependency/jackson-core-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/
        mv target/dependency/jackson-databind-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/
        mv target/dependency/jackson-dataformat-xml-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/
        # Thoes jars will be appended to CLASSPATH
        mv target/dependency/*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/azureLibraries/
        
      3. Använd följande kommandon för att rensa resurser:

        rm target -f -r
        rm azure-identity-extensions.xml
        
    2. Anslut till AKS-klustret genom att kopiera värdet shellCmdtoConnectAks som du sparade åt sidan tidigare, klistra in det i Bash-fönstret och sedan köra kommandot. Kommandot bör se ut ungefär som i följande exempel:

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

      Du bör se utdata som liknar följande exempel. Om du inte ser dessa utdata kan du felsöka och lösa problemet innan du fortsätter.

      Merged "<name>" as current context in /Users/<username>/.kube/config
      
    3. Exportera databasanslutningsmodellen och spara den till ${BASE_DIR}/mystaging/models/dbmodel.yaml. Följande steg extraherar databaskonfigurationsmodellen från ConfigMap sample-domain1-wdt-config-map. Namnet följer formatet <domain-uid>-wdt-config-map, där <domain-uid> anges under erbjudandedistributionen. Om du har ändrat standardvärdet ersätter du det med ditt eget domän-UID.

      1. Datanyckeln är <db-secret-name.yaml>. Använd följande kommando för att hämta databasens hemliga namn:

        export WLS_DOMAIN_UID=sample-domain1
        export WLS_DOMAIN_NS=${WLS_DOMAIN_UID}-ns
        export DB_K8S_SECRET_NAME=$(kubectl get secret -n ${WLS_DOMAIN_NS} | grep "ds-secret" | awk '{print $1}')
        
      2. Extrahera sedan databasmodellen med det här kommandot:

        kubectl get configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS} -o=jsonpath="{['data']['${DB_K8S_SECRET_NAME}\.yaml']}" >${BASE_DIR}/mystaging/models/dbmodel.yaml
        
      3. Använd slutligen följande kommando för att verifiera innehållet i dbmodel.yaml.

        cat ${BASE_DIR}/mystaging/models/dbmodel.yaml
        

        Utdata för det här kommandot bör likna följande struktur:

        # 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.
        
        resources:
          JDBCSystemResource:
            jdbc/WebLogicCafeDB:
              Target: 'cluster-1'
              JdbcResource:
              JDBCDataSourceParams:
                 JNDIName: [
                    jdbc/WebLogicCafeDB
                 ]
                 GlobalTransactionsProtocol: OnePhaseCommit
              JDBCDriverParams:
                 DriverName: com.microsoft.sqlserver.jdbc.SQLServerDriver
                 URL: '@@SECRET:ds-secret-sqlserver-1727147748:url@@'
                 PasswordEncrypted: '@@SECRET:ds-secret-sqlserver-1727147748:password@@'
                 Properties:
                    user:
                    Value: '@@SECRET:ds-secret-sqlserver-1727147748:user@@'
              JDBCConnectionPoolParams:
                    TestTableName: SQL SELECT 1
                    TestConnectionsOnReserve: true
        
  6. Använd följande kommandon för att skapa en arkivfil och ta sedan bort mappen wlsdeploy , som du inte behöver längre:

    cd ${BASE_DIR}/mystaging/models
    zip -r archive.zip wlsdeploy
    
    rm -f -r wlsdeploy
    
  7. Använd följande kommandon för att ladda ned och installera WebLogic Deploy Tooling (WDT) i mellanlagringskatalogen och ta bort dess weblogic-deploy/bin/*.cmd-filer , som inte används i UNIX-miljöer:

    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
    
  8. Använd följande kommando för att rensa WDT-installationsprogrammet:

    rm weblogic-deploy.zip
    
  9. Använd följande kommandon för att skapa en docker-fil:

    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
    COPY --chown=\$USER:\$GROUP ./ \${AUXILIARY_IMAGE_PATH}/
    USER \$USER
    EOF
    
  10. az acr build Kör kommandot med hjälp av ${BASE_DIR}/mystaging/Dockerfile, som du ser i följande exempel:

    export ACR_NAME=<value-from-clipboard>
    export IMAGE="wlsaks-auxiliary-image:1.0"
    
  11. Använd följande kommandon för att dubbelkolla mellanlagringsfilerna:

    cd ${BASE_DIR}/mystaging
    find -maxdepth 2 -type f -print
    

    Dessa kommandon ger utdata som liknar följande exempel:

    ./models/model.properties
    ./models/model.yaml
    ./models/appmodel.yaml
    ./models/dbmodel.yaml
    ./models/archive.zip
    ./Dockerfile
    ./weblogic-deploy/VERSION.txt
    ./weblogic-deploy/LICENSE.txt
    
  12. Skapa avbildningen med az acr build, som du ser i följande exempel:

    az acr build -t ${IMAGE} --build-arg AUXILIARY_IMAGE_PATH=/auxiliary -r ${ACR_NAME} --platform linux/amd64 .
    

    När du skapar avbildningen ser utdata ut ungefär som i följande exempel:

    ...
    Step 1/9 : FROM busybox
    latest: Pulling from library/busybox
    Digest: sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7
    Status: Image is up to date for busybox:latest
    ---> 65ad0d468eb1
    Step 2/9 : ARG AUXILIARY_IMAGE_PATH=/auxiliary
    ---> Running in 1f8f4e82ccb6
    Removing intermediate container 1f8f4e82ccb6
    ---> 947fde618be9
    Step 3/9 : ARG USER=oracle
    ---> Running in dda021591e41
    Removing intermediate container dda021591e41
    ---> f43d84be4517
    Step 4/9 : ARG USERID=1000
    ---> Running in cac4df6dfd13
    Removing intermediate container cac4df6dfd13
    ---> e5513f426c74
    Step 5/9 : ARG GROUP=root
    ---> Running in 8fec1763270c
    Removing intermediate container 8fec1763270c
    ---> 9ef233dbe279
    Step 6/9 : ENV AUXILIARY_IMAGE_PATH=${AUXILIARY_IMAGE_PATH}
    ---> Running in b7754f58157a
    Removing intermediate container b7754f58157a
    ---> 4a26a97eb572
    Step 7/9 : RUN adduser -D -u ${USERID} -G $GROUP $USER
    ---> Running in b6c1f1a81af1
    Removing intermediate container b6c1f1a81af1
    ---> 97d3e5ad7540
    Step 8/9 : COPY --chown=$USER:$GROUP ./ ${AUXILIARY_IMAGE_PATH}/
    ---> 21088171876f
    Step 9/9 : USER $USER
    ---> Running in 825e0abc9f6a
    Removing intermediate container 825e0abc9f6a
    ---> b81d6430fcda
    Successfully built b81d6430fcda
    Successfully tagged wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0
    2024/08/28 03:06:19 Successfully executed container: build
    2024/08/28 03:06:19 Executing step ID: push. Timeout(sec): 3600, Working directory: '', Network: ''
    2024/08/28 03:06:19 Pushing image: wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0, attempt 1
    The push refers to repository [wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image]
    ee589b3cda86: Preparing
    c1fd1adab3b9: Preparing
    d51af96cf93e: Preparing
    c1fd1adab3b9: Pushed
    d51af96cf93e: Pushed
    ee589b3cda86: Pushed
    1.0: digest: sha256:c813eb75576eb07a179c3cb4e70106ca7dd280f933ab33a2f6858de673b12eac size: 946
    2024/08/28 03:06:21 Successfully pushed image: wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0
    2024/08/28 03:06:21 Step ID: build marked as successful (elapsed time in seconds: 8.780235)
    2024/08/28 03:06:21 Populating digests for step ID: build...
    2024/08/28 03:06:22 Successfully populated digests for step ID: build
    2024/08/28 03:06:22 Step ID: push marked as successful (elapsed time in seconds: 1.980158)
    2024/08/28 03:06:22 The following dependencies were found:
    2024/08/28 03:06:22
    - image:
       registry: wlsaksacru6jyly7kztoqu.azurecr.io
       repository: wlsaks-auxiliary-image
       tag: "1.0"
       digest: sha256:c813eb75576eb07a179c3cb4e70106ca7dd280f933ab33a2f6858de673b12eac
    runtime-dependency:
       registry: registry.hub.docker.com
       repository: library/busybox
       tag: latest
       digest: sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7
    git: {}
    
    Run ID: ca1 was successful after 14s
    

    Avbildningen skickas till ACR efter ett lyckat bygge.

  13. Du kan köra az acr repository show för att testa om avbildningen skickas till fjärrlagringsplatsen, som du ser i följande exempel:

    az acr repository show --name ${ACR_NAME} --image ${IMAGE}
    

    Det här kommandot bör generera utdata som liknar följande exempel:

    {
       "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
    }
    

Använd extrabilden

I föregående steg skapade du den extra avbildningen, inklusive modeller och WDT. Använd den extra avbildningen på WebLogic Server-klustret med följande steg.

  1. Använd den extra avbildningen genom att korrigera domänens anpassade resursdefinition (CRD) med kommandot kubectl patch .

    Den extra bilden definieras i spec.configuration.model.auxiliaryImages, enligt följande exempel:

    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
    

    Använd följande kommandon för att öka restartVersion värdet och använda kubectl patch för att tillämpa den extra avbildningen på domänens CRD med hjälp av den definition som visas:

    export VERSION=$(kubectl -n ${WLS_DOMAIN_NS} get domain ${WLS_DOMAIN_UID} -o=jsonpath='{.spec.restartVersion}' | tr -d "\"")
    export VERSION=$((VERSION+1))
    
    export ACR_LOGIN_SERVER=$(az acr show --name ${ACR_NAME} --query "loginServer" --output tsv)
    
    cat <<EOF >patch-file.json
    [
      {
        "op": "replace",
        "path": "/spec/restartVersion",
        "value": "${VERSION}"
      },
      {
        "op": "add",
        "path": "/spec/configuration/model/auxiliaryImages",
        "value": [{"image": "$ACR_LOGIN_SERVER/$IMAGE", "imagePullPolicy": "IfNotPresent", "sourceModelHome": "/auxiliary/models", "sourceWDTInstallHome": "/auxiliary/weblogic-deploy"}]
      },
      {
       "op": "remove",
       "path": "/spec/configuration/model/configMap"
      }
    ]
    EOF
    
    kubectl -n ${WLS_DOMAIN_NS} patch domain ${WLS_DOMAIN_UID} \
        --type=json \
        --patch-file patch-file.json
    
  2. Eftersom databasanslutningen har konfigurerats i den extra avbildningen kör du följande kommando för att ta bort ConfigMap:

    kubectl delete configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS}
    

Innan du fortsätter väntar du tills följande kommando genererar följande utdata för administratörsservern och hanterade servrar:

kubectl get pod -n ${WLS_DOMAIN_NS} -w
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

Det kan ta 5–10 minuter för systemet att nå det här tillståndet. Följande lista innehåller en översikt över vad som händer medan du väntar:

  • Du bör se körningen sample-domain1-introspector först. Den här programvaran söker efter ändringar i domänens anpassade resurs så att den kan vidta nödvändiga åtgärder i Kubernetes-klustret.
  • När ändringar identifieras dödar domänens introspektor och startar nya poddar för att distribuera ändringarna.
  • Därefter bör podden avslutas sample-domain1-admin-server och startas om.
  • Sedan bör du se de två hanterade servrarna avsluta och starta om.
  • Endast när alla tre poddar visar 1/1 Running tillståndet är det ok att fortsätta.

Verifiera funktionerna i distributionen

Använd följande steg för att verifiera distributionens funktioner genom att visa WebLogic Server-administratörskonsolen och exempelappen:

  1. Klistra in värdet adminConsoleExternalUrl i adressfältet i en Internetansluten webbläsare. Du bör se den välbekanta inloggningsskärmen för WebLogic Server-administratörskonsolen.

  2. Logga in med användarnamnet weblogic och lösenordet som du angav när du distribuerade WebLogic Server från Azure Portal. Kom ihåg att det här värdet är wlsAksCluster2022.

  3. I rutan Domänstruktur väljer du Tjänster.

  4. Under Tjänsterna väljer du Datakällor.

  5. I panelen Sammanfattning av JDBC-datakällor väljer du Övervakning. Skärmen bör se ut ungefär som i följande exempel. Datakällans tillstånd körs på hanterade servrar.

    Skärmbild av datakällans tillstånd.

  6. I rutan Domänstruktur väljer du Distributioner.

  7. I tabellen Distributioner bör det finnas en rad. Namnet ska vara samma värde som Application värdet i filen appmodel.yaml . Välj namnet.

  8. Välj fliken Testning .

  9. Välj weblogic-café.

  10. I panelen Inställningar för weblogic-café väljer du fliken Testning .

  11. + Expandera ikonen bredvid weblogic-café. Skärmen bör se ut ungefär som i följande exempel. I synnerhet bör du se värden som liknar http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml i kolumnen Testpunkt .

    Skärmbild av weblogic-café testpunkter.

    Kommentar

    Hyperlänkarna i kolumnen Testpunkt kan inte väljas eftersom vi inte konfigurerade administratörskonsolen med den externa URL som den körs på. Den här artikeln visar administratörskonsolen för WebLogic Server bara som en demonstration. Använd inte WebLogic Server-administratörskonsolen för några varaktiga konfigurationsändringar när du kör WebLogic Server på AKS. Den molnbaserade designen av WebLogic Server på AKS kräver att alla varaktiga konfigurationer måste representeras i de första Docker-avbildningarna eller tillämpas på aks-klustret som körs med hjälp av CI/CD-tekniker, till exempel uppdatering av modellen, enligt beskrivningen i Oracle-dokumentationen.

  12. Förstå värdet för context-path exempelappen som du distribuerade. Om du har distribuerat den rekommenderade exempelappen är den context-path weblogic-cafe.

  13. Skapa en fullständigt kvalificerad URL för exempelappen genom att lägga context-path till värdet till clusterExternalUrl . Om du har distribuerat den rekommenderade exempelappen bör den fullständigt kvalificerade URL:en vara ungefär som http://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/.

  14. Klistra in den fullständigt kvalificerade URL:en i en Internetansluten webbläsare. Om du har distribuerat den rekommenderade exempelappen bör du se resultat som liknar följande skärmbild:

    Skärmbild av testwebbappen.

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öljande kommando tar 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

Läs mer om att köra WebLogic Server på AKS eller virtuella datorer genom att följa dessa länkar:

Mer information om Oracle WebLogic-erbjudanden på Azure Marketplace finns i Oracle WebLogic Server på Azure. Dessa erbjudanden är alla Bring-Your-Own-License. De förutsätter att du redan har rätt licenser med Oracle och är korrekt licensierade för att köra erbjudanden i Azure.