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.
Dalam tutorial ini, Anda menyebarkan aplikasi web Quarkus berbasis data ke Azure App Service dengan layanan database relasional Azure Database for PostgreSQL . Azure App Service mendukung Java Standard Edition (Java SE) di lingkungan server Windows atau Linux.
Dalam tutorial ini, Anda akan belajar cara:
- Buat arsitektur aman secara default untuk Azure App Service dan server fleksibel Azure Database for PostgreSQL.
- Amankan rahasia koneksi menggunakan identitas terkelola dan referensi Key Vault.
- Sebarkan contoh aplikasi Quarkus ke App Service dari repositori GitHub.
- Akses pengaturan aplikasi App Service dalam kode aplikasi.
- Buat pembaruan dan sebarkan ulang kode aplikasi.
- Hasilkan skema database dengan menjalankan migrasi database.
- Streaming log diagnostik dari Azure.
- Kelola aplikasi di portal Azure.
- Sediakan arsitektur yang sama dan terapkan dengan menggunakan Azure Developer CLI.
- Optimalkan alur kerja pengembangan Anda dengan GitHub Codespaces dan GitHub Copilot.
Prasyarat
- Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, Anda dapat membuat akun secara gratis.
- Akun GitHub. Anda juga bisa mendapatkannya secara gratis.
- Pengetahuan tentang Java dengan pengembangan Quarkus.
- (Opsional) Untuk mencoba GitHub Copilot, Anda memerlukan akun GitHub Copilot. Uji coba gratis 30 hari tersedia.
- Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, Anda dapat membuat akun secara gratis.
- Akun GitHub. Anda juga bisa mendapatkannya secara gratis.
- Azure Developer CLI terinstal. Anda dapat mengikuti langkah-langkah dengan Azure Cloud Shell karena sudah menginstal Azure Developer CLI.
- Pengetahuan tentang Java dengan pengembangan Quarkus.
- (Opsional) Untuk mencoba GitHub Copilot, Anda memerlukan akun GitHub Copilot. Uji coba gratis 30 hari tersedia.
Lewati ke akhir
Jika Anda hanya ingin melihat aplikasi sampel dalam tutorial ini yang berjalan di Azure, cukup jalankan perintah berikut di Azure Cloud Shell, dan ikuti perintahnya:
mkdir msdocs-quarkus-postgresql-sample-app
cd msdocs-quarkus-postgresql-sample-app
azd init --template msdocs-quarkus-postgresql-sample-app
azd up
1. Jalankan sampel
Pertama, Anda menyiapkan contoh aplikasi berbasis data sebagai titik awal. Untuk memudahkan Anda, repositori sampel, Hibernate ORM with Panache and RESTEasy, menyertakan konfigurasi kontainer pengembangan. Kontainer dev memiliki semua yang Anda butuhkan untuk mengembangkan aplikasi, termasuk database, cache, dan semua variabel lingkungan yang diperlukan oleh aplikasi sampel. Kontainer dev dapat berjalan di codespace GitHub, yang berarti Anda dapat menjalankan sampel di komputer apa pun dengan browser web.
Langkah 1: Di jendela browser baru:
- Masuk ke akun GitHub Anda.
- Buka https://github.com/Azure-Samples/msdocs-quarkus-postgresql-sample-app/fork.
- Hapus centang Salin cabang utama saja. Anda ingin semua cabang.
- Pilih Buat fork.
Langkah 2: Di fork GitHub:
- Pilih main>starter-no-infra untuk cabang starter. Cabang ini hanya berisi proyek sampel dan tidak ada file atau konfigurasi terkait Azure.
- Pilih Kode>Buat ruang kode pada starter-no-infra. Codespace membutuhkan waktu beberapa menit untuk disiapkan.
Langkah 3: Di terminal codespace:
- Jalankan
mvn quarkus:dev. - Abaikan pemberitahuan
Your application running on port 5005 is available. - Saat Anda melihat pemberitahuan
Your application running on port 8080 is available., pilih Buka di Browser. Anda akan melihat aplikasi sampel di tab browser baru. Untuk menghentikan server pengembangan Quarkus, ketikCtrl+C.
Untuk informasi selengkapnya tentang cara aplikasi sampel Quarkus dibuat, lihat dokumentasi Quarkus Orm Hibernate yang Disederhanakan dengan Panache dan Mengonfigurasi sumber data di Quarkus.
Petunjuk / Saran
Anda dapat bertanya kepada GitHub Copilot tentang repositori ini. Contohnya:
- @workspace Apa yang dilakukan proyek ini?
- @workspace Apa yang dilakukan folder .devcontainer?
Mengalami masalah? Periksa bagian Pemecahan Masalah.
2. Buat App Service dan PostgreSQL
Pada langkah ini, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang menyertakan App Service dan Azure Database for PostgreSQL. Untuk proses pembuatan, Anda menentukan:
-
Nama untuk aplikasi web. Ini digunakan sebagai bagian dari nama DNS untuk aplikasi Anda dalam bentuk
https://<app-name>-<hash>.<region>.azurewebsites.net. - Wilayah tempat aplikasi dijalankan secara fisik di dunia. Ini juga digunakan sebagai bagian dari nama DNS untuk aplikasi Anda.
- Runtime stack untuk aplikasi. Di sinilah Anda memilih versi Java yang akan digunakan untuk aplikasi Anda.
- Paket hosting untuk aplikasi. Ini adalah tingkat harga yang mencakup serangkaian fitur dan kapasitas penskalaan untuk aplikasi Anda.
- Grup Sumber Daya untuk aplikasi. Grup sumber daya memungkinkan Anda mengelompokkan (dalam kontainer logika) semua sumber daya Azure yang diperlukan untuk aplikasi.
Masuk ke portal Microsoft Azure dan ikuti langkah-langkah ini untuk membuat sumber daya Azure App Service Anda.
Langkah 1: Di portal Azure:
- Di bilah pencarian atas, ketik layanan aplikasi.
- Pilih item berlabel App Service di bawah judul Layanan .
- Pilih Buat>Aplikasi Web. Anda juga dapat menavigasi ke wizard pembuatan secara langsung.
Langkah 2: Mengonfigurasi aplikasi baru Isi formulir sebagai berikut.
- Nama: msdocs-quarkus-postgres. Grup sumber daya bernama msdocs-quarkus-postgres_group dibuat untuk Anda.
- Tumpukan runtime: Java 21.
- Stack server web Java: Java SE (Server Web Embedded).
- Sistem operasi: Linux.
- Wilayah: Wilayah Azure apa pun di dekat Anda.
- Paket Linux: Buat baru dan gunakan nama msdocs-quarkus-postgres.
- Paket harga: Dasar B1. Setelah siap, Anda dapat meningkatkan skala ke tingkat harga yang berbeda.
Langkah 3: Tambahkan database
- Pilih tab Database .
- Pilih Buat Database.
- Di Mesin, pilih PostgreSQL - Server Fleksibel. Nama server dan nama database diatur secara default ke nilai yang sesuai.
Langkah 4: Mengonfigurasi penyebaran GitHub
- Pilih tab Penyebaran .
- Pilih Penyebaran berkelanjutan.
- Jika ini adalah pertama kalinya Anda mengonfigurasi penyebaran GitHub di App Service, pilih Otorisasi dan autentikasi dengan akun GitHub Anda.
- Di Organisasi, pilih alias GitHub Anda.
- Di Repositori, pilih msdocs-quarkus-postgresql-sample-app.
- Di Branch, pilih starter-no-infra.
- Pilih Tinjau + buat.
- Setelah validasi selesai, pilih Buat. Secara default, wizard buat membuat identitas yang ditetapkan pengguna untuk alur kerja guna mengautentikasi menggunakan Microsoft Entra (autentikasi OIDC). Untuk opsi autentikasi alternatif, lihat Menyebarkan ke App Service menggunakan GitHub Actions.
Langkah 3: Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan. Setelah penyebaran selesai, pilih tombol Buka sumber daya. Anda diarahkan ke aplikasi App Service, tetapi sumber daya berikut dibuat:
- Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
- Paket layanan App Service: Menentukan sumber daya komputasi untuk App Service. Paket Linux di tingkat Dasar dibuat.
- App Service: Mewakili aplikasi Anda dan berjalan dalam paket App Service.
- Jaringan virtual: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
- Server fleksibel Azure Database for PostgreSQL: Hanya dapat diakses dari dalam jaringan virtual. Database dan pengguna dibuat untuk Anda di server.
- Zona DNS Privat: Mengaktifkan resolusi DNS untuk brankas kunci dan server database di jaringan virtual.
3. Amankan rahasia koneksi
Wizard pembuatan sudah membuat variabel konektivitas untuk Anda sebagai pengaturan aplikasi. Namun, praktik terbaik keamanan adalah memastikan rahasia tidak tersimpan di App Service sama sekali. Anda akan memindahkan rahasia Anda ke brankas kunci dan mengubah pengaturan aplikasi ke referensi Key Vault dengan bantuan Konektor Layanan.
Langkah 1: Ambil string koneksi yang ada
- Di menu sebelah kiri halaman App Service, pilih Pengaturan > Variabel lingkungan.
- Pilih String Koneksi.
- Pilih AZURE_POSTGRESQL_CONNECTIONSTRING.
- Di pengaturan Tambahkan/Edit aplikasi, di bidang Nilai , temukan bagian Id Pengguna= dan Kata Sandi= di akhir string.
- Salin string nama pengguna dan kata sandi setelah Id Pengguna= dan Kata Sandi= untuk digunakan nanti. Pengaturan aplikasi ini memungkinkan Anda terhubung ke database Postgres yang diamankan di belakang endpoint pribadi. Namun, rahasia disimpan langsung di aplikasi App Service, yang bukan yang terbaik. Kamu akan mengubah ini.
Langkah 2: Buat subnet untuk mengamankan Key Vault Jaringan virtual sudah memiliki dua subnet yang ada, tetapi satu sudah didelegasikan ke App Service dan yang lain sudah didelegasikan ke Azure Database for PostgreSQL. Anda membuat yang lain untuk akses aman ke Key Vault dengan titik akhir privat (untuk informasi selengkapnya, lihat Keamanan jaringan untuk Azure Key Vault).
- Di menu sebelah kiri halaman App Service, pilih tab Gambaran Umum .
- Pilih grup sumber daya aplikasi.
- Pilih jaringan virtual di grup sumber daya.
- Di menu sebelah kiri jaringan virtual, pilih Pengaturan > Subnet.
- Pilih + Subnet.
- Di Nama, ketik subnet-keyvault. Terima default.
- Pilih Tambahkan.
Langkah 3: Buat brankas kunci untuk manajemen rahasia yang aman
- Pada bilah pencarian atas, ketik "key vault", lalu pilih Marketplace>Key Vault.
- Di Grup Sumber Daya, pilih msdocs-quarkus-postgres_group.
- Di kolom Nama Brankas Kunci, ketik nama yang hanya terdiri dari huruf dan angka.
- Di Wilayah, atur ke lokasi yang sama dengan grup sumber daya.
Langkah 4: Mengamankan brankas kunci dengan Titik Akhir Privat
- Pilih tab Jaringan.
- Batalkan pilihan Aktifkan akses publik.
- Pilih Buat titik akhir privat.
- Di Grup Sumber Daya, pilih msdocs-quarkus-postgres_group.
- Dalam dialog, di Lokasi, pilih lokasi yang sama dengan aplikasi App Service Anda.
- Di Nama, ketik msdocs-quarkus-postgresVaultEndpoint.
- Di Jaringan virtual, pilih vnet-xxxxxxxx.
- Di Subnet, subnet-keyvault.
- Pilih OK.
- Pilih Tinjau + buat, lalu pilih Buat. Tunggu hingga penyebaran Key Vault selesai. Anda seharusnya melihat "Penyiapan Anda telah selesai."
Langkah 5: Membuat konektor PostgreSQL
- Di bilah pencarian atas, ketik msdocs-quarkus-postgres, lalu pilih sumber daya App Service yang disebut msdocs-quarkus-postgres.
- Di halaman App Service, di menu sebelah kiri, pilih Settings > Service Connector > Create.
- Di Jenis layanan, pilih DB untuk server fleksibel PostgreSQL.
- Di server fleksibel PostgreSQL, msdocs-quarkus-postgres-server seharusnya sudah dipilih.
- Di database PostgreSQL, pilih msdocs-quarkus-postgres-database.
- Di Jenis klien, pilih Java.
Langkah 6: Simpan rahasia di brankas kunci
- Pilih tab Autentikasi .
- Pilih Connection string.
- Di Nama Pengguna dan Kata Sandi, tempelkan kata sandi yang Anda salin sebelumnya.
- Pilih Simpan Rahasia di Key Vault.
- Di bawah Key Vault Connection, pilih Create new. Dialog Buat koneksi dibuka di atas dialog edit.
Langkah 7: Buat koneksi Key Vault
- Dalam dialog Buat koneksi untuk koneksi Key Vault, di Key Vault, pilih brankas kunci yang Anda buat sebelumnya.
- Di Jenis klien, pilih Java untuk konsistensi. Kode aplikasi Anda tidak benar-benar menggunakan brankas kunci secara langsung.
- Pilih Tinjau + Buat.
- Saat validasi selesai, pilih Create.
Langkah 8: Menyelesaikan pengaturan konektor PostgreSQL
- Anda kembali ke dialog edit untuk konektor PostgreSQL. Pada tab Autentikasi, tunggu konektor Key Vault dibuat. Setelah selesai, dropdown Key Vault Connection akan otomatis memilihnya.
- Pilih Tinjau + Buat.
- Saat validasi selesai, pilih Create. Tunggu hingga pemberitahuan Pembuatan berhasil muncul.
Langkah 9: Verifikasi integrasi Key Vault
- Dari menu sebelah kiri, pilih > lagi.
- Di samping AZURE_POSTGRESQL_CONNECTIONSTRING, pilih Perlihatkan nilai. Nilainya harus
@Microsoft.KeyVault(...), yang berarti bahwa itu adalah referensi ke brankas kunci karena rahasianya sekarang dikelola di dalam brankas kunci.
Langkah 10: Menghapus kredensial database dari App Service
- Pilih tab Koneksi string.
- Di sebelah kanan AZURE_POSTGRESQL_CONNECTIONSTRING, pilih Hapus. Ingatlah bahwa pengarah membuat string koneksi ini untuk Anda pada awal proses.
Untuk meringkas, proses mengamankan rahasia koneksi Anda melibatkan:
- Mengambil informasi rahasia koneksi dari variabel pada lingkungan aplikasi App Service.
- Membuat brankas kunci dengan titik akhir privat.
- Membuat koneksi Key Vault dengan identitas terkelola yang ditetapkan sistem.
- Buat penghubung layanan untuk menyimpan rahasia koneksi di Key Vault.
- Hapus rahasia koneksi lama dari aplikasi App Service.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
4. Menyebarkan kode sampel
Dalam panduan pembuatan, Anda sudah mengonfigurasi penyebaran berkelanjutan dari repositori GitHub sampel Anda menggunakan GitHub Actions. Ini hanya salah satu dari banyak cara untuk menyebarkan ke App Service, tetapi juga cara yang bagus untuk memiliki integrasi berkelanjutan dalam proses penyebaran Anda. Secara otomatis, setiap git push ke repositori GitHub Anda memulai proses pembangunan dan penerapan.
Berikut hal-hal yang perlu diketahui:
- Quarkus mendengarkan port 8080 secara default. Dalam produksi, perlu dikonfigurasi untuk mendengarkan port yang ditentukan oleh variabel lingkungan
PORTdi App Service. - Paket Java yang Anda distribusikan harus berupa Uber-Jar.
- Untuk kesederhanaan tutorial, Anda akan menonaktifkan pengujian selama proses penyebaran. Pelari GitHub Actions tidak memiliki akses ke database PostgreSQL di Azure, sehingga setiap pengujian integrasi yang memerlukan akses database akan gagal, seperti halnya dengan aplikasi sampel Quarkus.
Langkah 1: Kembali ke ruang kode GitHub dari fork sampel Anda, jalankan git pull origin starter-no-infra.
Ini menarik file alur kerja GitHub yang baru dikomit ke codespace Anda.
Langkah 2 (Opsi 1: dengan GitHub Copilot):
- Mulai sesi obrolan baru dengan memilih tampilan Chat, lalu memilih +.
- Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database?" Copilot mungkin memberi Anda beberapa penjelasan tentang bagaimana pengaturan sumber data Quarkus dikonfigurasi di src/main/resources/application.properties.
- Katakanlah, "@workspace saya membuat konektor layanan PostgreSQL di Azure App Service menggunakan jenis klien Java dan nama pengaturan aplikasi AZURE_POSTGRESQL_CONNECTIONSTRING. Saya ingin menggunakan string koneksi ini saat aplikasi berjalan dalam produksi." Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file src/main/resources/application.properties .
- Buka src/main/resources/application.properties di explorer dan tambahkan saran kode.
- Katakanlah, "@workspace Bagaimana cara mengonfigurasi proyek ini untuk membuat Uber Jar?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file src/main/resources/application.properties .
- Buka src/main/resources/application.properties di explorer dan tambahkan saran kode.
- Katakanlah, "@workspace Bagaimana cara menggunakan port App Service?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file src/main/resources/application.properties .
- Buka src/main/resources/application.properties di explorer dan tambahkan saran kode. GitHub Copilot tidak memberikan respons yang sama setiap saat, dan tidak selalu benar. Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang dapat saya lakukan dengan GitHub Copilot di ruang kode saya?.
Langkah 2 (Opsi 2: tanpa GitHub Copilot):
- Buka src/main/resources/application.properties di penjelajah. Quarkus menggunakan file ini untuk memuat properti Java.
- Batalkan komentar baris 10-12. Pengaturan ini menggunakan pengaturan aplikasi yang Anda buat dengan konektor PostgreSQL, membuat Uber Jar, dan mengatur port ke yang digunakan oleh App Service.
Langkah 3 (Opsi 1: dengan GitHub Copilot):
- Tanyakan, "@workspace Untuk penyebaran GitHub Actions, saya ingin melewati pengujian untuk menghindari kesalahan terkait database." Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Langkah 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file .github/workflows/starter-no-infra_msdocs-quarkus-postgres.yml .
- Buka .github/workflows/starter-no-infra_msdocs-quarkus-postgres.yml di explorer dan tambahkan saran kode. Untuk tips, lihat Apa yang dapat saya lakukan dengan GitHub Copilot di ruang kode saya?.
Langkah 3 (Opsi 2: tanpa GitHub Copilot):
- Buka .github/workflows/starter-no-infra_msdocs-quarkus-postgres.yml di explorer. Ini adalah alur kerja Tindakan GitHub yang dibuat wizard buat untuk Anda.
- Temukan langkah
Build with Maven, dan ubah perintahrunmenjadimvn clean install -DskipTests.-DskipTestsmenginstruksikan Maven untuk melewatkan pengujian agar penyebaran tidak gagal karena kesalahan database. Kontainer GitHub Actions tidak dapat tersambung ke server PostgreSQL.
Langkah 4:
- Pilih ekstensi Kontrol Sumber.
- Di kotak teks, ketik pesan penerapan seperti
Configure DB and deployment. Atau, pilih
dan biarkan GitHub Copilot menghasilkan pesan commit untuk Anda. - Pilih Terapkan, lalu konfirmasi dengan Ya.
- Pilih Sinkronkan perubahan 1, lalu konfirmasi dengan OK.
Langkah 5:
- Dari menu sebelah kiri, pilih Penyebaran>Pusat Penyebaran>Log.
- Dalam item log untuk proses deployment, pilih entri Build/Deploy Logs dengan stempel waktu terbaru.
Langkah 6: Anda dibawa ke repositori GitHub Anda dan melihat bahwa tindakan GitHub sedang berjalan. File alur kerja menentukan dua tahap terpisah, mem-build dan menyebarkan. Tunggu hingga eksekusi GitHub menunjukkan status Keberhasilan. Dibutuhkan sekitar 5 menit.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
5. Telusuri aplikasi
Langkah 1: Di halaman App Service:
- Dari menu kiri, pilih Ringkasan.
- Pilih URL aplikasi Anda.
Langkah 2: Tambahkan beberapa buah ke daftar. Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure Database for PostgreSQL.
6. Mengalirkan log diagnostik
Azure App Service mengambil semua output pesan ke konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi sampel mencakup pernyataan pengelogan JBoss standar untuk menunjukkan kemampuan ini seperti yang ditunjukkan di bawah ini.
private static final Logger LOGGER = Logger.getLogger(FruitEntityResource.class.getName());
@GET
public List<FruitEntity> get() {
LOGGER.info("In FruitEntityResource.get()");
return FruitEntity.listAll(Sort.by("name"));
}
Langkah 1: Di halaman App Service:
- Dari menu sebelah kiri, pilih Pemantauan>Log Layanan Aplikasi.
- Di Pengelogan aplikasi, pilih Sistem File.
- Di menu atas, pilih Simpan.
Langkah 2: Dari menu sebelah kiri, pilih Aliran log. Anda dapat melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer.
Pelajari selengkapnya tentang pengelogan di aplikasi Java dalam seri di Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.
7. Membersihkan sumber daya
Setelah selesai, Anda dapat menghapus semua sumber daya dari langganan Azure dengan menghapus grup sumber daya.
Langkah 1: Di bilah pencarian di bagian atas portal Azure:
- Masukkan nama grup sumber daya.
- Pilih grup sumber daya.
Langkah 2: Di halaman grup sumber daya, pilih Hapus grup sumber daya.
Langkah 3:
- Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.
- Pilih Hapus.
- Konfirmasi dengan Hapus lagi.
2. Buat sumber daya Azure dan sebarkan aplikasi sampel
Dalam langkah ini, Anda membuat sumber daya Azure dan menyebarkan aplikasi sampel ke App Service di Linux. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang menyertakan App Service dan Azure Database for PostgreSQL.
Kontainer pengembangan sudah memiliki Azure Developer CLI (AZD).
Dari akar repositori codespace GitHub, jalankan
azd init.azd init --template javase-app-service-postgresql-infraSaat diminta, berikan jawaban berikut:
Pertanyaan Jawaban Direktori saat ini tidak kosong. Apakah Anda ingin memulai sebuah proyek di sini di '<your-directory>'? Y Apa yang ingin Anda lakukan dengan file-file ini? Jaga agar file saya yang ada tidak berubah Masukkan nama lingkungan baru Ketik nama unik. Templat AZD menggunakan nama ini sebagai bagian dari nama DNS aplikasi web Anda di Azure ( <app-name>-<hash>.azurewebsites.net). Karakter alfanumerik dan tanda hubung diperbolehkan.Masuk ke Azure dengan menjalankan
azd auth loginperintah dan ikuti perintah:azd auth loginBuat sumber daya Azure yang diperlukan dengan
azd provisionperintah . Ikuti perintah untuk memilih langganan dan lokasi yang diinginkan untuk sumber daya Azure.azd provisionPerintah
azd provisionmembutuhkan waktu sekitar 15 menit untuk diselesaikan (cache Redis membutuhkan waktu paling lama). Nantinya, Anda akan memodifikasi kode untuk bekerja dengan App Service dan menyebarkan perubahan denganazd deploy. Saat sedang berjalan, perintah menyediakan pesan tentang proses provisi dan penyebaran, termasuk tautan ke penyebaran di Azure.Templat AZD ini berisi file (azure.yaml dan direktori infra ) yang menghasilkan arsitektur aman secara default dengan sumber daya Azure berikut:
- Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
- Paket layanan App Service: Menentukan sumber daya komputasi untuk App Service. Paket Linux di tingkat Dasar dibuat.
- App Service: Mewakili aplikasi Anda dan berjalan dalam paket App Service.
- Jaringan virtual: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
- Titik akhir privat: Titik akhir akses untuk brankas kunci dan cache Redis di jaringan virtual.
- Antarmuka jaringan: Mewakili alamat IP privat, satu untuk setiap titik akhir privat.
- Server fleksibel Azure Database for PostgreSQL: Hanya dapat diakses dari dalam jaringan virtual. Database dan pengguna dibuat untuk Anda di server.
- Zona DNS privat: Mengaktifkan resolusi DNS server PostgreSQL di jaringan virtual.
- Ruang kerja Log Analytics: Berfungsi sebagai wadah tujuan tempat aplikasi Anda mengirimkan log, dan tempat Anda juga dapat membuat kueri pada log tersebut.
- Azure Managed Redis: Hanya dapat diakses melalui endpoint privatnya.
- Key vault: Hanya dapat diakses dari balik endpoint pribadinya. Digunakan untuk mengelola rahasia untuk aplikasi App Service.
Setelah proses provisi selesai, cari pengaturan
AZURE_POSTGRESQL_CONNECTIONSTRINGdalam output AZD. Untuk menjaga rahasia tetap aman, hanya nama pengaturan yang ditampilkan. Mereka terlihat seperti ini dalam output AZD:App Service app has the following connection settings: - AZURE_POSTGRESQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPETemplat AZD yang Anda gunakan menghasilkan variabel konektivitas untuk Anda sudah sebagai pengaturan aplikasi dan mengeluarkannya ke terminal untuk kenyamanan Anda. Pengaturan aplikasi adalah salah satu cara untuk menjaga rahasia koneksi keluar dari repositori kode Anda. Anda juga dapat menemukan tautan langsung ke halaman pengaturan aplikasi untuk aplikasi App Service yang dibuat.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
3. Ubah kode sampel dan sebarkan ulang
Anda harus membuat beberapa perubahan dalam kode aplikasi Anda untuk membuatnya berfungsi dengan App Service:
- Quarkus mendengarkan port 8080 secara default. Dalam produksi, perlu dikonfigurasi untuk mendengarkan port yang ditentukan oleh variabel lingkungan
PORTdi App Service. - Paket Java yang Anda distribusikan harus berupa Uber-Jar.
- Untuk kesederhanaan tutorial, Anda akan menonaktifkan pengujian selama proses penyebaran. Pelari GitHub Actions tidak memiliki akses ke database PostgreSQL di Azure, sehingga setiap pengujian integrasi yang memerlukan akses database akan gagal, seperti halnya dengan aplikasi sampel Quarkus.
Di ruang kode GitHub, mulai sesi obrolan baru dengan memilih tampilan Obrolan , lalu pilih +.
Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database?" Copilot mungkin memberi Anda beberapa penjelasan tentang bagaimana pengaturan sumber data kuarkus dikonfigurasi di src/main/resources/application.properties.
Katakanlah, "@workspace saya telah membuat konektor layanan PostgreSQL di Azure App Service menggunakan jenis klien Java dan nama pengaturan aplikasi AZURE_POSTGRESQL_CONNECTIONSTRING. Saya ingin menggunakan string koneksi ini saat aplikasi berjalan dalam produksi." Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file src/main/resources/application.properties .
Tambahkan saran kode di src/main/resources/application.properties.
Katakanlah, "@workspace Bagaimana cara mengonfigurasi proyek ini untuk membuat Uber Jar?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file src/main/resources/application.properties .
Tambahkan saran kode di src/main/resources/application.properties.
Katakanlah, "@workspace Bagaimana cara menggunakan port App Service?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file src/main/resources/application.properties .
Tambahkan saran kode di src/main/resources/application.properties.
GitHub Copilot tidak memberikan respons yang sama setiap saat, dan tidak selalu benar. Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang dapat saya lakukan dengan GitHub Copilot di ruang kode saya?.
Di terminal, jalankan
azd deploy.azd deploy
Mengalami masalah? Periksa bagian Pemecahan Masalah.
5. Telusuri aplikasi
Di output AZD, temukan URL aplikasi Anda dan navigasikan ke url tersebut di browser. URL terlihat seperti ini dalam output AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Tambahkan beberapa buah ke daftar.
Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure Database for PostgreSQL.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
6. Mengalirkan log diagnostik
Azure App Service dapat mengambil log konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Untuk kenyamanan, templat AZD sudah memungkinkan pengelogan ke sistem file lokal dan mengirimkan log ke ruang kerja Analitik Log.
Aplikasi sampel mencakup pernyataan pengelogan JBoss standar untuk menunjukkan kemampuan ini seperti yang ditunjukkan di bawah ini.
private static final Logger LOGGER = Logger.getLogger(FruitEntityResource.class.getName());
@GET
public List<FruitEntity> get() {
LOGGER.info("In FruitEntityResource.get()");
return FruitEntity.listAll(Sort.by("name"));
}
Dalam output AZD, temukan tautan untuk melihat aliran log App Service dan buka tautan tersebut di browser. Tautan terlihat seperti ini dalam output AZD:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Pelajari selengkapnya tentang pengelogan di aplikasi Java dalam seri di Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
7. Membersihkan sumber daya
Untuk menghapus semua sumber daya Azure di lingkungan penyebaran saat ini, jalankan azd down dan ikuti perintahnya.
azd down
Pemecahan Masalah
Eksekusi GitHub Actions gagal pada tahap build
Pilih tahap build yang mengalami kegagalan untuk melihat langkah mana yang gagal. Jika ini adalah tahap Build with Maven , perluas langkah untuk memverifikasi bahwa -DskipTests opsi tersebut digunakan. Jika tidak, kembali ke 4. Sebarkan kode sampel dan ubah file alur kerja GitHub sesuai dengan instruksi.
Aplikasi gagal memulai dan menunjukkan kesalahan berikut dalam aliran log: "Kelas model didefinisikan untuk unit persistensi default tetapi< c1 /> sumber data yang dikonfigurasi default tidak ditemukan: EntityManagerFactory default tidak akan dibuat."
Kesalahan Quarkus ini kemungkinan besar karena aplikasi tidak dapat tersambung ke database Azure. Pastikan bahwa pengaturan AZURE_POSTGRESQL_CONNECTIONSTRING aplikasi belum diubah, dan application.properties menggunakan pengaturan aplikasi dengan benar.
Aplikasi gagal dimulai dan log stream menunjukkan "Menunggu respons terhadap permintaan pemanasan awal untuk kontainer"
Aplikasi Anda mungkin tidak dikonfigurasi untuk mendengarkan port yang ditentukan oleh variabel lingkungan App Service PORT , sehingga tidak dapat menanggapi permintaan apa pun. Jika App Service tidak mendapatkan respons dari aplikasi Anda, app Service mengasumsikan bahwa aplikasi gagal dimulai. Kembali ke 4. Sebarkan kode sampel dan verifikasi bahwa application.properties dikonfigurasi dengan benar.
Aplikasi ini berfungsi, tetapi saya melihat log kesalahan "ERROR [org.acm.hib.orm.pan.ent.FruitEntityResource] (vert.x-eventloop-thread-0) Gagal menangani permintaan: jakarta.ws.rs.NotFoundException: HTTP 404 Not Found".
Ini adalah error Vert.x (lihat Quarkus Reactive Architecture), yang menunjukkan bahwa klien meminta path yang tidak dikenal. Ini dapat terjadi pertama kali aplikasi dimulai, ketika klien meminta REST API sebelum migrasi database Hibernate terjadi.
Di App Service, kesalahan ini juga terjadi pada setiap pengaktifan aplikasi karena App Service memverifikasi bahwa aplikasi dimulai dengan mengirim GET permintaan ke /robots933456.txt.
Tanya jawab umum
- Berapa biaya untuk penyiapan ini?
- Bagaimana cara menyambungkan ke server PostgreSQL yang diamankan di belakang jaringan virtual dengan alat lain?
- Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?
- Bagaimana jika saya ingin menjalankan pengujian dengan PostgreSQL selama alur kerja GitHub?
- Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna
- Apa yang bisa saya lakukan dengan GitHub Copilot di ruang kode saya?
Berapa biaya untuk penyiapan ini?
Harga untuk sumber daya yang dibuat adalah sebagai berikut:
- Paket App Service dibuat di tingkat Dasar dan dapat ditingkatkan atau diturunkan. Lihat Harga App Service.
- Server fleksibel PostgreSQL dibuat pada tingkat burstable terendah, Standard_B1ms, dengan ukuran penyimpanan minimum, yang dapat diskalakan naik atau turun. Lihat Azure Database untuk harga PostgreSQL.
- Jaringan virtual tidak dikenakan biaya kecuali Anda mengonfigurasi fungsionalitas tambahan, seperti peering. Lihat Harga Microsoft Azure Virtual Network.
- Zona DNS privat dikenakan biaya kecil. Lihat Harga Azure DNS.
Bagaimana cara menyambungkan ke server PostgreSQL yang diamankan di belakang jaringan virtual dengan alat lain?
- Untuk akses dasar dari alat baris perintah, Anda dapat menjalankan
psqldari terminal SSH aplikasi. - Untuk terhubung dari alat desktop, komputer Anda harus berada dalam jaringan virtual. Misalnya, itu bisa berupa Azure VM yang terhubung ke salah satu subnet, atau komputer di jaringan lokal yang memiliki koneksi VPN situs-ke-situs dengan jaringan virtual Azure.
- Anda juga dapat mengintegrasikan Azure Cloud Shell dengan jaringan virtual.
Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?
Sebagai contoh, dengan menggunakan file alur kerja yang dibuat otomatis dari App Service, setiap git push memulai proses build dan deployment yang baru. Dari klon lokal repositori GitHub, Anda melakukan perubahan yang diinginkan lalu melakukan push ke GitHub. Contohnya:
git add .
git commit -m "<some-message>"
git push origin main
Bagaimana jika saya ingin menjalankan pengujian dengan PostgreSQL selama alur kerja GitHub?
Aplikasi sampel Quarkus default mencakup pengujian dengan konektivitas database. Untuk menghindari kesalahan koneksi, Anda menambahkan -skipTests properti . Jika mau, Anda dapat menjalankan pengujian terhadap kontainer layanan PostgreSQL. Misalnya, dalam file alur kerja yang dihasilkan secara otomatis di fork GitHub Anda (.github/workflows/main_cephalin-quarkus.yml), buat perubahan berikut:
Tambahkan kode YAML untuk kontainer PostgreSQL ke
buildpekerjaan, seperti yang ditunjukkan dalam cuplikan berikut.... jobs: build: runs-on: ubuntu-latest # BEGIN CODE ADDITION container: ubuntu services: # Hostname for the PostgreSQL container postgresdb: image: postgres env: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres POSTGRES_DB: postgres # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 # END CODE ADDITION steps: - uses: actions/checkout@v4 ...container: ubuntumemberi tahu GitHub agar menjalankan jobbuilddi dalam kontainer. Dengan cara ini, string koneksi di lingkunganjdbc:postgresql://postgresdb:5432/postgresdev Anda dapat berfungsi apa adanya saat alur kerja berjalan. Untuk informasi selengkapnya tentang konektivitas PostgreSQL di GitHub Actions, lihat Membuat kontainer layanan PostgreSQL.Dalam langkah
Build with Maven, hapus-DskipTests. Contohnya:- name: Build with Maven run: mvn clean install -Dquarkus.package.type=uber-jar
Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna
Lihat menyiapkan penerapan GitHub Actions dari Deployment Center.
Apa yang dapat saya lakukan dengan GitHub Copilot di ruang kode saya?
Anda mungkin memperhatikan bahwa tampilan obrolan GitHub Copilot sudah tersedia untuk Anda saat Anda membuat codespace. Namun, Anda perlu akun GitHub Copilot (tersedia uji coba gratis selama 30 hari).
Beberapa tips untuk Anda saat berbicara dengan GitHub Copilot:
- Dalam satu sesi obrolan, pertanyaan dan jawaban saling membangun dan Anda dapat menyesuaikan pertanyaan Anda untuk memperhalus jawaban yang Anda dapatkan.
- Secara default, GitHub Copilot tidak memiliki akses ke file apa pun di repositori Anda. Untuk mengajukan pertanyaan mengenai sebuah file, buka file tersebut di editor terlebih dahulu.
- Untuk memungkinkan GitHub Copilot mengakses semua file di repositori saat mempersiapkan jawabannya, mulailah pertanyaan Anda dengan
@workspace. Untuk informasi selengkapnya, lihat Use the @workspace agent . - Dalam sesi obrolan, GitHub Copilot dapat menyarankan perubahan dan (dengan
@workspace) bahkan menunjukkan di mana perubahan tersebut harus dilakukan, namun tidak diperbolehkan melakukan perubahan untuk Anda. Terserah Anda untuk menambahkan perubahan yang disarankan dan mengujinya.
Langkah berikutnya
Pelajari selengkapnya tentang menjalankan aplikasi Java di App Service di panduan pengembang.
Pelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.