Menyebarkan aplikasi Java dengan WebLogic Server pada kluster Azure Kubernetes Service (AKS)
Artikel ini menunjukkan cara untuk:
- Jalankan aplikasi Java Anda di Oracle WebLogic Server (WLS).
- Berdirikan kluster WebLogic Server di AKS menggunakan penawaran Marketplace Azure.
- Buat gambar Docker aplikasi yang menyertakan model WebLogic Deploy Tooling (WDT).
- Sebarkan aplikasi dalam kontainer ke kluster WebLogic Server di AKS dengan koneksi ke Microsoft Azure SQL.
Artikel ini menggunakan penawaran Marketplace Azure untuk WebLogic Server untuk mempercepat perjalanan Anda ke AKS. Penawaran ini secara otomatis menyediakan beberapa sumber daya Azure, termasuk sumber daya berikut:
- Instans Azure Container Registry
- Kluster AKS
- Instans Pengontrol Ingress Azure App Gateway (AGIC)
- The WebLogic Kubernetes Operator
- Gambar kontainer termasuk runtime WebLogic
- Kluster WebLogic Server tanpa aplikasi
Kemudian, artikel ini memperkenalkan pembuatan gambar untuk memperbarui kluster WebLogic Server. Gambar menyediakan aplikasi dan model WDT.
Jika Anda lebih suka pendekatan yang kurang otomatis untuk menyebarkan WebLogic di AKS, lihat panduan langkah demi langkah yang disertakan dalam dokumentasi resmi dari Oracle untuk Azure Kubernetes Service.
Jika Anda tertarik untuk memberikan umpan balik atau bekerja erat pada skenario migrasi Anda dengan tim teknik yang mengembangkan WebLogic pada solusi AKS, isi survei singkat ini tentang migrasi WebLogic dan sertakan informasi kontak Anda. Tim manajer program, arsitek, dan insinyur akan segera menghubungi Anda untuk memulai kolaborasi yang erat.
Prasyarat
- Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.
- Pastikan identitas Azure yang Anda gunakan untuk masuk dan menyelesaikan artikel ini memiliki peran Pemilik dalam langganan saat ini atau peran Kontributor dan Administrator Akses Pengguna dalam langganan saat ini. Untuk gambaran umum peran Azure, lihat Apa itu kontrol akses berbasis peran Azure (Azure RBAC)? Untuk detail tentang peran tertentu yang diperlukan oleh WLS di AKS, lihat Peran bawaan Azure.
- Memiliki kredensial untuk akun akses menyeluruh (SSO) Oracle. Untuk membuatnya, lihat Membuat Akun Oracle Anda.
- Terima ketentuan lisensi untuk WebLogic Server.
- Kunjungi Oracle Container Registry dan masuk.
- Jika Anda memiliki pemberian dukungan, pilih Middleware, lalu cari dan pilih weblogic_cpu.
- Jika Anda tidak memiliki pemberian dukungan dari Oracle, pilih Middleware, lalu cari dan pilih weblogic.
- Terima perjanjian lisensi.
Catatan
Dapatkan pemberian dukungan dari Oracle sebelum pergi ke produksi. Kegagalan untuk melakukannya mengakibatkan berjalannya gambar yang tidak aman yang tidak di-patch untuk kelemahan keamanan penting. Untuk informasi selengkapnya tentang pembaruan patch penting Oracle, lihat Pembaruan Patch Kritis, Pemberitahuan Keamanan, dan Buletin dari Oracle.
- Siapkan komputer lokal dengan sistem operasi seperti Unix yang terinstal - misalnya, Ubuntu, Azure Linux, macOS, Subsistem Windows untuk Linux.
- Azure CLI. Gunakan
az --version
untuk menguji apakah az bekerja. Dokumen ini diuji dengan versi 2.55.1. - kubectl. Gunakan
kubectl version
untuk menguji apakah kubectl berfungsi. Dokumen ini diuji dengan versi v1.21.2. - Java Development Kit (JDK). Artikel ini mengarahkan Anda untuk menginstal Microsoft Build of OpenJDK 11. Pastikan variabel lingkungan Anda
JAVA_HOME
diatur dengan benar di shell tempat Anda menjalankan perintah. - Maven 3.5.0 atau lebih tinggi.
- Pastikan Anda telah menginstal utilitas zip/unzip. Gunakan
zip/unzip -v
untuk menguji apakahzip/unzip
berfungsi.
- Azure CLI. Gunakan
Membuat Azure SQL Database
Bagian ini membuat Azure SQL Database menggunakan autentikasi Microsoft Entra, dengan koneksi identitas terkelola diaktifkan.
Buat grup sumber daya
Membuat grup sumber daya dengan membuat grup az. Karena grup sumber daya harus unik di dalam langganan, pilih nama unik. Cara mudah untuk memiliki nama unik adalah dengan menggunakan kombinasi inisial Anda, tanggal hari ini, dan beberapa pengidentifikasi. Contohnya,abc1228rg
. Contoh ini membuat grup sumber daya bernama abc1228rg
di eastus
lokasi:
export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location eastus
Membuat server database dan database
Buat server dengan perintah buat server sql az. Contoh ini membuat server bernama myazuresql20130213
dengan pengguna azureuser
admin dan kata sandi admin. Ganti <your-password>
dengan kata sandi Anda. Untuk informasi selengkapnya, lihat Mulai Cepat: Membuat database tunggal - Azure SQL Database.
Catatan
Meskipun Anda menggunakan nama pengguna dan kata sandi di sini, kredensial ini tidak diekspos di luar database. Koneksi antara lapisan aplikasi dan database diamankan dengan identitas terkelola.
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
Buat database dengan perintah az sql db create di tingkat komputer tanpa server.
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
Mengonfigurasi administrator Microsoft Entra
Untuk informasi tentang bagaimana Azure SQL Server berinteraksi dengan identitas terkelola, lihat Menyambungkan menggunakan autentikasi Microsoft Entra.
Gunakan langkah-langkah berikut untuk mengonfigurasi akun administrator Microsoft Entra ke server Azure SQL dari portal Azure:
- Di portal Azure, buka instans
myazuresql20130213
server Azure SQL . - Pilih Pengaturan, lalu pilih ID Microsoft Entra. Pada halaman ID Microsoft Entra, pilih Atur admin.
- Pada halaman Tambahkan admin , cari pengguna, pilih pengguna atau grup untuk menjadi administrator, lalu pilih Pilih.
- Di bagian atas halaman ID Microsoft Entra, pilih Simpan. Untuk pengguna dan grup Microsoft Entra, ID Objek ditampilkan di samping nama admin.
- Proses mengubah administrator mungkin memakan waktu beberapa menit. Kemudian, administrator baru muncul di kotak ID Microsoft Entra.
Membuat identitas terkelola yang ditetapkan pengguna
Selanjutnya, di Azure CLI, buat identitas di langganan Anda dengan menggunakan perintah az identity create . Anda menggunakan identitas terkelola ini untuk menyambungkan ke database Anda.
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
Membuat pengguna database untuk identitas terkelola Anda
Sekarang, sambungkan sebagai pengguna administrator Microsoft Entra ke database Azure SQL Anda dari portal Azure, dan buat pengguna untuk identitas terkelola Anda.
Pertama, buat aturan firewall untuk mengakses server Azure SQL dari portal, seperti yang diperlihatkan dalam langkah-langkah berikut:
- Di portal Azure, buka instans
myazuresql20130213
server Azure SQL . - Pilih Keamanan, lalu pilih Jaringan.
- Di bawah Aturan firewall, pilih Tambahkan alamat IP IPV4 klien Anda.
- Di bawah Pengecualian, pilih Izinkan layanan dan sumber daya Azure untuk mengakses server ini.
- Pilih Simpan.
Setelah aturan firewall dibuat, Anda dapat mengakses server Azure SQL dari portal. Gunakan langkah-langkah berikut untuk membuat pengguna database:
Pilih Pengaturan, lalu pilih database SQL. Pilih
mysingledatabase20230213
.Pilih Editor kueri. Pada halaman Selamat Datang di Editor Kueri SQL Database, di bawah Autentikasi Direktori Aktif, temukan pesan seperti
Logged in as user@contoso.com
.Pilih Lanjutkan sebagai user@contoso.com, di mana
user
adalah nama akun admin AD Anda.Setelah masuk, di editor Kueri 1 , jalankan perintah berikut untuk membuat pengguna database untuk identitas terkelola
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
Di editor Kueri 1, pilih Jalankan untuk menjalankan perintah SQL.
Jika perintah berhasil diselesaikan, Anda dapat menemukan pesan yang mengatakan
Query succeeded: Affected rows: 0
.
Gunakan perintah berikut untuk mendapatkan string koneksi yang Anda gunakan di bagian berikutnya:
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}
Membuat skema untuk aplikasi sampel
Pilih Kueri Baru lalu, di editor kueri, jalankan kueri berikut ini:
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);
Setelah berhasil dijalankan, Anda akan melihat pesan Kueri berhasil: Baris yang terpengaruh: 1. Jika Anda tidak melihat pesan ini, pecahkan masalah dan atasi masalah sebelum melanjutkan.
Anda dapat melanjutkan untuk menyebarkan WLS pada penawaran AKS.
Menyebarkan WebLogic Server di AKS
Gunakan langkah-langkah berikut untuk menemukan WebLogic Server pada penawaran AKS dan isi panel Dasar :
Di bilah pencarian di bagian atas portal Azure, masukkan weblogic. Di hasil pencarian autosuggested, di bagian Marketplace , pilih WebLogic Server di AKS.
Anda juga dapat langsung masuk ke WebLogic Server pada penawaran AKS .
Pada halaman penawaran, pilih Buat.
Pada panel Dasar , pastikan nilai yang diperlihatkan di bidang Langganan sama dengan yang Anda masuki di Azure. Pastikan Anda memiliki peran yang tercantum di bagian prasyarat untuk langganan.
Anda harus menyebarkan penawaran dalam grup sumber daya kosong. Di bidang Grup sumber daya, pilih Buat baru lalu isi nilai untuk grup sumber daya. Karena grup sumber daya harus unik di dalam langganan, pilih nama unik. Cara mudah untuk memiliki nama unik adalah dengan menggunakan kombinasi inisial Anda, tanggal hari ini, dan beberapa pengidentifikasi - misalnya,
ejb0723wls
.Di bawah Detail instans, pilih wilayah untuk penyebaran. Untuk daftar wilayah Azure tempat AKS tersedia, lihat Ketersediaan wilayah AKS.
Di bawah Kredensial untuk WebLogic, biarkan nilai default untuk Nama Pengguna untuk Administrator WebLogic.
wlsAksCluster2022
Isi kata sandi untuk Administrator WebLogic. Gunakan nilai yang sama untuk konfirmasi dan Kata Sandi untuk bidang enkripsi Model WebLogic.Pilih Selanjutnya.
Gunakan langkah-langkah berikut memulai proses penyebaran:
Gulir ke bagian berlabel Sediakan akun Akses Menyeluruh (SSO) Oracle. Isi kredensial Oracle SSO Anda dari prasyarat.
Pastikan Anda mencatat langkah-langkah dalam kotak info yang dimulai dengan Sebelum melanjutkan, Anda harus menerima Ketentuan dan Batasan Standar Oracle.
Bergantung pada apakah akun Oracle SSO memiliki hak dukungan Oracle atau tidak, pilih opsi yang sesuai untuk Pilih jenis Gambar Server WebLogic. Jika akun memiliki pemberian dukungan, pilih Gambar Server WebLogic Yang Di-patch. Jika tidak, pilih Gambar Server WebLogic Umum.
Biarkan nilai di Pilih kombinasi WebLogic Server yang diinginkan... pada nilai defaultnya. Anda memiliki berbagai pilihan untuk WebLogic Server, JDK, dan versi OS.
Di bagian Aplikasi , di samping Sebarkan aplikasi?, pilih Tidak.
Langkah-langkah berikut membuatnya sehingga konsol admin WebLogic Server dan aplikasi sampel diekspos ke Internet publik dengan add-on ingress Application Gateway bawaan. Untuk informasi selengkapnya, lihat Apa itu Pengontrol Ingress Application Gateway?
Pilih Berikutnya untuk melihat panel TLS/SSL .
Pilih Berikutnya untuk melihat panel Penyeimbangan beban.
Di samping Opsi Penyeimbangan Beban, pilih Pengontrol Ingress Application Gateway.
Di bawah Pengontrol Ingress Application Gateway, Anda akan melihat semua bidang yang telah diisi sebelumnya dengan default untuk Jaringan virtual dan Subnet. Biarkan nilai default.
Untuk Buat ingress untuk Konsol Administrasi, pilih Ya.
Pilih Berikutnya untuk melihat panel DNS .
Pilih Berikutnya untuk melihat panel Database .
Gunakan langkah-langkah berikut untuk mengonfigurasi koneksi database menggunakan identitas terkelola:
- Untuk Sambungkan ke database?, pilih Ya.
- Di bawah Pengaturan koneksi, untuk Pilih jenis database, buka menu dropdown lalu pilih Microsoft SQL Server (dengan dukungan untuk koneksi tanpa kata sandi).
- Untuk Nama JNDI, masukkan jdbc/WebLogicCafeDB.
- Untuk String Koneksi DataSource, masukkan string koneksi yang Anda peroleh di bagian terakhir.
- Pilih Gunakan koneksi sumber data tanpa kata sandi.
- Untuk Identitas terkelola yang ditetapkan pengguna, pilih identitas terkelola yang Anda buat di langkah sebelumnya. Dalam contoh ini, namanya adalah
myManagedIdentity
. - Pilih Tambahkan.
Bagian Pengaturan koneksi akan terlihat seperti cuplikan layar berikut:
Gunakan langkah-langkah berikut untuk menyelesaikan penyebaran:
- Pilih Tinjau + buat. Pastikan validasi tidak gagal. Jika gagal, perbaiki masalah validasi, lalu pilih Tinjau + buat lagi.
- Pilih Buat.
- Lacak kemajuan penyebaran pada halaman Penyebaran sedang berlangsung .
Bergantung pada kondisi jaringan dan aktivitas lain di wilayah yang Anda pilih, penyebaran mungkin memerlukan waktu hingga 50 menit untuk diselesaikan.
Catatan
Jika organisasi Anda mengharuskan Anda untuk menyebarkan beban kerja dalam jaringan virtual perusahaan tanpa IP publik yang diizinkan, Anda dapat memilih layanan Load Balancer internal. Untuk mengonfigurasi layanan Load Balancer internal, gunakan langkah-langkah berikut di tab Load balancing :
Untuk Opsi Load Balancing, pilih Layanan Load Balancer Standar.
Pilih Gunakan Load Balancer Internal.
Tambahkan baris berikut ke tabel:
Awalan nama layanan Target Port wls-admin-internal
admin-server
7001 wls-cluster-internal
cluster-1
8001
Tab Penyeimbangan beban akan terlihat seperti cuplikan layar berikut:
Setelah penyebaran, Anda dapat menemukan URL akses server admin dan kluster dari output, berlabel adminConsoleExternalUrl dan clusterExternalUrl.
Memeriksa output penyebaran
Gunakan langkah-langkah di bagian ini untuk memverifikasi bahwa penyebaran berhasil.
Jika Anda menavigasi jauh dari halaman Penyebaran sedang berlangsung , langkah-langkah berikut menunjukkan kepada Anda cara kembali ke halaman tersebut. Jika Anda masih berada di halaman yang memperlihatkan Penyebaran Anda selesai, Anda dapat melompat ke langkah 5 setelah cuplikan layar berikutnya.
Di sudut halaman portal Azure mana pun, pilih menu hamburger dan pilih Grup sumber daya.
Dalam kotak dengan teks Filter untuk bidang apa pun, masukkan beberapa karakter pertama grup sumber daya yang Anda buat sebelumnya. Apabila Anda mengikuti konvensi yang direkomendasikan, masukkan inisial Anda, kemudian pilih grup sumber daya yang sesuai.
Di panel navigasi, di bagian Pengaturan, pilih Penyebaran. Anda melihat daftar penyebaran yang diurutkan ke grup sumber daya ini, dengan yang terbaru terlebih dahulu.
Gulir ke entri terlama dalam daftar ini. Entri ini sesuai dengan penyebaran yang Anda mulai di bagian sebelumnya. Pilih penyebaran terlama, seperti yang ditunjukkan pada cuplikan layar berikut.
Di panel navigasi, pilih Output. Daftar ini memperlihatkan nilai output dari penyebaran. Informasi yang berguna disertakan dalam output.
Nilai adminConsoleExternalUrl adalah tautan internet publik yang sepenuhnya memenuhi syarat dan terlihat ke konsol admin WebLogic Server untuk kluster AKS ini. Pilih ikon salin di samping nilai bidang untuk menyalin tautan ke clipboard Anda. Simpan nilai ini selain untuk nanti.
Nilai clusterExternalUrl adalah tautan internet publik yang sepenuhnya memenuhi syarat dan terlihat ke aplikasi sampel yang disebarkan di WebLogic Server pada kluster AKS ini. Pilih ikon salin di samping nilai bidang untuk menyalin tautan ke clipboard Anda. Simpan nilai ini selain untuk nanti.
Nilai shellCmdtoOutputWlsImageModelYaml adalah string base64 dari model WDT yang digunakan untuk membangun gambar kontainer. Simpan nilai ini selain untuk nanti.
Nilai shellCmdtoOutputWlsImageProperties adalah string base64 dari properti model WDT yang digunakan untuk membangun gambar kontainer. Simpan nilai ini selain untuk nanti.
Nilai shellCmdtoConnectAks adalah perintah Azure CLI untuk menyambungkan ke kluster AKS tertentu ini.
Nilai lain dalam output berada di luar cakupan artikel ini, tetapi dijelaskan secara rinci dalam panduan pengguna WebLogic di AKS.
Konfigurasikan dan sebarkan aplikasi sampel
Penawaran ini menyediakan kluster WebLogic Server melalui model dalam gambar. Saat ini, kluster WebLogic Server tidak memiliki aplikasi yang disebarkan.
Bagian ini memperbarui kluster WebLogic Server dengan menyebarkan aplikasi sampel menggunakan gambar tambahan.
Lihat aplikasinya
Di bagian ini, Anda mengkloning kode sampel untuk panduan ini. Sampel ada di GitHub di repositori weblogic-on-azure di folder javaee/weblogic-café/ . Berikut struktur file aplikasi tersebut.
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
Gunakan perintah berikut untuk mengkloning repositori:
# 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
Jika Anda melihat pesan tentang berada dalam status "HEAD yang terlepas", pesan ini aman untuk diabaikan. Ini hanya berarti Anda memeriksa tag.
Gunakan perintah berikut untuk membangun javaee/weblogic-café/:
mvn clean package --file $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/pom.xml
Paket harus berhasil dibuat dan terletak di $BASE_DIR/weblogic-on-azure/javaee/weblogic-café/target/weblogic-café.war. Jika tidak melihat paket, Anda harus memecahkan masalah dan menyelesaikan masalah sebelum melanjutkan.
Menggunakan Azure Container Registry untuk membuat gambar tambahan
Langkah-langkah di bagian ini menunjukkan kepada Anda cara membuat gambar tambahan. Gambar ini mencakup komponen berikut:
- Model dalam file model Gambar
- Aplikasi Anda
- File arsip driver Java Database Connectivity (JDBC)
- Penginstalan WebLogic Deploy Tooling
Gambar tambahan adalah gambar kontainer Docker yang berisi aplikasi dan konfigurasi Anda. Operator WebLogic Kubernetes menggabungkan gambar tambahan Anda dengan domain.spec.image
di kluster AKS yang berisi WebLogic Server, JDK, dan sistem operasi. Untuk informasi selengkapnya tentang gambar tambahan, lihat Gambar tambahan dalam dokumentasi Oracle.
Bagian ini memerlukan terminal Linux dengan Azure CLI dan kubectl yang diinstal.
Gunakan langkah-langkah berikut untuk membangun gambar:
Gunakan perintah berikut untuk membuat direktori untuk menahapkan model dan aplikasi:
mkdir -p ${BASE_DIR}/mystaging/models cd ${BASE_DIR}/mystaging/models
Salin nilai shellCmdtoOutputWlsImageModelYaml yang Anda simpan dari output penyebaran, tempelkan ke jendela Bash, dan jalankan perintah . Perintah akan terlihat mirip dengan contoh berikut:
echo -e IyBDb3B5cmlna...Cgo= | base64 -d > model.yaml
Perintah ini menghasilkan file ${BASE_DIR}/mystaging/models/model.yaml dengan konten yang mirip dengan contoh berikut:
# 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"
Dengan cara yang sama, salin nilai shellCmdtoOutputWlsImageProperties , tempelkan ke jendela Bash, dan jalankan perintah . Perintah akan terlihat mirip dengan contoh berikut:
echo -e IyBDb3B5cml...pFPTUK | base64 -d > model.properties
Perintah ini menghasilkan file ${BASE_DIR}/mystaging/models/model.properties dengan konten yang mirip dengan contoh berikut:
# 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
Gunakan langkah-langkah berikut untuk membuat file model aplikasi.
Gunakan perintah berikut untuk menyalin weblogic-café.war dan simpan ke 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
Gunakan perintah berikut untuk membuat file model aplikasi dengan konten yang ditampilkan. Simpan file model ke ${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
Gunakan langkah-langkah berikut untuk mengonfigurasi koneksi sumber data.
Gunakan langkah-langkah berikut untuk mengunduh dan menginstal driver Microsoft SQL Server JDBC dan Ekstensi Identitas Azure yang memungkinkan koneksi database menggunakan Azure Managed Identity.
Gunakan perintah berikut untuk mengunduh dan menginstal driver Microsoft SQL Server JDBC ke
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
Gunakan perintah berikut untuk menginstal Ekstensi Identitas Azure ke
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/
Gunakan perintah berikut untuk membersihkan sumber daya:
rm target -f -r rm azure-identity-extensions.xml
Sambungkan ke kluster AKS dengan menyalin nilai shellCmdtoConnectAks yang Anda simpan sebelumnya, menempelkannya ke jendela Bash, lalu jalankan perintah . Perintah akan terlihat mirip dengan contoh berikut:
az account set --subscription <subscription>; az aks get-credentials \ --resource-group <resource-group> \ --name <name>
Anda akan melihat output yang mirip dengan contoh berikut. Jika Anda tidak melihat output ini, pecahkan masalah dan atasi masalah sebelum melanjutkan.
Merged "<name>" as current context in /Users/<username>/.kube/config
Ekspor model koneksi database dan simpan ke ${BASE_DIR}/mystaging/models/dbmodel.yaml. Langkah-langkah berikut mengekstrak model konfigurasi database dari ConfigMap
sample-domain1-wdt-config-map
. Nama mengikuti format<domain-uid>-wdt-config-map
, di mana<domain-uid>
diatur selama penyebaran penawaran. Jika Anda memodifikasi nilai default, ganti dengan UID domain Anda sendiri.Kunci data adalah db-secret-name.yaml>.< Gunakan perintah berikut untuk mengambil nama rahasia database:
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}')
Selanjutnya, ekstrak model database dengan perintah ini:
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
Terakhir, gunakan perintah berikut untuk memverifikasi konten dbmodel.yaml.
cat ${BASE_DIR}/mystaging/models/dbmodel.yaml
Output perintah ini harus menyerupai struktur berikut:
# 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
Gunakan perintah berikut untuk membuat file arsip lalu hapus folder wlsdeploy , yang tidak Anda perlukan lagi:
cd ${BASE_DIR}/mystaging/models zip -r archive.zip wlsdeploy rm -f -r wlsdeploy
Gunakan perintah berikut untuk mengunduh dan menginstal WebLogic Deploy Tooling (WDT) di direktori penahapan dan menghapus file weblogic-deploy/bin/*.cmd , yang tidak digunakan di lingkungan UNIX:
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
Gunakan perintah berikut untuk membersihkan alat penginstal WDT:
rm weblogic-deploy.zip
Gunakan perintah berikut untuk membuat file docker:
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
Jalankan
az acr build
perintah menggunakan ${BASE_DIR}/mystaging/Dockerfile, seperti yang ditunjukkan dalam contoh berikut:export ACR_NAME=<value-from-clipboard> export IMAGE="wlsaks-auxiliary-image:1.0"
Gunakan perintah berikut untuk memeriksa kembali file penahapan:
cd ${BASE_DIR}/mystaging find -maxdepth 2 -type f -print
Perintah ini menghasilkan output yang mirip dengan contoh berikut:
./models/model.properties ./models/model.yaml ./models/appmodel.yaml ./models/dbmodel.yaml ./models/archive.zip ./Dockerfile ./weblogic-deploy/VERSION.txt ./weblogic-deploy/LICENSE.txt
Buat gambar dengan
az acr build
, seperti yang ditunjukkan dalam contoh berikut:az acr build -t ${IMAGE} --build-arg AUXILIARY_IMAGE_PATH=/auxiliary -r ${ACR_NAME} --platform linux/amd64 .
Saat Anda berhasil membangun gambar, output terlihat mirip dengan contoh berikut:
... 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
Gambar didorong ke ACR setelah build berhasil.
Anda dapat menjalankan
az acr repository show
untuk menguji apakah gambar berhasil didorong ke repositori jarak jauh, seperti yang ditunjukkan dalam contoh berikut:az acr repository show --name ${ACR_NAME} --image ${IMAGE}
Perintah ini harus menghasilkan output yang mirip dengan contoh berikut:
{ "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 }
Menerapkan gambar tambahan
Pada langkah-langkah sebelumnya, Anda membuat gambar tambahan termasuk model dan WDT. Terapkan gambar tambahan ke kluster WebLogic Server dengan langkah-langkah berikut.
Terapkan gambar tambahan dengan menambal definisi sumber daya kustom domain (CRD) menggunakan
kubectl patch
perintah .Gambar tambahan didefinisikan dalam
spec.configuration.model.auxiliaryImages
, seperti yang ditunjukkan dalam contoh berikut: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
Gunakan perintah berikut untuk meningkatkan
restartVersion
nilai dan menggunakankubectl patch
untuk menerapkan gambar tambahan ke CRD domain menggunakan definisi yang diperlihatkan: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
Karena koneksi database dikonfigurasi dalam gambar tambahan, jalankan perintah berikut untuk menghapus ConfigMap:
kubectl delete configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS}
Sebelum melanjutkan, tunggu hingga perintah berikut menghasilkan output berikut untuk server admin dan server terkelola:
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
Mungkin perlu waktu 5-10 menit agar sistem mencapai status ini. Daftar berikut ini memberikan gambaran umum tentang apa yang terjadi saat Anda menunggu:
- Anda akan melihat yang
sample-domain1-introspector
berjalan terlebih dahulu. Perangkat lunak ini mencari perubahan pada sumber daya kustom domain sehingga dapat mengambil tindakan yang diperlukan pada kluster Kubernetes. - Ketika perubahan terdeteksi, introspektor domain akan membunuh dan memulai pod baru untuk meluncurkan perubahan.
- Selanjutnya, Anda akan melihat
sample-domain1-admin-server
pod dihentikan dan dimulai ulang. - Kemudian, Anda akan melihat dua server terkelola mengakhiri dan memulai ulang.
- Hanya ketika ketiga pod menunjukkan status
1/1 Running
, apakah tidak apa-apa untuk melanjutkan.
Memverifikasi fungsionalitas penyebaran
Gunakan langkah-langkah berikut untuk memverifikasi fungsi penyebaran dengan melihat konsol admin WebLogic Server dan aplikasi sampel:
Tempelkan nilai adminConsoleExternalUrl ke bilah alamat browser web yang terhubung ke Internet. Anda akan melihat layar masuk konsol admin WebLogic Server yang sudah dikenal.
Masuk dengan nama
weblogic
pengguna dan kata sandi yang Anda masukkan saat menyebarkan WebLogic Server dari portal Azure. Ingat bahwa nilai ini adalahwlsAksCluster2022
.Dalam kotak Struktur Domain, pilih Layanan.
Di bawah Layanan, pilih Sumber Data.
Di panel Ringkasan Sumber Data JDBC, pilih Pemantauan. Layar Anda akan terlihat mirip dengan contoh berikut. Anda menemukan status sumber data berjalan di server terkelola.
Dalam kotak Struktur Domain, pilih Penyebaran.
Dalam tabel Penyebaran, harus ada satu baris. Nama harus bernilai
Application
sama dengan nilai dalam file appmodel.yaml Anda. Pilih nama.Pilih tab Pengujian .
Pilih weblogic-café.
Di panel Pengaturan untuk weblogic-café , pilih tab Pengujian .
Perluas ikon di + samping weblogic-café. Layar Anda akan terlihat mirip dengan contoh berikut. Secara khusus, Anda akan melihat nilai yang mirip
http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml
dengan di kolom Titik Uji.Catatan
Hyperlink di kolom Titik Uji tidak dapat dipilih karena kami tidak mengonfigurasi konsol admin dengan URL eksternal tempatnya berjalan. Artikel ini menunjukkan konsol admin WebLogic Server hanya dengan cara demonstrasi. Jangan gunakan konsol admin WebLogic Server untuk perubahan konfigurasi yang tahan lama saat menjalankan WebLogic Server di AKS. Desain cloud-native WebLogic Server di AKS mengharuskan konfigurasi tahan lama harus diwakili dalam gambar docker awal atau diterapkan ke kluster AKS yang sedang berjalan menggunakan teknik CI/CD seperti memperbarui model, seperti yang dijelaskan dalam dokumentasi Oracle.
context-path
Pahami nilai aplikasi sampel yang Anda sebarkan. Jika Anda menyebarkan aplikasi sampel yang direkomendasikan,context-path
adalahweblogic-cafe
.Buat URL yang sepenuhnya memenuhi syarat untuk aplikasi sampel dengan menambahkan ke
context-path
nilai clusterExternalUrl . Jika Anda menyebarkan aplikasi sampel yang direkomendasikan, URL yang sepenuhnya memenuhi syarat harus sepertihttp://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/
.Tempelkan URL yang sepenuhnya memenuhi syarat di browser web yang terhubung ke Internet. Jika Anda menyebarkan aplikasi sampel yang direkomendasikan, Anda akan melihat hasil yang mirip dengan cuplikan layar berikut:
Membersihkan sumber daya
Untuk menghindari biaya Azure, Anda harus membersihkan sumber daya yang tidak diperlukan. Saat Anda tidak lagi membutuhkan kluster, gunakan perintah az group delete. Perintah berikut menghapus grup sumber daya, layanan kontainer, registri kontainer, database, dan semua sumber daya terkait:
az group delete --name <resource-group-name> --yes --no-wait
az group delete --name <db-resource-group-name> --yes --no-wait
Langkah berikutnya
Pelajari selengkapnya tentang menjalankan WebLogic Server di AKS atau komputer virtual dengan mengikuti tautan berikut:
Untuk informasi selengkapnya tentang penawaran Oracle WebLogic di Marketplace Azure, lihat Oracle WebLogic Server di Azure. Semua penawaran ini adalah Bring-Your-Own-License. Mereka berasumsi bahwa Anda sudah memiliki lisensi yang sesuai dengan Oracle dan dilisensikan dengan benar untuk menjalankan penawaran di Azure.
Azure Kubernetes Service