Een Java-toepassing implementeren met WebLogic Server in een AKS-cluster (Azure Kubernetes Service)
In dit artikel wordt uitgelegd hoe u het volgende kunt doen:
- Voer uw Java-toepassing uit op Oracle WebLogic Server (WLS).
- Stel een WebLogic Server-cluster op in AKS met behulp van een Azure Marketplace-aanbieding.
- Bouw een Docker-toepassingsinstallatiekopieën met WDT-modellen (WebLogic Deploy Tooling).
- Implementeer de containertoepassing in het WebLogic Server-cluster op AKS met verbinding met Microsoft Azure SQL.
In dit artikel wordt de Azure Marketplace-aanbieding voor WebLogic Server gebruikt om uw traject naar AKS te versnellen. Met de aanbieding worden automatisch verschillende Azure-resources ingericht, waaronder de volgende resources:
- Een Azure Container Registry-exemplaar
- Een AKS-cluster
- Een AGIC-exemplaar (Azure-app Gateway Ingress Controller)
- De WebLogic Kubernetes-operator
- Een containerinstallatiekopieën met inbegrip van de WebLogic-runtime
- Een WebLogic Server-cluster zonder toepassing
Vervolgens introduceert het artikel het bouwen van een installatiekopieën om het WebLogic Server-cluster bij te werken. De installatiekopieën bieden de toepassings- en WDT-modellen.
Als u liever een minder geautomatiseerde benadering hebt voor het implementeren van WebLogic in AKS, raadpleegt u de stapsgewijze richtlijnen in de officiële documentatie van Oracle voor Azure Kubernetes Service.
Als u feedback wilt geven of nauw wilt samenwerken aan uw migratiescenario's met het technische team dat WebLogic op AKS-oplossingen ontwikkelt, vult u deze korte enquête over WebLogic-migratie in en neemt u uw contactgegevens op. Het team van programmamanagers, architecten en technici neemt onmiddellijk contact met u op om nauwe samenwerking te initiëren.
Vereisten
- Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
- Zorg ervoor dat de Azure-identiteit die u gebruikt om u aan te melden en te voltooien, de rol Eigenaar in het huidige abonnement heeft of de rollen Inzender en Beheerder voor gebruikerstoegang in het huidige abonnement. Zie Wat is op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC)voor een overzicht van Azure-rollen? Zie ingebouwde Azure-rollen voor meer informatie over de specifieke rollen die door WLS in AKS zijn vereist.
- De referenties voor een Oracle-account voor eenmalige aanmelding (SSO) hebben. Zie Uw Oracle-account maken om er een te maken.
- Accepteer de licentievoorwaarden voor WebLogic Server.
- Ga naar Oracle Container Registry en meld u aan.
- Als u een ondersteuningsrechten hebt, selecteert u Middleware, zoekt en selecteert u weblogic_cpu.
- Als u geen ondersteuningsrechten van Oracle hebt, selecteert u Middleware en zoekt en selecteert u weblogic.
- Accepteer de gebruiksrechtovereenkomst.
Notitie
Ontvang een ondersteuningsrechten van Oracle voordat u naar productie gaat. Als u dit niet doet, worden onveilige installatiekopieën uitgevoerd die niet zijn gepatcht op kritieke beveiligingsfouten. Zie Essentiële patchupdates, beveiligingswaarschuwingen en bulletins van Oracle voor meer informatie over essentiële patchupdates van Oracle.
- Bereid een lokale computer voor waarop unix-achtige besturingssystemen zijn geïnstalleerd, bijvoorbeeld Ubuntu, Azure Linux, macOS Windows-subsysteem voor Linux.
- Azure CLI. Gebruik
az --version
dit om te testen of az works. Dit document is getest met versie 2.55.1. - kubectl. Gebruik
kubectl version
dit om te testen of kubectl werkt. Dit document is getest met versie v1.21.2. - Een Java Development Kit (JDK). In het artikel wordt u doorsturen om Microsoft Build van OpenJDK 11 te installeren. Zorg ervoor dat uw
JAVA_HOME
omgevingsvariabele juist is ingesteld in de shells waarin u de opdrachten uitvoert. - Maven 3.5.0 of hoger.
- Zorg ervoor dat het zip-/unzip-hulpprogramma is geïnstalleerd. Gebruik
zip/unzip -v
dit om te testen ofzip/unzip
het werkt.
- Azure CLI. Gebruik
Een Azure SQL-database maken
In deze sectie maakt u een Azure SQL Database met behulp van Microsoft Entra-verificatie, waarbij de verbinding met beheerde identiteit is ingeschakeld.
Een brongroep maken
Maak een resourcegroep maken met az group create. Omdat resourcegroepen uniek moeten zijn binnen een abonnement, kiest u een unieke naam. Een eenvoudige manier om unieke namen te hebben, is door een combinatie van uw initialen, de datum van vandaag en een bepaalde id te gebruiken. Bijvoorbeeld: abc1228rg
. In dit voorbeeld wordt een resourcegroep gemaakt met de naam abc1228rg
op de eastus
locatie:
export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location eastus
Een databaseserver en een database maken
Maak een server met de opdracht az sql server create. In dit voorbeeld wordt een server met de naam myazuresql20130213
gebruiker azureuser
en beheerderswachtwoord gemaakt. Vervang <your-password>
door uw wachtwoord. Zie quickstart: Een individuele database maken - Azure SQL Database voor meer informatie.
Notitie
Hoewel u hier een gebruikersnaam en wachtwoord gebruikt, worden deze referenties niet buiten de database weergegeven. De verbinding tussen de toepassingslaag en de database wordt beveiligd met beheerde identiteiten.
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
Maak een database met de opdracht az sql db create in de serverloze rekenlaag.
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
Een Microsoft Entra-beheerder configureren
Zie Verbinding maken met Behulp van Microsoft Entra-verificatie voor meer informatie over hoe Azure SQL Server communiceert met beheerde identiteiten.
Gebruik de volgende stappen om vanuit Azure Portal een Microsoft Entra-beheerdersaccount te configureren voor Azure SQL-server:
- Open in Azure Portal het Azure SQL Server-exemplaar
myazuresql20130213
. - Selecteer Instellingen en selecteer vervolgens Microsoft Entra-id. Selecteer Beheerder instellen op de pagina Microsoft Entra-id.
- Zoek op de pagina Beheerder toevoegen naar een gebruiker, selecteer de gebruiker of groep als beheerder en selecteer Vervolgens Selecteren.
- Selecteer Opslaan boven aan de pagina Microsoft Entra-id. Voor Microsoft Entra-gebruikers en -groepen wordt de object-id weergegeven naast de naam van de beheerder.
- Het wijzigen van de beheerder kan enkele minuten duren. Vervolgens wordt de nieuwe beheerder weergegeven in het vak Microsoft Entra ID .
Een door de gebruiker toegewezen beheerde identiteit maken
Maak vervolgens in Azure CLI een identiteit in uw abonnement met behulp van de opdracht az identity create . U gebruikt deze beheerde identiteit om verbinding te maken met uw database.
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
Een databasegebruiker maken voor uw beheerde identiteit
Maak nu vanuit Azure Portal verbinding als de Microsoft Entra-beheerdergebruiker met uw Azure SQL-database en maak een gebruiker voor uw beheerde identiteit.
Maak eerst een firewallregel voor toegang tot de Azure SQL-server vanuit de portal, zoals wordt weergegeven in de volgende stappen:
- Open in Azure Portal het Azure SQL Server-exemplaar
myazuresql20130213
. - Selecteer Beveiliging en selecteer Vervolgens Netwerken.
- Selecteer onder Firewallregels het IPV4-IP-adres van de client toevoegen.
- Selecteer Onder Uitzonderingen de optie Azure-services en -resources toegang geven tot deze server.
- Selecteer Opslaan.
Nadat de firewallregel is gemaakt, hebt u toegang tot de Azure SQL-server vanuit de portal. Gebruik de volgende stappen om een databasegebruiker te maken:
Selecteer Instellingen en selecteer vervolgens SQL-databases. Selecteer
mysingledatabase20230213
.Selecteer Query-editor. Zoek op de pagina Welkom bij SQL Database Power Query-editor onder Active Directory-verificatie een bericht zoals
Logged in as user@contoso.com
.Selecteer Doorgaan als user@contoso.com, waar
user
is de naam van uw AD-beheerdersaccount.Nadat u zich hebt aangemeld, voert u in de query 1-editor de volgende opdrachten uit om een databasegebruiker voor beheerde identiteit
myManagedIdentity
te maken.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
Selecteer Uitvoeren in de query 1-editor om de SQL-opdrachten uit te voeren.
Als de opdrachten zijn voltooid, kunt u een bericht vinden met de tekst
Query succeeded: Affected rows: 0
.
Gebruik de volgende opdracht om de verbindingsreeks op te halen die u in de volgende sectie gebruikt:
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}
Een schema voor de voorbeeldtoepassing maken
Selecteer Nieuwe query en voer vervolgens in de query-editor de volgende query uit:
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);
Na een geslaagde uitvoering ziet u het bericht Query is voltooid: Betrokken rijen: 1. Als u dit bericht niet ziet, lost u het probleem op voordat u doorgaat.
U kunt doorgaan met het implementeren van WLS in de AKS-aanbieding.
WebLogic Server implementeren in AKS
Gebruik de volgende stappen om de WebLogic Server op AKS-aanbieding te vinden en vul het deelvenster Basisbeginselen in:
Voer in de zoekbalk boven aan Azure Portal weblogic in. Selecteer in de zoekresultaten met automatische suggesties in de sectie Marketplace de optie WebLogic Server op AKS.
U kunt ook rechtstreeks naar de WebLogic Server op AKS-aanbieding gaan.
Selecteer Maken op de pagina aanbieding.
Controleer in het deelvenster Basisbeginselen of de waarde die wordt weergegeven in het veld Abonnement hetzelfde is als waarmee u bent aangemeld in Azure. Zorg ervoor dat u de rollen hebt die worden vermeld in de sectie Vereisten voor het abonnement.
U moet de aanbieding implementeren in een lege resourcegroep. Selecteer Nieuwe maken in het veld Resourcegroep en vul vervolgens een waarde in voor de resourcegroep. Omdat resourcegroepen uniek moeten zijn binnen een abonnement, kiest u een unieke naam. Een eenvoudige manier om unieke namen te hebben, is door een combinatie van uw initialen, de datum van vandaag en een id te gebruiken,
ejb0723wls
bijvoorbeeld.Selecteer onder Exemplaardetails de regio voor de implementatie. Zie beschikbaarheid van AKS-regio's voor een lijst met Azure-regio's waar AKS beschikbaar is.
Laat onder Referenties voor WebLogic de standaardwaarde voor Gebruikersnaam voor WebLogic-beheerder staan.
Vul het wachtwoord voor WebLogic Administrator in
wlsAksCluster2022
. Gebruik dezelfde waarde voor de bevestigings- en Wachtwoord voor weblogic-modelversleutelingsvelden .Selecteer Volgende.
Gebruik de volgende stappen om het implementatieproces te starten:
Blader naar de sectie met het label Een Oracle-account voor eenmalige aanmelding (SSO) opgeven. Vul uw Oracle SSO-referenties in vanuit de voorwaarden.
Let op de stappen in het infovak die beginnen met Voordat u verdergaat, moet u de Standaardvoorwaarden en -beperkingen van Oracle accepteren.
Afhankelijk van of het Oracle SSO-account een Oracle-ondersteuningsrechten heeft, selecteert u de juiste optie voor Het type WebLogic Server-installatiekopieën selecteren. Als het account een ondersteuningsrechten heeft, selecteert u Patched WebLogic Server-installatiekopieën. Selecteer anders General WebLogic Server Images.
Laat de waarde in de gewenste combinatie van WebLogic Server selecteren staan... op de standaardwaarde. U hebt een breed scala aan keuzemogelijkheden voor WebLogic Server, JDK en besturingssysteemversie.
Selecteer Nee in de sectie Toepassing naast Een toepassing implementeren?.
De volgende stappen zorgen ervoor dat de WebLogic Server-beheerconsole en de voorbeeld-app worden blootgesteld aan het openbare internet met een ingebouwde invoegtoepassing voor inkomend verkeer van Application Gateway. Zie Wat is application gateway toegangsbeheerobjectcontroller voor meer informatie ?
Selecteer Volgende om het deelvenster TLS/SSL weer te geven.
Selecteer Volgende om het deelvenster Taakverdeling weer te geven.
Selecteer naast opties voor taakverdeling de controller voor inkomend verkeer van Application Gateway.
Onder de controller voor inkomend verkeer van Application Gateway ziet u alle velden die vooraf zijn ingevuld met de standaardwaarden voor virtueel netwerk en subnet. Laat de standaardwaarden staan.
Selecteer Ja voor Toegangsbeheerconsole maken.
Selecteer Volgende om het DNS-deelvenster weer te geven.
Selecteer Volgende om het deelvenster Database weer te geven.
Gebruik de volgende stappen om een databaseverbinding te configureren met behulp van een beheerde identiteit:
- Voor Verbinding maken met database?, selecteert u Ja.
- Open onder Verbindingsinstellingen voor databasetype Kiezen de vervolgkeuzelijst en selecteer vervolgens Microsoft SQL Server (met ondersteuning voor verbinding zonder wachtwoord).
- Voer voor JNDI-naam jdbc/WebLogicCafeDB in.
- Voer voor DataSource-verbindingsreeks de verbindingsreeks in die u in de laatste sectie hebt verkregen.
- Selecteer Wachtwoordloze gegevensbronverbinding gebruiken.
- Voor door de gebruiker toegewezen beheerde identiteit selecteert u de beheerde identiteit die u in de vorige stap hebt gemaakt. In dit voorbeeld is de naam .
myManagedIdentity
- Selecteer Toevoegen.
De sectie Verbindingsinstellingen moet er als volgt uitzien:
Gebruik de volgende stappen om de implementatie te voltooien:
- Selecteer Controleren + maken. Zorg ervoor dat de validatie niet mislukt. Als dit mislukt, lost u validatieproblemen op en selecteert u Beoordelen en opnieuw maken .
- Selecteer Maken.
- Houd de voortgang van de implementatie op de implementatiepagina bij .
Afhankelijk van netwerkvoorwaarden en andere activiteiten in uw geselecteerde regio kan het tot 50 minuten duren voordat de implementatie is voltooid.
Notitie
Als uw organisatie vereist dat u de workload in een virtueel bedrijfsnetwerk implementeert zonder openbare IP-adressen toegestaan, kunt u de interne Load Balancer-service kiezen. Als u de interne Load Balancer-service wilt configureren, gebruikt u de volgende stappen op het tabblad Taakverdeling :
Selecteer Standard Load Balancer Service voor opties voor taakverdeling.
Selecteer Interne load balancer gebruiken.
Voeg de volgende rijen toe aan de tabel:
Servicenaamvoorvoegsel Doel Poort wls-admin-internal
admin-server
7001 wls-cluster-internal
cluster-1
8001
Het tabblad Taakverdeling moet er als volgt uitzien:
Na de implementatie kunt u de toegangs-URL's van de beheerserver en het cluster vinden vanuit de uitvoer, gelabeld adminConsoleExternalUrl en clusterExternalUrl.
De uitvoer van de implementatie onderzoeken
Gebruik de stappen in deze sectie om te controleren of de implementatie is geslaagd.
Als u weg navigeert van de implementatiepagina wordt uitgevoerd , ziet u in de volgende stappen hoe u terug kunt gaan naar die pagina. Als u nog steeds op de pagina bent waarin wordt aangegeven dat uw implementatie is voltooid, kunt u doorgaan naar stap 5 na de volgende schermopname.
Selecteer in de hoek van een azure-portalpagina het hamburgermenu en selecteer Resourcegroepen.
Voer in het vak met het tekstfilter voor een veld de eerste paar tekens in van de resourcegroep die u eerder hebt gemaakt. Als u de aanbevolen conventie hebt gevolgd, voert u uw initialen in en selecteert u vervolgens de juiste resourcegroep.
Selecteer Implementaties in het navigatiedeelvenster in de sectie Instellingen. U ziet een geordende lijst met de implementaties voor deze resourcegroep, met de meest recente eerst.
Schuif naar het oudste item in deze lijst. Deze vermelding komt overeen met de implementatie die u in de vorige sectie hebt gestart. Selecteer de oudste implementatie, zoals wordt weergegeven in de volgende schermopname.
Selecteer Uitvoer in het navigatiedeelvenster. In deze lijst worden de uitvoerwaarden van de implementatie weergegeven. Nuttige informatie wordt opgenomen in de uitvoer.
De waarde adminConsoleExternalUrl is de volledig gekwalificeerde, openbare internet zichtbare koppeling naar de WebLogic Server-beheerconsole voor dit AKS-cluster. Selecteer het kopieerpictogram naast de veldwaarde om de koppeling naar het klembord te kopiëren. Sla deze waarde opzij voor later gebruik.
De clusterExternalUrl-waarde is de volledig gekwalificeerde, openbare internet zichtbare koppeling naar de voorbeeld-app die is geïmplementeerd in WebLogic Server op dit AKS-cluster. Selecteer het kopieerpictogram naast de veldwaarde om de koppeling naar het klembord te kopiëren. Sla deze waarde opzij voor later gebruik.
De waarde shellCmdtoOutputWlsImageModelYaml is de base64-tekenreeks van het WDT-model dat wordt gebruikt om de containerinstallatiekopie te bouwen. Sla deze waarde opzij voor later gebruik.
De waarde shellCmdtoOutputWlsImageProperties is de base64-tekenreeks van de eigenschappen van het WDT-model die wordt gebruikt om de containerinstallatiekopie te bouwen. Sla deze waarde opzij voor later gebruik.
De shellCmdtoConnectAks-waarde is de Azure CLI-opdracht om verbinding te maken met dit specifieke AKS-cluster.
De andere waarden in de uitvoer vallen buiten het bereik van dit artikel, maar worden uitgebreid beschreven in de gebruikershandleiding voor WebLogic in AKS.
De voorbeeldtoepassing configureren en implementeren
De aanbieding richt het WebLogic Server-cluster in via een model in de afbeelding. Op dit moment is er geen toepassing geïmplementeerd voor het WebLogic Server-cluster.
In deze sectie wordt het WebLogic Server-cluster bijgewerkt door een voorbeeldtoepassing te implementeren met behulp van een hulpinstallatiekopieën.
De toepassing uitchecken
In deze sectie kloont u de voorbeeldcode voor deze handleiding. Het voorbeeld bevindt zich op GitHub in de opslagplaats weblogic-on-azure in de map javaee/weblogic-café/ . Hier ziet u de bestandsstructuur van de toepassing.
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
Gebruik de volgende opdrachten om de opslagplaats te klonen:
# 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
Als u een bericht ziet over 'losgekoppelde HEAD'-status, is dit bericht veilig te negeren. Het betekent alleen dat je een tag hebt uitgecheckt.
Gebruik de volgende opdracht om javaee/weblogic-café/te bouwen:
mvn clean package --file $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/pom.xml
Het pakket moet worden gegenereerd en zich bevinden op $BASE_DIR/weblogic-on-azure/javaee/weblogic-café/target/weblogic-café.war. Als u het pakket niet ziet, moet u het probleem oplossen voordat u doorgaat.
Azure Container Registry gebruiken om een hulpinstallatiekopieën te maken
In de stappen in deze sectie ziet u hoe u een hulpinstallatiekopieën bouwt. Deze afbeelding bevat de volgende onderdelen:
- Het model in afbeeldingsmodelbestanden
- Uw toepassing
- Het archiefbestand van het JDBC-stuurprogramma (Java Database Connectivity)
- De installatie van de WebLogic Deploy Tooling
Een hulpinstallatiekopie is een Docker-containerinstallatiekopie die uw app en configuratie bevat. De WebLogic Kubernetes Operator combineert uw hulpinstallatiekopieën met het domain.spec.image
in het AKS-cluster dat de WebLogic Server, JDK en het besturingssysteem bevat. Zie Hulpinstallatiekopieën in de Oracle-documentatie voor meer informatie over hulpinstallatiekopieën .
Voor deze sectie is een Linux-terminal vereist waarop Azure CLI en kubectl zijn geïnstalleerd.
Gebruik de volgende stappen om de installatiekopieën te bouwen:
Gebruik de volgende opdrachten om een map te maken om de modellen en toepassingen te faseringen:
mkdir -p ${BASE_DIR}/mystaging/models cd ${BASE_DIR}/mystaging/models
Kopieer de shellCmdtoOutputWlsImageModelYaml-waarde die u hebt opgeslagen uit de uitvoer van de implementatie, plak deze in het Bash-venster en voer de opdracht uit. De opdracht moet er ongeveer uitzien als in het volgende voorbeeld:
echo -e IyBDb3B5cmlna...Cgo= | base64 -d > model.yaml
Met deze opdracht wordt een bestand ${BASE_DIR}/mystaging/models/model.yaml gegenereerd met inhoud die vergelijkbaar is met het volgende voorbeeld:
# 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"
Kopieer op een vergelijkbare manier de waarde shellCmdtoOutputWlsImageProperties , plak deze in het Bash-venster en voer de opdracht uit. De opdracht moet er ongeveer uitzien als in het volgende voorbeeld:
echo -e IyBDb3B5cml...pFPTUK | base64 -d > model.properties
Met deze opdracht wordt een bestand ${BASE_DIR}/mystaging/models/model.properties gegenereerd met inhoud die vergelijkbaar is met het volgende voorbeeld:
# 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
Gebruik de volgende stappen om het toepassingsmodelbestand te maken.
Gebruik de volgende opdrachten om weblogic-café.war te kopiëren en op te slaan in 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
Gebruik de volgende opdrachten om het toepassingsmodelbestand te maken met de weergegeven inhoud. Sla het modelbestand op in ${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
Gebruik de volgende stappen om de verbinding met de gegevensbron te configureren.
Gebruik de volgende stappen om het JDBC-stuurprogramma van Microsoft SQL Server en de Azure Identity Extension te downloaden en te installeren waarmee databaseverbindingen worden ingeschakeld met behulp van Azure Managed Identity.
Gebruik de volgende opdrachten om het JDBC-stuurprogramma van Microsoft SQL Server te downloaden en te installeren om
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
Gebruik de volgende opdrachten om de Azure Identity Extension te installeren voor
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/
Gebruik de volgende opdrachten om resources op te schonen:
rm target -f -r rm azure-identity-extensions.xml
Maak verbinding met het AKS-cluster door de shellCmdtoConnectAks-waarde te kopiëren die u eerder hebt opgeslagen, deze in het Bash-venster te plakken en vervolgens de opdracht uit te voeren. De opdracht moet er ongeveer uitzien als in het volgende voorbeeld:
az account set --subscription <subscription>; az aks get-credentials \ --resource-group <resource-group> \ --name <name>
De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld. Als u deze uitvoer niet ziet, kunt u het probleem oplossen voordat u doorgaat.
Merged "<name>" as current context in /Users/<username>/.kube/config
Exporteer het databaseverbindingsmodel en sla het op in ${BASE_DIR}/mystaging/models/dbmodel.yaml. Met de volgende stappen wordt het databaseconfiguratiemodel uit de ConfigMap
sample-domain1-wdt-config-map
geëxtraheerd. De naam volgt de notatie<domain-uid>-wdt-config-map
, waar<domain-uid>
deze is ingesteld tijdens de implementatie van de aanbieding. Als u de standaardwaarde hebt gewijzigd, vervangt u deze door uw eigen domein-UID.De gegevenssleutel is <db-secret-name.yaml>. Gebruik de volgende opdracht om de naam van het databasegeheim op te halen:
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}')
Pak vervolgens het databasemodel uit met deze opdracht:
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
Gebruik ten slotte de volgende opdracht om de inhoud van dbmodel.yaml te controleren.
cat ${BASE_DIR}/mystaging/models/dbmodel.yaml
De uitvoer van deze opdracht moet lijken op de volgende structuur:
# 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
Gebruik de volgende opdrachten om een archiefbestand te maken en verwijder vervolgens de map wlsdeploy , die u niet meer nodig hebt:
cd ${BASE_DIR}/mystaging/models zip -r archive.zip wlsdeploy rm -f -r wlsdeploy
Gebruik de volgende opdrachten om WebLogic Deploy Tooling (WDT) te downloaden en te installeren in de faseringsmap en de bijbehorende weblogic-deploy/bin/*.cmd-bestanden te verwijderen, die niet worden gebruikt in UNIX-omgevingen:
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
Gebruik de volgende opdracht om het WDT-installatieprogramma op te schonen:
rm weblogic-deploy.zip
Gebruik de volgende opdrachten om een Docker-bestand te maken:
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
Voer de
az acr build
opdracht uit met ${BASE_DIR}/mystaging/Dockerfile, zoals wordt weergegeven in het volgende voorbeeld:export ACR_NAME=<value-from-clipboard> export IMAGE="wlsaks-auxiliary-image:1.0"
Gebruik de volgende opdrachten om de faseringsbestanden te controleren:
cd ${BASE_DIR}/mystaging find -maxdepth 2 -type f -print
Deze opdrachten produceren uitvoer die vergelijkbaar is met het volgende voorbeeld:
./models/model.properties ./models/model.yaml ./models/appmodel.yaml ./models/dbmodel.yaml ./models/archive.zip ./Dockerfile ./weblogic-deploy/VERSION.txt ./weblogic-deploy/LICENSE.txt
Bouw de installatiekopieën met
az acr build
, zoals wordt weergegeven in het volgende voorbeeld:az acr build -t ${IMAGE} --build-arg AUXILIARY_IMAGE_PATH=/auxiliary -r ${ACR_NAME} --platform linux/amd64 .
Wanneer u de installatiekopieën bouwt, ziet de uitvoer er ongeveer als volgt uit:
... 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
De installatiekopieën worden na een geslaagde build naar ACR gepusht.
U kunt uitvoeren
az acr repository show
om te testen of de installatiekopieën naar de externe opslagplaats zijn gepusht, zoals wordt weergegeven in het volgende voorbeeld:az acr repository show --name ${ACR_NAME} --image ${IMAGE}
Met deze opdracht moet uitvoer worden geproduceerd die vergelijkbaar is met het volgende voorbeeld:
{ "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 }
De hulpinstallatiekopieën toepassen
In de vorige stappen hebt u de hulpinstallatiekopieën gemaakt, inclusief modellen en WDT. Pas de hulpinstallatiekopieën toe op het WebLogic Server-cluster met de volgende stappen.
Pas de hulpinstallatiekopieën toe door de aangepaste resourcedefinitie van het domein (CRD) te patchen met behulp van de
kubectl patch
opdracht.De hulpinstallatiekopieën worden gedefinieerd in
spec.configuration.model.auxiliaryImages
, zoals wordt weergegeven in het volgende voorbeeld: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
Gebruik de volgende opdrachten om de
restartVersion
waarde te verhogen en dekubectl patch
hulpinstallatiekopieën toe te passen op het domein CRD met behulp van de weergegeven definitie: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
Omdat de databaseverbinding is geconfigureerd in de hulpinstallatiekopieën, voert u de volgende opdracht uit om de ConfigMap te verwijderen:
kubectl delete configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS}
Voordat u doorgaat, wacht u totdat de volgende opdracht de volgende uitvoer produceert voor de beheerserver en beheerde servers:
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
Het kan 5-10 minuten duren voordat het systeem deze status heeft bereikt. De volgende lijst bevat een overzicht van wat er gebeurt terwijl u wacht:
- Als het goed is, ziet u eerst de
sample-domain1-introspector
uitvoering. Deze software zoekt naar wijzigingen in de aangepaste domeinresource, zodat deze de benodigde acties op het Kubernetes-cluster kan uitvoeren. - Wanneer er wijzigingen worden gedetecteerd, wordt de introspector van het domein gedood en worden nieuwe pods gestart om de wijzigingen uit te rollen.
- Vervolgens ziet u dat de
sample-domain1-admin-server
pod wordt beëindigd en opnieuw wordt gestart. - Vervolgens ziet u dat de twee beheerde servers worden beëindigd en opnieuw worden gestart.
- Alleen wanneer alle drie de pods de
1/1 Running
status tonen, is het ok om door te gaan.
De functionaliteit van de implementatie controleren
Gebruik de volgende stappen om de functionaliteit van de implementatie te controleren door de WebLogic Server-beheerconsole en de voorbeeld-app te bekijken:
Plak de waarde adminConsoleExternalUrl in de adresbalk van een webbrowser met internetverbinding. U ziet nu het vertrouwde aanmeldingsscherm van de WebLogic Server-beheerconsole.
Meld u aan met de gebruikersnaam
weblogic
en het wachtwoord dat u hebt ingevoerd bij het implementeren van WebLogic Server vanuit Azure Portal. Zoals u weet, iswlsAksCluster2022
deze waarde .Selecteer Services in het vak Domeinstructuur.
Selecteer onder De Services gegevensbronnen.
Selecteer Bewaking in het deelvenster Samenvatting van JDBC-gegevensbronnen. Uw scherm moet er ongeveer uitzien als in het volgende voorbeeld. U vindt dat de status van de gegevensbron wordt uitgevoerd op beheerde servers.
Selecteer Implementaties in het vak Domeinstructuur.
In de tabel Implementaties moet er één rij zijn. De naam moet dezelfde waarde zijn als de
Application
waarde in het bestand appmodel.yaml . Selecteer de naam.Selecteer het tabblad Testen .
Selecteer weblogic-café.
Selecteer in het deelvenster Instellingen voor weblogic-café het tabblad Testen .
Vouw het + pictogram naast weblogic-café uit. Uw scherm moet er ongeveer uitzien als in het volgende voorbeeld. In het bijzonder ziet u waarden die vergelijkbaar zijn met
http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml
in de kolom Testpunt .Notitie
De hyperlinks in de kolom Testpunt kunnen niet worden geselecteerd omdat we de beheerconsole niet hebben geconfigureerd met de externe URL waarop deze wordt uitgevoerd. In dit artikel wordt de WebLogic Server-beheerconsole alleen maar gedemonstreerd. Gebruik de WebLogic Server-beheerconsole niet voor duurzame configuratiewijzigingen bij het uitvoeren van WebLogic Server op AKS. Voor het cloudeigen ontwerp van WebLogic Server op AKS moet elke duurzame configuratie worden weergegeven in de eerste Docker-installatiekopieën of worden toegepast op het actieve AKS-cluster met behulp van CI/CD-technieken zoals het bijwerken van het model, zoals beschreven in de Oracle-documentatie.
Inzicht in de
context-path
waarde van de voorbeeld-app die u hebt geïmplementeerd. Als u de aanbevolen voorbeeld-app hebt geïmplementeerd, isweblogic-cafe
datcontext-path
.Maak een volledig gekwalificeerde URL voor de voorbeeld-app door de
context-path
waarde clusterExternalUrl toe te voegen. Als u de aanbevolen voorbeeld-app hebt geïmplementeerd, moet de volledig gekwalificeerde URL er ongeveer als volgthttp://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/
uitzien.Plak de volledig gekwalificeerde URL in een webbrowser die is verbonden met internet. Als u de aanbevolen voorbeeld-app hebt geïmplementeerd, ziet u resultaten die vergelijkbaar zijn met de volgende schermopname:
Resources opschonen
Om Azure-kosten te voorkomen, moet u overbodige resources opschonen. Gebruik de opdracht az group delete als u het cluster niet meer nodig hebt. Met de volgende opdracht verwijdert u de resourcegroep, containerservice, containerregister, database en alle gerelateerde resources:
az group delete --name <resource-group-name> --yes --no-wait
az group delete --name <db-resource-group-name> --yes --no-wait
Volgende stappen
Volg deze koppelingen voor meer informatie over het uitvoeren van WebLogic Server op AKS of virtuele machines:
Zie Oracle WebLogic Server in Azure voor meer informatie over de Oracle WebLogic-aanbiedingen op Azure Marketplace. Deze aanbiedingen zijn allemaal Bring-Your-Own-License. Ze gaan ervan uit dat u al over de juiste licenties met Oracle beschikt en dat u een juiste licentie hebt om aanbiedingen uit te voeren in Azure.
Azure Kubernetes Service