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 menyebarkan Red Hat Quarkus dengan cepat di Aplikasi Kontainer Microsoft Azure dengan aplikasi CRUD sederhana. Aplikasi ini adalah "daftar tugas" dengan front end JavaScript dan titik akhir REST. Server fleksibel Azure Database for PostgreSQL menyediakan lapisan persistensi untuk aplikasi. Artikel ini menunjukkan kepada Anda cara menguji aplikasi secara lokal dan menyebarkannya ke Aplikasi Kontainer.
Prasyarat
- Langganan Azure. Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
- Siapkan komputer lokal dengan sistem operasi seperti Unix yang terinstal - misalnya, Ubuntu, macOS, atau Subsistem Windows untuk Linux.
- Instal implementasi Java SE versi 17 atau yang lebih baru - misalnya, Microsoft build OpenJDK.
- Instal Maven, versi 3.9.8 atau yang lebih tinggi.
- Instal Docker
untuk OS Anda. - Pasang jq.
- Instal cURL.
- Instal Quarkus CLI, versi 3.12.1 atau yang lebih tinggi.
-
Instal Azure CLI untuk menjalankan perintah Azure CLI.
- Masuk ke Azure CLI dengan menggunakan 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
az version
untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankanaz upgrade
. Artikel ini memerlukan setidaknya Azure CLI versi 2.61.0.
- Masuk ke Azure CLI dengan menggunakan perintah
Membuat proyek aplikasi
Gunakan perintah berikut untuk mengkloning sampel proyek Java untuk artikel ini. Sampelnya ada di GitHub.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2025-05-08
cd aca-quarkus
Jika Anda melihat pesan tentang berada dalam status detached HEAD
, pesan ini aman untuk diabaikan. Karena artikel ini tidak memerlukan penerapan apa pun, status detached HEAD
sesuai.
Uji aplikasi Quarkus Anda secara lokal
Langkah-langkah di bagian ini menunjukkan kepada Anda cara menjalankan aplikasi secara lokal.
Quarkus mendukung provisi otomatis layanan yang tidak dikonfigurasi dalam mode pengembangan dan pengujian. Quarkus menyebut kemampuan ini sebagai layanan dev. Katakanlah Anda menyertakan fitur Quarkus, seperti menyambungkan ke layanan database. Anda ingin menguji aplikasi, tetapi belum sepenuhnya mengonfigurasi koneksi ke database nyata. Quarkus secara otomatis memulai versi stub dari layanan yang relevan dan menghubungkan aplikasi Anda ke dalamnya. Untuk informasi selengkapnya, lihat Gambaran Umum Dev Services dalam dokumentasi Quarkus.
Pastikan lingkungan kontainer Anda berjalan dan gunakan perintah berikut untuk memasuki mode dev Quarkus:
quarkus dev
Alih-alih quarkus dev
, Anda dapat mencapai hal yang sama dengan Maven dengan menggunakan mvn quarkus:dev
.
Anda mungkin ditanya apakah Anda ingin mengirim telemetri penggunaan mode dev Quarkus Anda. Jika demikian, jawab sesuai keinginan Anda.
Mode dev Quarkus memungkinkan pemuatan ulang langsung dengan kompilasi latar belakang. Jika Anda memodifikasi aspek kode sumber aplikasi dan merefresh browser, Anda dapat melihat perubahannya. Jika ada masalah dengan kompilasi atau penyebaran, halaman kesalahan memberi tahu Anda. Mode dev Quarkus mendengarkan debugger pada port 5005. Jika Anda ingin menunggu debugger dilampirkan sebelum berjalan, teruskan -Dsuspend
pada baris perintah. Jika Anda tidak ingin debugger sama sekali, Anda dapat menggunakan -Ddebug=false
.
Output akan terlihat seperti contoh berikut:
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
INFO [io.quarkus] (Quarkus Main Thread) quarkus-todo-demo-app-aca 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.2.0.Final) started in 14.826s. Listening on: http://localhost:8080
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
INFO [io.quarkus] (Quarkus Main Thread) Installed features: [agroal, cdi, hibernate-orm, hibernate-validator, jdbc-postgresql, narayana-jta, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
--
Tests paused
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
Tekan w pada terminal tempat mode dev Quarkus berjalan. Kunci w membuka browser web default Anda untuk menampilkan Todo
aplikasi. Anda juga dapat mengakses GUI http://localhost:8080
aplikasi secara langsung.
Coba pilih beberapa item todo di daftar todo. UI menunjukkan pilihan dengan gaya teks coretan. Anda juga dapat menambahkan item todo baru ke daftar todo dengan mengetik Verifikasi aplikasi Todo dan menekan ENTER, seperti yang ditunjukkan pada cuplikan layar berikut:
Akses RESTful API (/api
) untuk mendapatkan semua item todo yang disimpan di database PostgreSQL lokal:
curl --verbose http://localhost:8080/api | jq .
Output akan terlihat seperti contoh berikut:
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /api HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-length: 664
< Content-Type: application/json;charset=UTF-8
<
{ [664 bytes data]
100 664 100 664 0 0 13278 0 --:--:-- --:--:-- --:--:-- 15441
* Connection #0 to host localhost left intact
[
{
"id": 1,
"title": "Introduction to Quarkus Todo App",
"completed": false,
"order": 0,
"url": null
},
{
"id": 2,
"title": "Quarkus on Azure App Service",
"completed": false,
"order": 1,
"url": "https://learn.microsoft.com/en-us/azure/app-service/quickstart-java"
},
{
"id": 3,
"title": "Quarkus on Azure Container Apps",
"completed": false,
"order": 2,
"url": "https://learn.microsoft.com/en-us/training/modules/deploy-java-quarkus-azure-container-app-postgres/"
},
{
"id": 4,
"title": "Quarkus on Azure Functions",
"completed": false,
"order": 3,
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-quarkus"
},
{
"id": 5,
"title": "Verify Todo apps",
"completed": false,
"order": 5,
"url": null
}
]
Tekan q untuk keluar dari mode dev Quarkus.
Membuat sumber daya Azure untuk menjalankan aplikasi Quarkus
Langkah-langkah di bagian ini memperlihatkan kepada Anda cara membuat sumber daya Azure berikut untuk menjalankan aplikasi sampel Quarkus:
- Server Fleksibel Azure Database for PostgreSQL
- Azure Container Registry
- Azure Container Apps
Beberapa sumber daya ini harus memiliki nama unik dalam cakupan langganan Azure. Untuk memastikan keunikan ini, Anda dapat menggunakan inisial, urutan, tanggal, pola akhiran . Untuk menerapkan pola ini, beri nama sumber daya Anda dengan mencantumkan inisial Anda, beberapa nomor urutan, tanggal hari ini, dan beberapa jenis akhiran spesifik sumber daya - misalnya, rg
untuk "grup sumber daya". Variabel lingkungan berikut menggunakan pola ini. Ganti nilai tempat penampung di UNIQUE_VALUE
dan LOCATION
dengan nilai Anda sendiri dan jalankan perintah di terminal Anda.
export UNIQUE_VALUE=<your unique value, such as mjg101424>
export RESOURCE_GROUP_NAME=${UNIQUE_VALUE}rg-passwordless
export LOCATION=<your desired Azure region for deploying your resources - for example, eastus>
export REGISTRY_NAME=${UNIQUE_VALUE}regpasswordless
export DB_SERVER_NAME=${UNIQUE_VALUE}dbpasswordless
export DB_NAME=demodb
export ACA_ENV=${UNIQUE_VALUE}envpasswordless
export ACA_NAME=${UNIQUE_VALUE}acapasswordless
Berikutnya, buat grup sumber daya menggunakan perintah berikut:
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION
Buat instans server fleksibel pada Azure Database for PostgreSQL
Server fleksibel Azure Database for PostgreSQL adalah layanan database terkelola penuh yang dirancang untuk memberikan kontrol dan fleksibilitas yang lebih terperinci atas fungsi manajemen database dan pengaturan konfigurasi. Bagian ini memperlihatkan kepada Anda cara membuat instans server fleksibel Azure Database for PostgreSQL menggunakan Azure CLI. Untuk informasi selengkapnya, lihat bagian Mulai Cepat : Membuat sebuah instans Azure Database for PostgreSQL - Server Fleksibel.
Buat instans server fleksibel Azure Database for PostgreSQL dengan menggunakan perintah berikut:
az postgres flexible-server create \
--name $DB_SERVER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--database-name $DB_NAME \
--public-access None \
--sku-name Standard_B1ms \
--tier Burstable \
--active-directory-auth Enabled
Dibutuhkan beberapa menit untuk membuat server, database, pengguna admin, dan aturan firewall. Jika perintah berhasil, output terlihat mirip dengan contoh berikut:
{
"connectionString": "postgresql://REDACTED:REDACTED@<DB_SERVER_NAME>.postgres.database.azure.com/<DB_NAME>?sslmode=require",
"databaseName": "<DB_NAME>",
"host": "<DB_SERVER_NAME>.postgres.database.azure.com",
"id": "/subscriptions/REDACTED/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<DB_SERVER_NAME>",
"location": "East US",
"password": "REDACTED",
"resourceGroup": "<RESOURCE_GROUP_NAME>",
"skuname": "Standard_B1ms",
"username": "REDACTED",
"version": "13"
}
Tambahkan pengguna yang masuk saat ini sebagai Admin Microsoft Entra ke instans Server Fleksibel Azure Database for PostgreSQL dengan menggunakan perintah berikut:
ENTRA_ADMIN_NAME=$(az ad signed-in-user show --query userPrincipalName -o tsv)
az postgres flexible-server ad-admin create \
--resource-group $RESOURCE_GROUP_NAME \
--server-name $DB_SERVER_NAME \
--display-name $ENTRA_ADMIN_NAME \
--object-id $(az ad signed-in-user show --query id -o tsv)
Output yang berhasil adalah objek JSON termasuk properti "type": "Microsoft.DBforPostgreSQL/flexibleServers/administrators"
.
Membuat instans Microsoft Azure Container Registry
Karena Quarkus adalah teknologi asli cloud, Quarkus memiliki dukungan bawaan untuk membuat kontainer yang berjalan di Container Apps. Container Apps sepenuhnya bergantung pada memiliki registri kontainer tempatnya menemukan gambar kontainer untuk dijalankan. Container Apps memiliki dukungan bawaan untuk Azure Container Registry.
Gunakan perintah az acr create
untuk membuat instans Container Registry. Contoh berikut membuat instans N Container Registry bernama dengan nilai variabel ${REGISTRY_NAME}
lingkungan Anda :
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--location ${LOCATION} \
--name $REGISTRY_NAME \
--sku Basic
Setelah beberapa saat, Anda akan melihat output JSON yang berisi baris berikut:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "<YOUR_RESOURCE_GROUP>",
Dapatkan server login untuk instans registri kontainer dengan menggunakan perintah berikut:
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
echo $LOGIN_SERVER
Menyambungkan Docker Anda ke instans Azure Container Registry
Masuk ke instance registri kontainer. Masuk memungkinkan Anda mendorong gambar. Gunakan perintah berikut untuk masuk ke registri:
az acr login --name $REGISTRY_NAME
Jika Anda berhasil masuk ke instans registri kontainer, Anda akan melihat Login Succeeded
di akhir output perintah.
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.
Jika ini pertama kalinya Anda membuat lingkungan Azure Container Apps, Anda mungkin perlu mendaftarkan namespace Microsoft.App
dan Microsoft.OperationalInsights
. Gunakan perintah berikut untuk mendaftarkan namespace:
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait
Sekarang, gunakan perintah az containerapp env create
untuk membuat lingkungan, seperti yang ditunjukkan dalam contoh berikut:
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Jika Anda diminta untuk menginstal ekstensi, jawab Y.
Mengkustomisasi konfigurasi cloud native
Sebagai teknologi asli cloud, Quarkus menawarkan kemampuan untuk menghasilkan gambar kontainer secara otomatis. Untuk informasi selengkapnya, lihat Gambar Kontainer. Pengembang kemudian dapat menyebarkan gambar aplikasi ke platform kontainer target - misalnya, Azure Container Apps.
Untuk menghasilkan gambar kontainer, gunakan perintah berikut untuk menambahkan container-image-jib
ekstensi di terminal lokal Anda:
quarkus ext add container-image-jib
Quarkus memodifikasi POM untuk memastikan ekstensi disertakan di <dependencies>
antara . Jika Anda diminta untuk menginstal sesuatu yang disebut JBang
, jawab ya dan izinkan untuk diinstal.
Output akan terlihat seperti contoh berikut:
[SUCCESS] ✅ Extension io.quarkus:quarkus-container-image-jib has been installed
Buka file pom.xml dan Anda akan melihat dependensi berikut yang ditambahkan oleh container-image-jib
ekstensi:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-container-image-jib</artifactId>
</dependency>
Kemudian, tambahkan dependensi berikut ke file pom.xml untuk mendukung autentikasi tanpa kata sandi dengan Server Fleksibel Azure Database for PostgreSQL:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.1.20</version>
</dependency>
Sebagai teknologi asli cloud, Quarkus mendukung gagasan profil konfigurasi. Quarkus memiliki tiga profil bawaan berikut:
-
dev
- Diaktifkan saat dalam mode pengembangan. -
test
- Diaktifkan saat menjalankan tes. -
prod
- Profil default saat tidak berjalan dalam mode pengembangan atau pengujian.
Quarkus mendukung sejumlah profil bernama, sesuai kebutuhan.
Langkah-langkah yang tersisa di bagian ini mengarahkan Anda untuk membatalkan komentar dan menyesuaikan nilai dalam file src/main/resources/application.properties . Pastikan bahwa semua baris yang dimulai dengan # %prod.
tidak terkomen dengan menghapus karakter #
di awal.
%prod.
Awalan menunjukkan bahwa properti ini aktif saat berjalan di prod
profil. Untuk informasi selengkapnya tentang profil konfigurasi, lihat dokumentasi Quarkus.
Memeriksa konfigurasi database
Setelah Anda membatalkan komentar properti, konfigurasi database di file
# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=
%prod.quarkus.datasource.username=
%prod.quarkus.datasource.password=
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file
Hapus properti %prod.quarkus.datasource.password
karena tidak diperlukan saat menggunakan autentikasi tanpa kata sandi dengan server fleksibel Azure Database for PostgreSQL. Perbarui properti %prod.quarkus.datasource.jdbc.url
terkait koneksi database lainnya dan %prod.quarkus.datasource.username
dengan nilai seperti yang diperlihatkan dalam contoh berikut. Konfigurasi akhir akan terlihat seperti contoh berikut:
# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://${AZURE_POSTGRESQL_HOST}:${AZURE_POSTGRESQL_PORT}/${AZURE_POSTGRESQL_DATABASE}?\
authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin\
&sslmode=require
%prod.quarkus.datasource.username=${AZURE_POSTGRESQL_USERNAME}
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file
Nilai ${AZURE_POSTGRESQL_HOST}
, , ${AZURE_POSTGRESQL_PORT}
${AZURE_POSTGRESQL_DATABASE}
, dan ${AZURE_POSTGRESQL_USERNAME}
disediakan oleh lingkungan Azure Container Apps saat runtime menggunakan ekstensi tanpa kata sandi Konektor Layanan nanti di artikel ini.
Umumnya, Anda tidak mengharapkan bahwa data yang bertahan dalam database dihilangkan dan diisi ulang dengan data sampel di lingkungan produksi. Itu sebabnya Anda dapat melihat bahwa skema untuk quarkus.hibernate-orm.database.generation
ditentukan sebagai create
sehingga aplikasi hanya membuat skema saat tidak ada di startup awal. Selain itu, database tidak diisi sebelumnya dengan data sampel apa pun karena hibernate-orm.sql-load-script
ditentukan sebagai no-file
. Pengaturan ini berbeda dari saat Anda menjalankan aplikasi secara lokal dalam mode pengembangan sebelumnya. Nilai default dalam mode pengembangan untuk quarkus.hibernate-orm.database.generation
dan hibernate-orm.sql-load-script
drop-and-create
import.sql
masing-masing, yang berarti aplikasi selalu menghilangkan dan membuat ulang skema database dan memuat data yang ditentukan dalam import.sql. File import.sql adalah fasilitas kenyamanan dari Quarkus.
Jika file src/main/resources/import.sql ada di jar Quarkus, dan nilai hibernate-orm.sql-load-script
properti adalah import.sql
, pernyataan SQL DML dalam file ini dijalankan pada waktu startup untuk aplikasi.
Uji aplikasi Quarkus Anda secara lokal dengan server fleksibel Azure Database for PostgreSQL
Sebelum menyebarkan aplikasi Quarkus ke Azure Container Apps, uji koneksi ke instans server fleksibel Azure Database for PostgreSQL secara lokal.
Pertama, tambahkan alamat IP lokal ke aturan firewall instans server fleksibel Azure Database for PostgreSQL dengan menggunakan perintah berikut:
export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az postgres flexible-server firewall-rule create \
--resource-group $RESOURCE_GROUP_NAME \
--name $DB_SERVER_NAME \
--rule-name $DB_SERVER_NAME-database-allow-local-ip \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS
Selanjutnya, atur variabel lingkungan berikut di terminal Anda sebelumnya. Variabel lingkungan ini digunakan untuk menyambungkan ke instans server fleksibel Azure Database for PostgreSQL dari aplikasi Quarkus yang berjalan secara lokal:
export AZURE_POSTGRESQL_HOST=${DB_SERVER_NAME}.postgres.database.azure.com
export AZURE_POSTGRESQL_PORT=5432
export AZURE_POSTGRESQL_DATABASE=${DB_NAME}
export AZURE_POSTGRESQL_USERNAME=${ENTRA_ADMIN_NAME}
Jalankan aplikasi Quarkus secara lokal untuk menguji koneksi ke instans server fleksibel Azure Database for PostgreSQL. Gunakan perintah berikut untuk memulai aplikasi dalam mode produksi:
mvn clean package -DskipTests
java -jar target/quarkus-app/quarkus-run.jar
Untuk mengakses aplikasi Todo, buka browser web baru untuk http://localhost:8080
. Anda akan melihat aplikasi Todo yang sama seperti yang Anda lihat saat menjalankan aplikasi secara lokal dalam mode pengembangan, tanpa item Todo apa pun.
Untuk menghentikan aplikasi, tekan Control+C.
Buat gambar kontainer dan dorong ke registri kontainer
Sekarang, gunakan perintah berikut untuk membangun aplikasi itu sendiri. Perintah ini menggunakan ekstensi Jib untuk membangun gambar kontainer.
export TODO_QUARKUS_IMAGE_NAME=todo-quarkus-aca
export TODO_QUARKUS_IMAGE_TAG=${LOGIN_SERVER}/${TODO_QUARKUS_IMAGE_NAME}:1.0
quarkus build -Dquarkus.container-image.build=true -Dquarkus.container-image.image=${TODO_QUARKUS_IMAGE_TAG} --no-tests
Output harus diakhir dengan BUILD SUCCESS
.
Anda dapat memverifikasi apakah gambar kontainer dihasilkan juga dengan menggunakan baris perintah docker
(CLI), seperti yang ditunjukkan dalam contoh berikut:
docker images | grep ${TODO_QUARKUS_IMAGE_NAME}
Output terlihat mirip dengan contoh berikut:
<LOGIN_SERVER_VALUE>/todo-quarkus-aca 1.0 0804dfd834fd 2 minutes ago 407MB
Dorong gambar kontainer ke registri kontainer dengan menggunakan perintah berikut:
docker push ${TODO_QUARKUS_IMAGE_TAG}
Output akan terlihat mirip dengan contoh berikut:
The push refers to repository [<LOGIN_SERVER_VALUE>/todo-quarkus-aca]
188a550fce3d: Pushed
4e3afea591e2: Pushed
1db0eba807a6: Pushed
c72d9ccda0b2: Pushed
d7819b8a2d18: Pushed
d0e5cba6b262: Pushed
e0bac91f0f10: Pushed
1.0: digest: sha256:f9ccb476e2388efa0dfdf817625a94f2247674148a69b7e4846793e63c8be994 size: 1789
Menyebarkan aplikasi Quarkus ke Azure Container Apps
Sekarang setelah Anda mendorong gambar aplikasi ke registri kontainer, gunakan perintah berikut untuk membuat instans Azure Container Apps untuk menjalankan aplikasi setelah menarik gambar dari registri kontainer:
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--image $TODO_QUARKUS_IMAGE_TAG \
--environment $ACA_ENV \
--registry-server $LOGIN_SERVER \
--registry-identity system \
--target-port 8080 \
--ingress 'external' \
--min-replicas 1
Output yang berhasil adalah objek JSON termasuk properti "type": "Microsoft.App/containerApps"
.
Kemudian, sambungkan instans Server Fleksibel Azure Database for PostgreSQL ke aplikasi kontainer menggunakan Konektor Layanan dengan menggunakan langkah-langkah berikut:
Instal ekstensi tanpa kata sandi Konektor Layanan untuk Azure CLI dengan menggunakan perintah berikut:
az extension add --name serviceconnector-passwordless --upgrade --allow-preview true
Sambungkan database ke aplikasi kontainer dengan identitas terkelola yang ditetapkan sistem dengan menggunakan perintah berikut:
az containerapp connection create postgres-flexible \ --resource-group $RESOURCE_GROUP_NAME \ --name $ACA_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --server $DB_SERVER_NAME \ --database $DB_NAME \ --system-identity \ --container $ACA_NAME
Output yang berhasil adalah objek JSON termasuk properti
"type": "microsoft.servicelinker/linkers"
.
Dapatkan URL yang sepenuhnya memenuhi syarat untuk mengakses aplikasi Todo dengan menggunakan perintah berikut:
export QUARKUS_URL=https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn -o tsv)
echo $QUARKUS_URL
Buka browser web baru ke nilai ${QUARKUS_URL}
. Jika halaman web tidak dirender dengan benar, tunggu sebentar dan refresh halaman.
Kemudian, tambahkan item todo baru dengan teks Deployed the Todo app to Container Apps
. Pilih item ini untuk menandainya sebagai selesai.
Akses RESTful API (/api
) untuk mendapatkan semua item todo yang disimpan di Azure Database for PostgreSQL, seperti yang ditunjukkan dalam contoh berikut:
curl --verbose -k ${QUARKUS_URL}/api | jq .
Output akan terlihat seperti contoh berikut:
* Connected to <aca-name>.<random-id>.eastus.azurecontainerapps.io (20.231.235.79) port 443 (#0)
> GET /api HTTP/2
> Host: <aca-name>.<random-id>.eastus.azurecontainerapps.io
> user-agent: curl/7.88.1
> accept: */*
>
< HTTP/2 200
< content-length: 88
< content-type: application/json;charset=UTF-8
<
[
{
"id": 1,
"title": "Deployed the Todo app to Container Apps",
"completed": true,
"order": 1,
"url": null
}
]
Verifikasi bahwa database diperbarui
Gunakan perintah berikut untuk memverifikasi bahwa database diperbarui dengan item todo baru:
export ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
az postgres flexible-server execute \
--admin-user $ENTRA_ADMIN_NAME \
--admin-password $ACCESS_TOKEN \
--name $DB_SERVER_NAME \
--database-name $DB_NAME \
--querytext "select * from todo;"
Jika Anda diminta untuk menginstal ekstensi, jawab Y.
Output akan terlihat mirip dengan contoh berikut, dan harus menyertakan item yang sama di GUI aplikasi Todo yang ditampilkan sebelumnya:
Successfully connected to <DB_SERVER_NAME>.
Ran Database Query: 'select * from todo;'
Retrieving first 30 rows of query output, if applicable.
Closed the connection to <DB_SERVER_NAME>
[
{
"completed": true,
"id": 1,
"ordering": 1,
"title": "Deployed the Todo app to Container Apps",
"url": null
}
]
Setelah selesai, hapus aturan firewall yang memungkinkan alamat IP lokal Anda mengakses instans server fleksibel Azure Database for PostgreSQL dengan menggunakan perintah berikut:
az postgres flexible-server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--name $DB_SERVER_NAME \
--rule-name $DB_SERVER_NAME-database-allow-local-ip \
--yes
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, registri kontainer, dan semua sumber daya terkait.
git reset --hard
docker rmi ${TODO_QUARKUS_IMAGE_TAG}
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Anda mungkin juga ingin menggunakan docker rmi
untuk menghapus postgres
gambar kontainer dan testcontainers
yang dihasilkan oleh mode pengembangan Quarkus.