Menyebarkan aplikasi Java dengan Open Liberty atau WebSphere Liberty pada kluster Azure Kubernetes Service (AKS)
Artikel ini menunjukkan cara untuk:
- Jalankan aplikasi Java, Java EE, Jakarta EE, atau MicroProfile Anda pada runtime Open Liberty atau IBM WebSphere Liberty .
- Buat gambar Docker aplikasi dengan menggunakan gambar kontainer Open Liberty atau WebSphere Liberty.
- Sebarkan aplikasi dalam kontainer ke kluster Azure Kubernetes Service (AKS) dengan menggunakan Operator Open Liberty atau Operator WebSphere Liberty.
Open Liberty Operator menyederhanakan penyebaran dan pengelolaan aplikasi yang berjalan pada kluster Kube. Dengan Operator Open Liberty atau Operator WebSphere Liberty, Anda juga dapat melakukan operasi yang lebih canggih, seperti mengumpulkan jejak dan cadangan.
Artikel ini menggunakan penawaran Marketplace Azure untuk Open Liberty atau WebSphere Liberty untuk mempercepat perjalanan Anda ke AKS. Penawaran ini secara otomatis menyediakan beberapa sumber daya Azure, termasuk:
- Instans Azure Container Registry.
- Kluster AKS.
- Instans Application Gateway Ingress Controller (AGIC).
- Operator Open Liberty dan Operator WebSphere Liberty.
- Secara opsional, gambar kontainer yang mencakup Liberty dan aplikasi Anda.
Jika Anda lebih suka panduan langkah demi langkah manual untuk menjalankan Liberty di AKS, lihat Menyebarkan aplikasi Java secara manual dengan Open Liberty atau WebSphere Liberty pada kluster Azure Kubernetes Service (AKS).
Artikel ini dimaksudkan untuk membantu Anda dengan cepat sampai ke penyebaran. Sebelum pergi ke produksi, Anda harus menjelajahi dokumentasi IBM tentang penyetelan Liberty.
Jika Anda tertarik untuk memberikan umpan balik atau bekerja erat pada skenario migrasi Anda dengan tim teknik yang mengembangkan WebSphere di solusi Azure, isi survei singkat ini tentang migrasi WebSphere 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, buat Akun gratis Azure sebelum memulai.
- Siapkan komputer lokal dengan sistem operasi seperti Unix yang terinstal - misalnya, Ubuntu, Azure Linux, macOS, atau Subsistem Windows untuk Linux.
- Instal Azure CLI untuk menjalankan perintah Azure CLI.
- Masuk ke Azure CLI dengan perintah az login. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk ke Azure dengan Azure CLI.
- Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
- Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az. Artikel ini memerlukan setidaknya versi 2.31.0 Azure CLI.
- Instal implementasi Java Standard Edition (SE), versi 17 atau yang lebih baru (misalnya, Eclipse Open J9).
- Instal Maven 3.5.0 atau yang lebih tinggi.
- Pasang Docker untuk OS Anda.
- Pastikan Git diinstal.
- Pastikan Anda diberi
Owner
peran atauContributor
peran danUser Access Administrator
dalam langganan. Anda dapat memverifikasinya dengan mengikuti langkah-langkah dalam Mencantumkan penetapan peran untuk pengguna atau grup.
Membuat Liberty pada penyebaran AKS menggunakan portal
Langkah berikut memandu Anda untuk membuat runtime Liberty di AKS. Setelah menyelesaikan langkah-langkah ini, Anda akan memiliki instans Container Registry dan kluster AKS untuk menyebarkan aplikasi kontainer Anda.
Buka portal Microsoft Azure. Di kotak pencarian di bagian atas halaman, masukkan IBM Liberty di AKS. Saat saran muncul, pilih satu dan hanya cocok di bagian Marketplace .
Jika mau, Anda dapat langsung membuka penawaran.
Pilih Buat.
Pada panel Dasar :
Membuat grup sumber daya baru. Karena grup sumber daya harus unik dalam langganan, pilih nama unik. Cara mudah untuk memiliki nama unik adalah dengan menggunakan kombinasi inisial Anda, tanggal hari ini, dan beberapa pengidentifikasi (misalnya,
ejb0913-java-liberty-project-rg
).Untuk Wilayah, pilih US Timur.
Buat variabel lingkungan di shell Anda untuk nama grup sumber daya untuk kluster dan database:
export RESOURCE_GROUP_NAME=<your-resource-group-name>
Pilih Selanjutnya. Pada panel AKS , Anda dapat secara opsional memilih kluster AKS dan instans Container Registry yang ada, alih-alih menyebabkan penyebaran membuat yang baru. Pilihan ini memungkinkan Anda menggunakan pola sespan, seperti yang ditunjukkan di Azure Architecture Center. Anda juga dapat menyesuaikan pengaturan untuk ukuran dan jumlah mesin virtual di kumpulan node AKS.
Untuk tujuan artikel ini, simpan saja semua default di panel ini.
Pilih Selanjutnya. Pada panel Load Balancing , di samping Sambungkan ke Azure Application Gateway?, pilih Ya. Di bagian ini, Anda dapat mengkustomisasi opsi penyebaran berikut:
Untuk Jaringan virtual dan Subnet, Anda dapat secara opsional menyesuaikan jaringan virtual dan subnet tempat penyebaran menempatkan sumber daya. Anda tidak perlu mengubah nilai yang tersisa dari defaultnya.
Untuk sertifikat TLS/SSL, Anda dapat memberikan sertifikat TLS/SSL dari Azure Application Gateway. Biarkan nilai di defaultnya menyebabkan penawaran menghasilkan sertifikat yang ditandatangani sendiri.
Jangan pergi ke produksi dengan sertifikat yang ditandatangani sendiri. Untuk informasi selengkapnya mengenai sertifikat yang ditandatangani sendiri, lihat Membuat sertifikat publik yang ditandatangani sendiri untuk mengautentikasi aplikasi Anda.
Anda dapat memilih Aktifkan afinitas berbasis cookie, juga dikenal sebagai sesi lengket. Artikel ini menggunakan sesi lengket, jadi pastikan untuk memilih opsi ini.
Pilih Selanjutnya. Pada panel Operator dan aplikasi , artikel ini menggunakan semua default. Namun, Anda dapat menyesuaikan opsi penyebaran berikut:
- Anda dapat menyebarkan Operator WebSphere Liberty dengan memilih Ya untuk opsi yang didukung IBM?. Meninggalkan default Tidak menyebarkan Operator Open Liberty.
- Anda dapat menyebarkan aplikasi untuk operator yang Anda pilih dengan memilih Ya untuk opsi Sebarkan aplikasi?. Meninggalkan default Tidak tidak menyebarkan aplikasi apa pun.
Pilih Tinjau + buat untuk memvalidasi opsi pilihan Anda. Pada panel Tinjau + buat , saat Anda melihat Buat tersedia setelah validasi lolos, pilih.
Penyebaran dapat memakan waktu hingga 20 menit. Sambil menunggu penyebaran selesai, Anda dapat mengikuti langkah-langkah di bagian Membuat instans Azure SQL Database. Setelah Anda menyelesaikan bagian itu, kembali ke sini dan melanjutkan.
Mengambil informasi yang dipilih dari penyebaran
Jika Anda menjauh dari panel Penyebaran sedang berlangsung , langkah-langkah berikut menunjukkan kepada Anda cara kembali ke panel tersebut. Jika Anda masih berada di panel yang memperlihatkan Penyebaran Anda selesai, buka grup sumber daya yang baru dibuat dan lewati ke langkah ketiga.
Di sudut halaman portal mana pun, pilih tombol menu, lalu pilih Grup sumber daya.
Dalam kotak dengan teks Filter untuk bidang apa pun, masukkan beberapa karakter pertama grup sumber daya yang Anda buat sebelumnya. Jika Anda mengikuti konvensi yang direkomendasikan, masukkan inisial Anda, lalu pilih grup sumber daya yang sesuai.
Dalam daftar sumber daya dalam grup sumber daya, pilih sumber daya dengan nilai Jenis registri Kontainer.
Pada panel navigasi, di bawah Pengaturan, pilih Tombol akses.
Simpan selain nilai untuk Server masuk, Nama registri, Nama Pengguna, dan Kata Sandi. Anda dapat menggunakan ikon salin di samping setiap bidang untuk menyalin nilai ke clipboard sistem.
Kembali ke grup sumber daya tempat Anda menyebarkan sumber daya.
Di bagian Setelan, pilih Penyebaran.
Pilih penyebaran paling bawah dalam daftar. Nilai Nama penyebaran cocok dengan ID penerbit penawaran. Ini berisi string
ibm
.Pada panel navigasi, pilih Output.
Dengan menggunakan teknik penyalinan yang sama seperti dengan nilai sebelumnya, simpan selain nilai untuk output berikut:
cmdToConnectToCluster
appDeploymentTemplateYaml
jika penyebaran tidak menyertakan aplikasi. Artinya, Anda memilih Tidak untuk Menyebarkan aplikasi? saat Anda menyebarkan penawaran Marketplace.appDeploymentYaml
jika penyebaran menyertakan aplikasi. Artinya, Anda memilih Ya untuk Menyebarkan aplikasi?.
Tempelkan nilai
appDeploymentTemplateYaml
atauappDeploymentYaml
ke shell Bash, tambahkan| grep secretName
, dan jalankan perintah .Output dari perintah ini adalah nama rahasia ingress TLS, seperti
- secretName: secret785e2c
. Simpan selain nilai .secretName
Anda menggunakan nilai-nilai ini nanti di artikel ini. Output mencantumkan beberapa perintah berguna lainnya.
Membuat contoh Azure SQL Database
Untuk membuat database tunggal Azure SQL Database untuk digunakan dengan aplikasi Anda, ikuti langkah-langkah di Mulai Cepat: Membuat database tunggal di Azure SQL Database. Perhatikan dengan cermat perbedaan berikut:
Pada langkah Dasar, tuliskan nilai untuk Grup sumber daya, Nama database, <server-name.database.windows.net>, Login admin server, dan Kata Sandi. Artikel ini mengacu pada nilai grup Sumber Daya database sebagai
<db-resource-group>
.Pada langkah Jaringan, atur Metode konektivitas ke Titik akhir publik, atur Izinkan layanan dan sumber daya Azure untuk mengakses server ini ke Ya, dan atur Tambahkan alamat IP klien saat ini ke Ya.
Catatan
Tingkat komputasi tanpa server yang Anda pilih untuk database ini menghemat uang dengan membuat database tidur selama periode tidak aktif. Aplikasi sampel akan gagal jika database tertidur saat aplikasi dimulai.
Untuk memaksa database bangun, Anda bisa menjalankan kueri dengan menggunakan editor kueri. Ikuti langkah-langkah dalam Mengkueri database. Berikut adalah contoh kueri: SELECT * FROM COFFEE;
.
Kemudian, gunakan perintah berikut untuk membuat variabel lingkungan di shell Anda untuk nama grup sumber daya untuk database:
export DB_RESOURCE_GROUP_NAME=<db-resource-group>
Sekarang setelah Anda membuat database dan kluster AKS, Anda dapat melanjutkan untuk menyiapkan AKS untuk menghosting aplikasi Open Liberty Anda.
Konfigurasikan dan sebarkan aplikasi sampel
Ikuti langkah-langkah dalam bagian ini untuk menyebarkan aplikasi sampel pada runtime Liberty. Langkah-langkah ini menggunakan Maven.
Lihat aplikasinya
Klon kode sampel untuk artikel ini. Sampelnya ada di GitHub.
Terdapat beberapa sampel di repositori. Artikel ini menggunakan java-app/. Jalankan perintah berikut untuk mendapatkan sampel:
git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20240220
Jika Anda melihat pesan tentang berada dalam status "HEAD yang terlepas", Anda dapat mengabaikannya dengan aman. Pesan hanya berarti bahwa Anda memeriksa tag.
Berikut adalah struktur file aplikasi:
java-app
├─ src/main/
│ ├─ aks/
│ │ ├─ db-secret.yaml
│ │ ├─ openlibertyapplication-agic.yaml
│ │ ├─ openlibertyapplication.yaml
│ │ ├─ webspherelibertyapplication-agic.yaml
│ │ ├─ webspherelibertyapplication.yaml
│ ├─ docker/
│ │ ├─ Dockerfile
│ │ ├─ Dockerfile-wlp
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ pom.xml
Direktori java, resources, dan webapp berisi kode sumber dari contoh aplikasi. Kode mendeklarasikan dan menggunakan sumber data bernama jdbc/JavaEECafeDB
.
Di direktori aks, ada lima file penyebaran:
- db-secret.xml: Gunakan file ini untuk membuat Rahasia Kubernetes dengan kredensial koneksi database.
- openlibertyapplication-agic.yaml: Gunakan file ini untuk menyebarkan aplikasi Open Liberty dengan AGIC. Artikel ini mengasumsikan bahwa Anda menggunakan file ini.
- openlibertyapplication.yaml: Gunakan file ini jika Anda ingin menyebarkan aplikasi Open Liberty tanpa AGIC.
- webspherelibertyapplication-agic.yaml: Gunakan file ini untuk menyebarkan aplikasi WebSphere Liberty dengan AGIC jika Anda menyebarkan Operator WebSphere Liberty sebelumnya dalam artikel ini.
- webspherelibertyapplication.yaml: Gunakan file ini untuk menyebarkan aplikasi WebSphere Liberty tanpa AGIC jika Anda menyebarkan Operator WebSphere Liberty sebelumnya di artikel ini.
Di direktori docker, ada dua file untuk membuat gambar aplikasi:
- Dockerfile: Gunakan file ini untuk membangun gambar aplikasi dengan Open Liberty di artikel ini.
- Dockerfile-wlp: Gunakan file ini untuk membangun gambar aplikasi dengan WebSphere Liberty jika Anda menyebarkan Operator WebSphere Liberty sebelumnya di artikel ini.
Dalam direktori liberty/config, Anda menggunakan file server.xml untuk mengonfigurasi koneksi database untuk kluster Open Liberty dan WebSphere Liberty.
Membangun proyek
Sekarang setelah Anda memiliki properti yang diperlukan, Anda dapat membangun aplikasi. File POM untuk proyek membaca banyak variabel dari lingkungan. Sebagai bagian dari build Maven, variabel ini digunakan untuk mengisi nilai dalam file YAML yang terletak di src/main/aks. Anda dapat melakukan sesuatu yang serupa untuk aplikasi Anda di luar Maven jika mau.
cd $BASE_DIR/java-app
# The following variables are used for deployment file generation into the target.
export LOGIN_SERVER=<Azure-Container-Registry-Login-Server-URL>
export REGISTRY_NAME=<Azure-Container-Registry-name>
export USER_NAME=<Azure-Container-Registry-username>
export PASSWORD='<Azure-Container-Registry-password>'
export DB_SERVER_NAME=<server-name>.database.windows.net
export DB_NAME=<database-name>
export DB_USER=<server-admin-login>@<server-name>
export DB_PASSWORD='<server-admin-password>'
export INGRESS_TLS_SECRET=<ingress-TLS-secret-name>
mvn clean install
(Opsional) Menguji proyek Anda secara lokal
Jalankan dan uji proyek secara lokal sebelum menyebarkan ke Azure. Untuk kenyamanan, artikel ini menggunakan liberty-maven-plugin
. Untuk mempelajari selengkapnya tentang liberty-maven-plugin
, lihat artikel Open Liberty Membangun aplikasi web dengan Maven.
Untuk aplikasi Anda, Anda dapat melakukan sesuatu yang serupa dengan menggunakan mekanisme lain, seperti lingkungan pengembangan lokal Anda. Anda juga dapat mempertimbangkan untuk menggunakan opsi yang liberty:devc
ditujukan untuk pengembangan dengan kontainer. Anda dapat membaca selengkapnya tentang liberty:devc
dalam dokumentasi Open Liberty.
Mulai aplikasi dengan menggunakan
liberty:run
.liberty:run
juga menggunakan variabel lingkungan yang Anda tentukan sebelumnya.cd $BASE_DIR/java-app mvn liberty:run
Jika pengujian berhasil, pesan yang mirip
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds
dengan muncul di output perintah.http://localhost:9080/
Buka di browser Anda dan verifikasi bahwa aplikasi dapat diakses dan semua fungsi berfungsi.Pilih Ctrl+C untuk berhenti.
Membangun gambar untuk penyebaran AKS
Anda sekarang dapat menjalankan docker build
perintah untuk membangun gambar:
cd $BASE_DIR/java-app/target
docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile .
(Opsional) Menguji gambar Docker secara lokal
Gunakan langkah-langkah berikut untuk menguji gambar Docker secara lokal sebelum menyebarkan ke Azure:
Jalankan gambar dengan menggunakan perintah berikut. Perintah ini menggunakan variabel lingkungan yang Anda tentukan sebelumnya.
docker run -it --rm -p 9080:9080 \ -e DB_SERVER_NAME=${DB_SERVER_NAME} \ -e DB_NAME=${DB_NAME} \ -e DB_USER=${DB_USER} \ -e DB_PASSWORD=${DB_PASSWORD} \ javaee-cafe:v1
Setelah kontainer dimulai, buka
http://localhost:9080/
di browser Anda untuk mengakses aplikasi.Pilih Ctrl+C untuk berhenti.
Mengunggah gambar ke Azure Container Registry
Unggah gambar bawaan ke instans Container Registry yang Anda buat dalam penawaran:
docker tag javaee-cafe:v1 ${LOGIN_SERVER}/javaee-cafe:v1
docker login -u ${USER_NAME} -p ${PASSWORD} ${LOGIN_SERVER}
docker push ${LOGIN_SERVER}/javaee-cafe:v1
Sebarkan dan uji aplikasi
Gunakan langkah-langkah berikut untuk menyebarkan dan menguji aplikasi:
Sambungkan ke kluster AKS.
Tempelkan nilai
cmdToConnectToCluster
ke dalam shell dan jalankan perintah .Terapkan rahasia database:
cd $BASE_DIR/java-app/target kubectl apply -f db-secret.yaml
Outputnya adalah
secret/db-secret-sql created
.Terapkan file penyebaran:
kubectl apply -f openlibertyapplication-agic.yaml
Tunggu hingga semua pod berhasil dimulai ulang dengan menggunakan perintah berikut:
kubectl get pods --watch
Output yang mirip dengan contoh berikut menunjukkan bahwa semua pod sedang berjalan:
NAME READY STATUS RESTARTS AGE javaee-cafe-cluster-agic-67cdc95bc-2j2gr 1/1 Running 0 29s javaee-cafe-cluster-agic-67cdc95bc-fgtt8 1/1 Running 0 29s javaee-cafe-cluster-agic-67cdc95bc-h47qm 1/1 Running 0 29s
Verifikasi hasilnya:
Dapatkan alamat sumber daya ingress yang disebarkan dengan aplikasi:
kubectl get ingress
Salin nilai dari
ADDRESS
output. Nilai ini adalah alamat IP publik front-end dari instans Application Gateway yang disebarkan.Buka
https://<ADDRESS>
untuk menguji aplikasi. Demi kenyamanan Anda, perintah shell ini membuat variabel lingkungan yang nilainya dapat Anda tempelkan langsung ke browser:export APP_URL=https://$(kubectl get ingress | grep javaee-cafe-cluster-agic-ingress | cut -d " " -f14)/ echo $APP_URL
Jika halaman web tidak dirender dengan benar atau mengembalikan
502 Bad Gateway
kesalahan, aplikasi masih dimulai di latar belakang. Tunggu beberapa menit lalu coba operasikan lagi.
Membersihkan sumber daya
Untuk menghindari biaya Azure, Anda harus membersihkan sumber daya yang tidak diperlukan. Ketika Anda tidak lagi memerlukan kluster, gunakan perintah az group delete untuk 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
Anda dapat mempelajari selengkapnya dari referensi berikut:
Untuk informasi selengkapnya tentang menyebarkan keluarga IBM WebSphere di Azure, lihat Apa solusi untuk menjalankan keluarga produk WebSphere di Azure?
Azure Kubernetes Service