Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memperlihatkan kepada Anda cara menjalankan Open Liberty di Azure Container Apps. Anda melakukan aktivitas berikut dalam artikel ini:
- Jalankan aplikasi Java, Java Enterprise Edition (EE), Jakarta EE, atau MicroProfile Anda pada runtime Open Liberty.
- Buat gambar Docker aplikasi menggunakan gambar kontainer Liberty.
- Sebarkan aplikasi dalam kontainer ke Azure Container Apps.
Untuk informasi selengkapnya tentang Open Liberty, lihat halaman proyek Open Liberty. Artikel ini dimaksudkan untuk membantu Anda dengan cepat mencapai implementasi. Sebelum masuk ke lingkungan produksi, Anda harus menjelajahi Tuning Liberty.
Jika Anda tertarik untuk memberikan umpan balik atau bekerja erat pada skenario migrasi Anda dengan tim teknik yang mengembangkan solusi Java di Azure, isi survei singkat ini tentang migrasi Azure dan sertakan informasi kontak Anda. Tim manajer program, arsitek, dan insinyur akan segera menghubungi Anda untuk memulai kolaborasi yang erat.
Prasyarat
- Langganan Azure. Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
- Siapkan komputer lokal dengan sistem operasi seperti Windows atau Unix yang terinstal - misalnya, Ubuntu, macOS, atau Subsistem Windows untuk Linux.
-
Instal Azure CLI 2.62.0 atau lebih tinggi untuk menjalankan perintah Azure CLI.
- Jika diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
- Jalankan
az versionuntuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankanaz upgrade.
- Instal implementasi Java Standard Edition (SE) versi 17 - misalnya, Microsoft build OpenJDK.
- Instal Maven 3.9.8 atau yang lebih tinggi.
- Pastikan Git diinstal.
Masuk ke Azure
Masuk ke langganan Azure Anda dengan menggunakan perintah az login dan ikuti petunjuk di layar.
az login
Catatan
Anda dapat menjalankan sebagian besar perintah Azure CLI di PowerShell sama seperti di Bash. Perbedaan hanya ada saat menggunakan variabel. Di bagian berikut, perbedaan ditangani di tab yang berbeda saat diperlukan.
Jika Anda memiliki beberapa tenant Azure yang terkait dengan kredensial Azure Anda, Anda harus menentukan tenant mana yang ingin Anda akses. Anda dapat menentukan penyewa dengan menggunakan opsi --tenant - misalnya, az login --tenant contoso.onmicrosoft.com.
Jika Anda memiliki beberapa langganan dalam satu tenant, pastikan Anda masuk dengan langganan yang ingin Anda gunakan dengan menggunakan az account set --subscription <subscription-id>.
Buat grup sumber daya
Grup sumber daya Azure adalah grup logis tempat sumber daya Azure disebarkan dan dikelola.
Buat grup sumber daya yang disebut java-liberty-project menggunakan perintah az group create di lokasi eastus2. Grup sumber daya ini digunakan nanti untuk membuat instans Azure Container Registry (ACR) dan instans Azure Container Apps.
export RESOURCE_GROUP_NAME=java-liberty-project
export LOCATION=eastus2
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Membuat sebuah instance ACR
Gunakan perintah az acr create untuk membuat instans ACR. Contoh berikut membuat instans ACR bernama youruniqueacrname. Pastikan youruniqueacrname unik dalam Azure.
Catatan
Artikel ini menggunakan mekanisme autentikasi tanpa kata sandi yang direkomendasikan untuk Container Registry. Masih dimungkinkan untuk menggunakan nama pengguna dan kata sandi dengan docker login setelah menggunakan az acr credential show untuk mendapatkan nama pengguna dan kata sandi. Menggunakan nama pengguna dan kata sandi kurang aman daripada autentikasi tanpa kata sandi.
export REGISTRY_NAME=youruniqueacrname
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic
Setelah beberapa saat, Anda akan melihat output JSON yang berisi baris berikut:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Selanjutnya, gunakan perintah berikut untuk mengambil server masuk untuk instans Container Registry. Anda memerlukan nilai ini saat menyebarkan gambar aplikasi ke Azure Container Apps nanti.
export ACR_LOGIN_SERVER=$(az acr show \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
Membuat lingkungan
Lingkungan di Aplikasi Kontainer Azure menciptakan batas aman di sekitar sekelompok aplikasi kontainer. Aplikasi Kontainer yang disebarkan ke lingkungan yang sama disebarkan di jaringan virtual yang sama dan menulis log ke ruang kerja Log Analytics yang sama. Gunakan perintah az containerapp env create untuk membuat lingkungan. Contoh berikut membuat lingkungan bernama youracaenvname:
export ACA_ENV=youracaenvname
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Jika Anda diminta untuk menginstal ekstensi, jawab Y.
Setelah beberapa saat, Anda akan melihat output JSON yang berisi baris berikut:
"provisioningState": "Succeeded",
"type": "Microsoft.App/managedEnvironments"
"resourceGroup": "java-liberty-project",
Membuat database tunggal di Azure SQL Database
Di bagian ini, Anda membuat database tunggal di Azure SQL Database, untuk digunakan dengan aplikasi Anda.
Pertama, gunakan perintah berikut untuk mengatur variabel lingkungan terkait database. Ganti <your-unique-sql-server-name> dengan nama unik untuk server Azure SQL Database Anda.
export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb
Selanjutnya, gunakan perintah berikut untuk membuat database tunggal di Azure SQL Database dan atur pengguna yang masuk saat ini sebagai admin Microsoft Entra. Untuk informasi selengkapnya, lihat mulai cepat : Membuat database tunggal - Azure SQL Database.
export ENTRA_ADMIN_NAME=$(az account show --query user.name --output tsv)
az sql server create \
--name $SQL_SERVER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--enable-ad-only-auth \
--external-admin-principal-type User \
--external-admin-name $ENTRA_ADMIN_NAME \
--external-admin-sid $(az ad signed-in-user show --query id --output tsv)
az sql db create \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name $DB_NAME \
--edition GeneralPurpose \
--compute-model Serverless \
--family Gen5 \
--capacity 2
Kemudian, gunakan perintah berikut untuk menambahkan alamat IP lokal ke aturan firewall server Azure SQL Database untuk memungkinkan komputer lokal Anda tersambung ke database untuk pengujian lokal nanti.
export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az sql server firewall-rule create \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS
Catatan
Anda membuat server Azure SQL dengan autentikasi SQL dinonaktifkan untuk pertimbangan keamanan. Hanya ID Microsoft Entra yang digunakan untuk mengautentikasi ke server. Jika Anda perlu mengaktifkan autentikasi SQL, lihat az sql server create.
Mengonfigurasi dan membuat gambar aplikasi
Untuk menyebarkan dan menjalankan aplikasi Liberty Anda di Azure Container Apps, kontainerisasi aplikasi Anda sebagai gambar Docker menggunakan gambar kontainer Open Liberty.
Ikuti langkah-langkah dalam bagian ini untuk menyebarkan aplikasi sampel pada runtime Liberty. Langkah-langkah ini menggunakan Maven.
Lihat aplikasinya
Gunakan perintah berikut untuk menyiapkan kode sampel untuk panduan ini. Sampelnya ada di GitHub.
git clone https://github.com/Azure-Samples/open-liberty-on-aca.git
cd open-liberty-on-aca
export BASE_DIR=$PWD
git checkout 20250327
Jika Anda melihat pesan tentang berada dalam detached HEAD status, pesan ini aman untuk diabaikan. Ini hanya berarti Anda mengecek tag.
Artikel ini menggunakan java-app. Berikut adalah struktur file file penting aplikasi:
java-app
├─ src/main/
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ pom.xml
├─ pom-azure-identity.xml
Direktori java, resources, dan webapp berisi kode sumber dari contoh aplikasi. Kode mendeklarasikan dan menggunakan sumber data bernama jdbc/JavaEECafeDB.
Di direktori akar aplikasi java, ada Dockerfile untuk membuat gambar aplikasi dengan Open Liberty.
Dalam direktori liberty/config, file server.xml digunakan untuk mengonfigurasi koneksi database untuk Open Liberty. Ini mendefinisikan variabel azure.sql.connectionstring yang digunakan untuk menyambungkan ke Azure SQL Database.
File pom.xml adalah file model objek proyek Maven (POM) yang berisi informasi konfigurasi untuk proyek. File pom-azure-identity.xml mendeklarasikan dependensi azure-identity, yang digunakan untuk mengautentikasi ke layanan Azure menggunakan ID Microsoft Entra.
Catatan
Sampel ini menggunakan pustaka azure-identity untuk mengautentikasi ke Azure SQL Database menggunakan autentikasi Microsoft Entra, yang direkomendasikan untuk pertimbangan keamanan. Jika Anda perlu menggunakan autentikasi SQL di aplikasi Liberty Anda, lihat koneksi ke database relasional dengan JDBC.
Membangun proyek
Gunakan perintah berikut untuk membangun aplikasi:
cd $BASE_DIR/java-app
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources
Jika build berhasil, Anda akan melihat output yang mirip dengan yang berikut ini di akhir build Anda.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.651 s
[INFO] Finished at: 2023-10-26T18:58:40-04:00
[INFO] ------------------------------------------------------------------------
Jika Anda tidak melihat output ini, pecahkan masalah dan atasi masalah sebelum melanjutkan.
Menguji proyek Anda secara lokal
Sekarang Anda dapat menggunakan langkah-langkah berikut untuk menjalankan dan menguji proyek secara lokal sebelum menyebarkan ke Azure. Untuk kenyamanan, gunakan liberty-maven-plugin. Untuk mempelajari lebih lanjut tentang liberty-maven-plugin, lihat Membangun aplikasi web dengan Maven. Untuk aplikasi Anda, Anda dapat melakukan sesuatu yang serupa menggunakan mekanisme lain, seperti IDE lokal Anda.
Catatan
Jika Anda memilih penyebaran database "tanpa server", verifikasi bahwa database SQL Anda tidak memasuki mode jeda. Salah satu cara untuk melakukan verifikasi adalah dengan masuk ke editor kueri database seperti yang dijelaskan dalam Panduan Mulai Cepat : Gunakan editor kueri portal Azure (pratinjau) untuk melakukan kueri Azure SQL Database.
Mulai aplikasi menggunakan
liberty:run.cd $BASE_DIR/java-app # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by the configuration variable azure.sql.connectionstring in server.xml. export AZURE_SQL_CONNECTIONSTRING="jdbc:sqlserver://$SQL_SERVER_NAME.database.windows.net:1433;databaseName=$DB_NAME;authentication=ActiveDirectoryDefault" mvn liberty:runVerifikasi bahwa aplikasi berfungsi seperti yang diharapkan. Jika berhasil, Anda akan melihat pesan yang mirip dengan
[INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 11.086 seconds.dalam output perintah. Bukahttp://localhost:9080/di browser Anda untuk memverifikasi bahwa aplikasi dapat diakses dan semua fungsi berfungsi.Tekan Ctrl+C untuk menghentikan. Pilih Y jika diminta untuk mengakhiri pekerjaan batch.
Setelah selesai, hapus aturan firewall yang memungkinkan alamat IP lokal Anda mengakses Azure SQL Database dengan menggunakan perintah berikut:
az sql server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP
Membangun citra untuk penerapan Azure Container Apps
Sekarang Anda dapat menjalankan az acr build perintah untuk membangun gambar, seperti yang ditunjukkan dalam contoh berikut:
cd $BASE_DIR/java-app
az acr build \
--registry ${REGISTRY_NAME} \
--image javaee-cafe:v1 \
.
Perintah az acr build mengunggah artefak yang ditentukan dalam Dockerfile ke instans Container Registry, membangun gambar, dan menyimpannya dalam instans Container Registry.
Menyebarkan aplikasi ke Azure Container Apps
Gunakan perintah berikut untuk membuat instans Azure Container Apps untuk menjalankan aplikasi setelah menarik gambar dari ACR. Contoh ini membuat instans Azure Container Apps bernama youracainstancename:
export ACA_NAME=youracainstancename
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--image ${ACR_LOGIN_SERVER}/javaee-cafe:v1 \
--environment $ACA_ENV \
--registry-server $ACR_LOGIN_SERVER \
--registry-identity system \
--target-port 9080 \
--ingress 'external' \
--min-replicas 1
Output yang berhasil adalah objek JSON termasuk properti "type": "Microsoft.App/containerApps".
Kemudian, sambungkan server Azure SQL Database ke aplikasi kontainer menggunakan Konektor Layanan dengan menggunakan langkah-langkah berikut:
- Buka portal Microsoft Azure di browser Anda dan navigasikan ke instans Azure Container Apps yang Anda buat di langkah sebelumnya.
- Di panel navigasi, pilih Pengaturan>Konektor Layanan (pratinjau).
- Pilih Buat. Anda seharusnya melihat jendela munculan Buat koneksi.
- Di panel Dasar, untuk Jenis Layanan, pilih SQL Database. Untuk Jenis klien, pilih Java. Biarkan bidang lain pada nilai defaultnya, lalu pilih Berikutnya: Autentikasi.
- Di panel Autentikasi, untuk jenis Autentikasi, pilih identitas terkelola yang ditetapkan sistem, lalu pilih Berikutnya: Jaringan.
- Di panel Jaringan, pilih Berikutnya: Tinjau + buat.
- Pada panel Tinjau + buat, tunggu hingga validasi selesai, lalu pilih Buat menggunakan Cloud Shell. Cloud Shell terbuka lalu menjalankan perintah untuk membuat koneksi. Tunggu hingga perintah selesai lalu tutup Cloud Shell.
Catatan
Konektor Layanan membuat rahasia di aplikasi kontainer yang berisi nilai untuk AZURE_SQL_CONNECTIONSTRING, yang merupakan string koneksi bebas kata sandi ke Azure SQL Database. Untuk informasi selengkapnya, lihat nilai sampel dari bagian identitas terkelola yang ditetapkan pengguna dalam Integrasi Database SQL Azure dengan Penghubung Layanan.
Uji aplikasi
Gunakan perintah berikut untuk mendapatkan URL yang sepenuhnya memenuhi syarat untuk mengakses aplikasi:
echo https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn \
--output tsv)
Untuk mengakses dan menguji aplikasi, buka browser web ke URL. Cuplikan layar berikut menunjukkan aplikasi yang sedang berjalan:
Membersihkan sumber daya
Untuk menghindari biaya Azure, Anda harus membersihkan sumber daya yang tidak diperlukan. Saat kluster tidak lagi diperlukan, gunakan perintah az group delete untuk menghapus grup sumber daya, registri kontainer, aplikasi kontainer, server database, dan semua sumber daya terkait.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Langkah berikutnya
Anda dapat mempelajari lebih lanjut dari referensi yang digunakan dalam panduan ini:
- Azure Container Apps
- Mengintegrasikan Azure SQL Database dengan Konektor Layanan
- Hubungkan dengan autentikasi Microsoft Entra
- Open Liberty
- Konfigurasi Server Open Liberty
- Plugin Liberty Maven
- Open Liberty Gambar Kontainer
Untuk menjelajahi opsi untuk menjalankan produk WebSphere di Azure, lihat Apa solusi untuk menjalankan keluarga produk WebSphere di Azure?