Tutorial: Menyebarkan aplikasi Spring ke Azure Spring Apps dengan koneksi tanpa kata sandi ke database Azure
Artikel ini memperlihatkan kepada Anda cara menggunakan koneksi tanpa kata sandi ke database Azure di aplikasi Spring Boot yang disebarkan ke Azure Spring Apps.
Dalam tutorial ini, Anda menyelesaikan tugas-tugas berikut menggunakan portal Azure atau Azure CLI. Kedua metode ini dijelaskan dalam prosedur berikut.
- Menyediakan instans Azure Spring Apps.
- Membangun dan menyebarkan aplikasi ke Azure Spring Apps.
- Jalankan aplikasi yang tersambung ke database Azure menggunakan identitas terkelola.
Catatan
Tutorial ini tidak berfungsi untuk R2DBC.
Prasyarat
- Langganan Azure. Jika Anda belum memilikinya, buat akun gratis sebelum memulai.
- Azure CLI 2.45.0 atau yang lebih tinggi diperlukan.
- Ekstensi Azure Spring Apps. Anda dapat menginstal ekstensi dengan menggunakan perintah:
az extension add --name spring
. - Java Development Kit (JDK), versi 8, 11, atau 17.
- Klien Git.
- cURL atau utilitas HTTP serupa untuk menguji fungsionalitas.
- Klien baris perintah MySQL jika Anda memilih untuk menjalankan Azure Database for MySQL. Anda dapat terhubung ke server Anda dengan Azure Cloud Shell menggunakan alat klien populer, alat baris perintah mysql.exe . Atau, Anda dapat menggunakan
mysql
baris perintah di lingkungan lokal Anda. - Odbc Driver 18 untuk SQL Server jika Anda memilih untuk menjalankan Azure SQL Database.
Menyiapkan lingkungan kerja
Pertama-tama, siapkan beberapa variabel lingkungan menggunakan beberapa perintah berikut:
export AZ_RESOURCE_GROUP=passwordless-tutorial-rg
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demodb
export AZ_LOCATION=<YOUR_AZURE_REGION>
export AZ_SPRING_APPS_SERVICE_NAME=<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
export AZ_SPRING_APPS_APP_NAME=hellospring
export AZ_DB_ADMIN_USERNAME=<YOUR_DB_ADMIN_USERNAME>
export AZ_DB_ADMIN_PASSWORD=<YOUR_DB_ADMIN_PASSWORD>
export AZ_USER_IDENTITY_NAME=<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
Ganti tempat penampung dengan nilai berikut, yang digunakan di seluruh artikel ini:
<YOUR_DATABASE_SERVER_NAME>
: Nama server Azure Database Anda, yang harus unik di seluruh Azure.<YOUR_AZURE_REGION>
: Wilayah Azure yang ingin Anda gunakan. Anda dapat menggunakaneastus
secara default, tetapi kami menyarankan agar Anda mengonfigurasi wilayah yang lebih dekat ke tempat tinggal Anda. Anda dapat melihat daftar lengkap wilayah yang tersedia dengan menggunakanaz account list-locations
.<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
: Nama instans Azure Spring Apps Anda. Nama harus antara 4 hingga 32 karakter dan hanya boleh berisi huruf kecil, angka, dan tanda hubung. Karakter pertama dari nama layanan harus berupa huruf dan karakter terakhir harus berupa huruf atau angka.<AZ_DB_ADMIN_USERNAME>
: Nama pengguna admin server database Azure Anda.<AZ_DB_ADMIN_PASSWORD>
: Kata sandi admin server database Azure Anda.<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
: Nama server identitas terkelola yang ditetapkan pengguna Anda, yang harus unik di seluruh Azure.
Menyiapkan instans Azure Spring Apps
Gunakan langkah-langkah berikut untuk menyediakan instans Azure Spring Apps.
Perbarui Azure CLI dengan ekstensi Azure Spring Apps dengan menggunakan perintah berikut:
az extension update --name spring
Masuk ke Azure CLI dan pilih langganan aktif Anda dengan menggunakan perintah berikut:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>
Gunakan perintah berikut untuk membuat grup sumber daya untuk berisi layanan Azure Spring Apps Anda dan instans layanan Azure Spring Apps:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Membuat instans database Azure
Gunakan langkah-langkah berikut untuk menyediakan instans Azure Database.
Buat server Azure Database for MySQL dengan menggunakan perintah berikut:
az mysql flexible-server create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_DATABASE_SERVER_NAME \ --location $AZ_LOCATION \ --admin-user $AZ_DB_ADMIN_USERNAME \ --admin-password $AZ_DB_ADMIN_PASSWORD \ --yes
Catatan
Jika Anda tidak menyediakan admin-user
atau admin-password
parameter, sistem akan menghasilkan pengguna admin default atau kata sandi admin acak secara default.
Buat database baru dengan menggunakan perintah berikut:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Membuat aplikasi dengan titik akhir publik yang ditetapkan
Gunakan perintah berikut untuk membuat aplikasi.
az spring app create \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--name $AZ_SPRING_APPS_APP_NAME \
--runtime-version=Java_17
--assign-endpoint true
Koneksi Azure Spring Apps ke database Azure
Pertama, instal ekstensi Service Koneksi or tanpa kata sandi untuk Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
Kemudian, gunakan perintah berikut untuk membuat identitas terkelola yang ditetapkan pengguna untuk autentikasi Microsoft Entra. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi Microsoft Entra untuk Azure Database for MySQL - Server Fleksibel.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Penting
Setelah membuat identitas yang ditetapkan pengguna, minta Administrator Global atau Administrator Peran Istimewa Anda untuk memberikan izin berikut untuk identitas ini: User.Read.All
, GroupMember.Read.All
, dan Application.Read.ALL
. Untuk informasi selengkapnya, lihat bagian Izin autentikasi Direktori Aktif.
Selanjutnya, gunakan perintah berikut untuk membuat koneksi tanpa kata sandi ke database.
az spring connection create mysql-flexible \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--app $AZ_SPRING_APPS_APP_NAME \
--target-resource-group $AZ_RESOURCE_GROUP \
--server $AZ_DATABASE_SERVER_NAME \
--database $AZ_DATABASE_NAME \
--system-identity mysql-identity-id=$AZ_IDENTITY_RESOURCE_ID
Perintah Koneksi or Layanan ini melakukan tugas berikut di latar belakang:
Aktifkan identitas terkelola yang ditetapkan sistem untuk aplikasi
$AZ_SPRING_APPS_APP_NAME
yang dihosting oleh Azure Spring Apps.Atur admin Microsoft Entra ke pengguna yang masuk saat ini.
Tambahkan pengguna database bernama
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME
untuk identitas terkelola yang dibuat di langkah 1 dan berikan semua hak istimewa database$AZ_DATABASE_NAME
kepada pengguna ini.Tambahkan dua konfigurasi ke aplikasi
$AZ_SPRING_APPS_APP_NAME
:spring.datasource.url
danspring.datasource.username
.Catatan
Jika Anda melihat pesan
The subscription is not registered to use Microsoft.ServiceLinker
kesalahan , jalankan perintahaz provider register --namespace Microsoft.ServiceLinker
untuk mendaftarkan penyedia sumber daya Service Koneksi or, lalu jalankan perintah koneksi lagi.
Membuat dan menyebarkan aplikasi
Langkah-langkah berikut menjelaskan cara mengunduh, mengonfigurasi, membangun, dan menyebarkan aplikasi sampel.
Gunakan perintah berikut untuk mengkloning repositori kode sampel:
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sample
Tambahkan dependensi berikut ke file pom.xml Anda:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>
Dependensi ini menambahkan dukungan untuk starter Spring Cloud Azure.
Catatan
Untuk informasi selengkapnya tentang cara mengelola versi pustaka Spring Cloud Azure dengan menggunakan tagihan materi (BOM), lihat bagian Memulai dari panduan pengembang Spring Cloud Azure.
Gunakan perintah berikut untuk memperbarui file application.properties :
cat << EOF > passwordless-sample/src/main/resources/application.properties logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.azure.passwordless-enabled=true spring.sql.init.mode=always EOF
Gunakan perintah berikut untuk membangun proyek menggunakan Maven:
cd passwordless-sample ./mvnw clean package -DskipTests
Gunakan perintah berikut untuk menyebarkan file target/demo-0.0.1-SNAPSHOT.jar untuk aplikasi:
az spring app deploy \ --name $AZ_SPRING_APPS_APP_NAME \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --artifact-path target/demo-0.0.1-SNAPSHOT.jar
Kueri status aplikasi setelah penyebaran dengan menggunakan perintah berikut:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output table
Anda akan melihat output yang mirip dengan contoh berikut.
Name Location ResourceGroup Production Deployment Public Url Provisioning Status CPU Memory Running Instance Registered Instance Persistent Storage ----------------- ---------- --------------- ----------------------- --------------------------------------------------- --------------------- ----- -------- ------------------ --------------------- -------------------- <app name> eastus <resource group> default Succeeded 1 2 1/1 0/1 -
Uji aplikasi
Untuk menguji aplikasi, Anda dapat menggunakan cURL. Pertama, buat item "todo" baru di database dengan menggunakan perintah berikut:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done": "true"}' \
https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Perintah ini mengembalikan item yang dibuat, seperti yang ditunjukkan dalam contoh berikut:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Selanjutnya, ambil data dengan menggunakan permintaan cURL berikut:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Perintah ini mengembalikan daftar item "todo", termasuk item yang telah Anda buat, seperti yang diperlihatkan dalam contoh berikut:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Membersihkan sumber daya
Untuk membersihkan semua sumber daya yang digunakan selama tutorial ini, hapus grup sumber daya dengan menggunakan perintah berikut:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk