Menyebarkan aplikasi Java dengan Open Liberty atau WebSphere Liberty pada kluster Azure Kubernetes Service (AKS)
Artikel ini menunjukkan cara untuk:
- Menjalankan aplikasi Java, Java EE, Jakarta EE, atau MicroProfile Anda pada runtime Open Liberty atau WebSphere Liberty.
- Bangun image Docker aplikasi menggunakan kontainer citra Open Liberty atau WebSphere Liberty.
- Menyebarkan aplikasi terkontainer ke kluster AKS menggunakan Open Liberty Operator.
Open Liberty Operator menyederhanakan penyebaran dan pengelolaan aplikasi yang berjalan pada kluster Kube. Dengan Open Liberty Operator, Anda juga dapat melakukan operasi yang lebih canggih, seperti mengumpulkan jejak dan crash dump.
Untuk informasi lebih lanjut tentang Open Liberty, lihat laman proyek Open Liberty. Untuk informasi lebih lanjut tentang IBM WebSphere Liberty, lihat laman produk WebSphere Liberty.
Artikel ini menggunakan penawaran Marketplace Azure untuk Open/WebSphere Liberty untuk mempercepat perjalanan Anda ke AKS. Penawaran ini secara otomatis memprovisikan sejumlah sumber daya Azure termasuk instans Azure Container Registry (ACR), kluster AKS, instans Azure App Gateway Ingress Controller (AGIC), Liberty Operator, dan citra kontainer sebagai opsi, yang meliputi Liberty dan aplikasi Anda. Untuk melihat penawaran, kunjungi portal Azure. Apabila Anda lebih menyukai panduan langkah demi langkah manual untuk menjalankan Liberty di AKS yang tidak menggunakan otomatisasi yang diaktifkan oleh penawaran, lihat Menyebarkan aplikasi Java secara manual dengan Open Liberty atau WebSphere Liberty pada kluster Azure Kubernetes Service (AKS).
Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.
Prasyarat
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih memilih untuk menjalankan perintah referensi CLI secara lokal, pasang Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan 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. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terpasang.
- Jika menjalankan perintah dalam panduan ini secara lokal (bukan Azure Cloud Shell):
- Siapkan komputer lokal dengan sistem operasi seperti Unix yang terpasang (misalnya, Ubuntu, Mariner, macOS, Subsistem Windows untuk Linux).
- Instal implementasi Java SE (misalnya, Eclipse Open J9).
- Instal Maven 3.5.0 atau yang lebih tinggi.
- Pasang Docker untuk OS Anda.
- Pastikan Anda telah 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 kluster Azure Container Registry dan Azure Kubernetes Service untuk aplikasi sampel.
- Kunjungi portal Azure. Di kotak telusur di bagian atas laman, ketik IBM WebSphere Liberty dan Open Liberty di Azure Kubernetes Service. Saat saran mulai muncul, pilih satu-satunya kecocokan yang muncul di bagian Marketplace. Jika mau, Anda dapat langsung membuka penawaran dengan link pintasan ini: https://aka.ms/liberty-aks.
- Pilih Buat.
- Di panel Dasar, buat grup sumber daya baru. 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:
ejb0913-java-liberty-project-rg
- Pilih AS Timur sebagai Wilayah.
- Pilih Berikutnya: Mengonfigurasi kluster.
- Bagian ini memungkinkan Anda memilih kluster AKS dan Azure Container Registry (ACR) yang ada alih-alih menyebabkan penyebaran membuat yang baru, jika diinginkan. Kemampuan ini memungkinkan Anda menggunakan pola sespan, seperti yang ditunjukkan di pusat arsitektur Azure. Anda juga dapat menyesuaikan pengaturan untuk ukuran dan jumlah mesin virtual di kumpulan node AKS. Biarkan semua nilai lainnya tetap default dan pilih Berikutnya: Jaringan.
- Di samping Sambungkan ke Azure Application Gateway?, pilih Ya. Panel ini memungkinkan Anda mengkustomisasi opsi penyebaran berikut.
- Anda dapat mengkustomisasi jaringan virtual dan subnet tempat penyebaran akan menempatkan sumber daya. Biarkan nilai-nilai ini tetap default.
- Anda dapat memberikan sertifikat TLS/SSL yang disajikan oleh Azure Application Gateway. Biarkan nilai-nilai tersebut tetap default untuk menyebabkan penawaran menghasilkan sertifikat yang ditandatangani sendiri. Jangan pergi ke produksi menggunakan 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 mengaktifkan afinitas berbasis cookie, yang juga dikenal sebagai sesi lengket. Kami ingin sesi lengket diaktifkan untuk artikel ini, jadi pastikan opsi ini dipilih.
- Pilih Tinjau + buat untuk memvalidasi opsi pilihan Anda.
- Ketika Anda melihat pesan Validasi Berhasil, pilih Buat. Penyebaran dapat memakan waktu hingga 20 menit.
Mengambil informasi yang dipilih dari penyebaran
Apabila Anda meninggalkan halaman Penyebaran sedang berlangsung, langkah-langkah berikut akan menunjukkan kepada Anda cara kembali ke halaman tersebut. Apabila Anda masih berada di halaman yang menampilkan Penyebaran Anda selesai, Anda dapat melompat ke langkah ketiga.
Di bagian kiri atas halaman portal 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.
Dalam daftar sumber daya di grup sumber daya, pilih sumber daya dengan JenisRegistri Kontainer.
Di panel navigasi, pada Pengaturan, pilih Kunci akses.
Sisihkan nilai untuk Server masuk, Nama registri, Nama pengguna, dan kata sandi. Anda dapat menggunakan ikon salin di sebelah kanan setiap bidang untuk menyalin nilai bidang itu ke papan klip sistem.
Navigasikan lagi ke grup sumber daya tempat Anda menyebarkan sumber daya.
Di bagian Setelan, pilih Penyebaran.
Pilih penyebaran paling bawah dalam daftar. Nama penyebaran akan cocok dengan ID penayang dari penawaran. Ini akan berisi string
ibm
.Di panel kiri, pilih Output.
Menggunakan teknik penyalinan yang sama dengan nilai sebelumnya, simpan nilai untuk output berikut:
cmdToConnectToCluster
appDeploymentTemplateYaml
Tempelkan nilai
appDeploymentTemplateYaml
ke dalam shell Bash, tambahkan| grep secretName
, dan jalankan. Perintah ini akan menghasilkan nama rahasia TLS Ingress, seperti- secretName: secret785e2c
. Simpan selain nilai untuksecretName
dari output.
Nilai-nilai ini akan digunakan nanti dalam artikel ini. Perhatikan bahwa beberapa perintah berguna lainnya tercantum dalam output.
Membuat Azure SQL Database
Langkah-langkah berikut memandu Anda membuat database tunggal Azure SQL Database untuk digunakan dengan aplikasi Anda.
Buat database tunggal di Azure SQL Database dengan mengikuti langkah-langkah dalam Mulai Cepat: Membuat database tunggal Azure SQL Database, mencatat perbedaan dalam kotak di bawah ini dengan teliti. Kembali ke artikel ini setelah membuat dan mengonfigurasi server database.
Catatan
Pada langkah Dasar, tuliskan Grup sumber daya, Nama database, <server-name>.database.windows.net, Login admin server, dan Kata Sandi. Grup Sumber Daya database akan disebut sebagai
<db-resource-group>
selanjutnya dalam di artikel ini.Pada langkah Jaringan, atur metode Konektivitas ke Titik akhir Publik, Izinkan layanan dan sumber daya Azure untuk mengakses server ini ke Ya, dan Tambahkan alamat IP klien saat ini ke Ya.
Juga pada langkah Jaringan, pada Koneksi terenkripsi, atur versi TLS Minimum ke TLS 1.0.
Sekarang setelah database dan kluster AKS dibuat, kita dapat melanjutkan penyiapan 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
Kloning kode sampel untuk panduan ini. Sampelnya ada di GitHub.
Terdapat beberapa sampel di repositori. Kita akan menggunakan java-app/. Berikut struktur file aplikasi tersebut.
java-app
├─ src/main/
│ ├─ aks/
│ │ ├─ db-secret.yaml
│ │ ├─ openlibertyapplication-agic.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 , kami menempatkan tiga file penyebaran. db-secret.xml digunakan untuk membuat Rahasia Kubernetes dengan kredensial koneksi DB. File openlibertyapplication-agic.yaml digunakan untuk menyebarkan gambar aplikasi. Di direktori docker , ada dua file untuk membuat gambar aplikasi dengan Open Liberty atau WebSphere Liberty.
Di direktori liberty/config, FILE server.xml digunakan untuk mengonfigurasi koneksi DB untuk kluster Open Liberty dan WebSphere Liberty.
Membangun proyek
Sekarang setelah Anda mengumpulkan 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 Anda mau.
cd <path-to-your-repo>/java-app
# The following variables will be used for deployment file generation into target.
export LOGIN_SERVER=<Azure_Container_Registery_Login_Server_URL>
export REGISTRY_NAME=<Azure_Container_Registery_Name>
export USER_NAME=<Azure_Container_Registery_Username>
export PASSWORD=<Azure_Container_Registery_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
Sekarang Anda dapat menjalankan dan menguji proyek secara lokal sebelum menyebarkan ke Azure. Untuk kenyamanan, kami menggunakan 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. Anda juga dapat mempertimbangkan untuk menggunakan opsi yang liberty:devc
ditujukan untuk pengembangan dengan kontainer. Anda dapat membaca selengkapnya tentang liberty:devc
di dokumen Liberty.
Mulai aplikasi menggunakan
liberty:run
.liberty:run
juga akan menggunakan variabel lingkungan yang ditentukan pada langkah sebelumnya.cd <path-to-your-repo>/java-app mvn liberty:run
Verifikasi aplikasi berfungsi seperti yang diharapkan. Anda akan melihat pesan yang mirip dengan
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.
di output perintah jika berhasil. Bukahttp://localhost:9080/
di browser Anda dan pastikan aplikasi dapat diakses dan semua fungsi berfungsi.Tekan Ctrl+C untuk berhenti.
Bangun gambar untuk penyebaran AKS
Anda sekarang dapat menjalankan docker build
perintah untuk membangun gambar.
cd <path-to-your-repo>/java-app/target
# If you're running with Open Liberty
docker build -t javaee-cafe:v1 --pull --file=Dockerfile .
# If you're running with WebSphere Liberty
docker build -t javaee-cafe:v1 --pull --file=Dockerfile-wlp .
(Opsional) Menguji gambar Docker secara lokal
Sekarang Anda dapat menggunakan langkah-langkah berikut untuk menguji gambar Docker secara lokal sebelum menyebarkan ke Azure.
Jalankan gambar menggunakan perintah berikut. Perhatikan bahwa kita menggunakan variabel lingkungan yang ditentukan 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.Tekan Ctrl+C untuk berhenti.
Unggah gambar ke ACR
Sekarang, kami mengunggah gambar yang dibuat ke ACR yang dibuat 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
Langkah-langkah berikut menyebarkan dan menguji aplikasi.
Sambungkan ke kluster AKS.
Tempelkan nilai cmdToConnectToCluster ke dalam shell Bash dan jalankan.
Terapkan rahasia DB.
cd <path-to-your-repo>/java-app/target kubectl apply -f db-secret.yaml
Anda akan melihat output
secret/db-secret-postgres created
.Terapkan file penyebaran.
kubectl apply -f openlibertyapplication-agic.yaml
Tunggu hingga pod dimulai ulang.
Tunggu hingga semua pod berhasil dimulai ulang menggunakan perintah berikut.
kubectl get pods --watch
Anda akan melihat output yang mirip dengan berikut ini untuk 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 hasil.
Dapatkan ALAMAT sumber daya Ingress yang disebarkan dengan aplikasi
kubectl get ingress
Salin nilai ADDRESS dari output, ini adalah alamat IP publik frontend dari Azure Application Gateway yang disebarkan.
Buka
https://<ADDRESS>
untuk menguji aplikasi.
Membersihkan sumber daya
Untuk menghindari biaya Azure, Anda harus membersihkan sumber daya yang tidak diperlukan. Ketika kluster tidak lagi diperlukan, gunakan perintah az group delete untuk menghapus grup sumber daya, layanan kontainer, kontainer registri dan semua sumber daya terkait.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
az group delete --name <db-resource-group> --yes --no-wait