Menyambungkan ke Admin terkelola untuk Spring di Azure Container Apps
Komponen terkelola Admin untuk Spring menawarkan antarmuka administratif untuk aplikasi web Spring Boot yang mengekspos titik akhir aktuator. Sebagai komponen terkelola di Azure Container Apps, Anda dapat dengan mudah mengikat aplikasi kontainer Anda ke Admin untuk Spring untuk integrasi dan manajemen yang mulus.
Tutorial ini menunjukkan kepada Anda cara membuat komponen Admin untuk Spring Java dan mengikatnya ke aplikasi kontainer Anda sehingga Anda dapat memantau dan mengelola aplikasi Spring Anda dengan mudah.
Dalam tutorial ini, Anda akan mempelajari cara:
- Buat admin untuk komponen Spring Java.
- Ikat aplikasi kontainer Anda ke komponen Admin untuk Spring Java.
Jika Anda ingin mengintegrasikan Admin untuk Spring dengan Eureka Server untuk Spring, lihat Mengintegrasikan Admin untuk Spring dengan Eureka Server untuk Spring di Aplikasi Kontainer sebagai gantinya.
Penting
Tutorial ini menggunakan layanan yang dapat memengaruhi tagihan Azure Anda. Jika Anda memutuskan untuk mengikuti, pastikan Anda menghapus sumber daya yang ditampilkan dalam artikel ini untuk menghindari penagihan yang tidak terduga.
Prasyarat
- Akun Azure dengan langganan aktif. Jika Anda belum memilikinya, Anda dapat membuatnya secara gratis.
- Azure CLI.
Pertimbangan
Saat Anda menjalankan komponen Admin untuk Spring di Container Apps, ketahui detail berikut:
Item | Penjelasan |
---|---|
Cakupan | Komponen berjalan di lingkungan yang sama dengan aplikasi kontainer yang terhubung. |
Penskalaan | Komponen tidak dapat menskalakan. Properti minReplicas penskalakan dan maxReplicas keduanya diatur ke 1 . |
Sumber | Alokasi sumber daya kontainer untuk komponen diperbaiki. Jumlah inti CPU adalah 0,5, dan ukuran memorinya adalah 1 Gi. |
Harga | Penagihan komponen berada di bawah harga berbasis konsumsi. Sumber daya yang digunakan oleh komponen terkelola ditagih dengan tarif aktif/diam. Anda dapat menghapus komponen yang tidak lagi digunakan untuk menghentikan penagihan. |
Pengikatan | Aplikasi kontainer terhubung ke komponen melalui pengikatan. Pengikatan menyuntikkan konfigurasi ke dalam variabel lingkungan aplikasi kontainer. Setelah pengikatan dibuat, aplikasi kontainer dapat membaca nilai konfigurasi dari variabel lingkungan dan terhubung ke komponen. |
Siapkan
Sebelum Anda mulai bekerja dengan komponen Admin untuk Spring, Anda harus terlebih dahulu membuat sumber daya yang diperlukan.
Perintah berikut membantu Anda membuat grup sumber daya dan lingkungan aplikasi kontainer.
Buat variabel untuk mendukung konfigurasi aplikasi Anda. Nilai-nilai ini disediakan untuk Anda untuk tujuan pelajaran ini.
export LOCATION=eastus export RESOURCE_GROUP=my-resource-group export ENVIRONMENT=my-environment export JAVA_COMPONENT_NAME=admin export APP_NAME=sample-admin-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
Variabel Deskripsi LOCATION
Lokasi wilayah Azure tempat Anda membuat aplikasi kontainer dan komponen Java. ENVIRONMENT
Nama lingkungan aplikasi kontainer untuk aplikasi demo Anda. RESOURCE_GROUP
Nama grup sumber daya Azure untuk aplikasi demo Anda. JAVA_COMPONENT_NAME
Nama komponen Java yang dibuat untuk aplikasi kontainer Anda. Dalam hal ini, Anda membuat komponen Admin untuk Spring Java. IMAGE
Gambar kontainer yang digunakan di aplikasi kontainer Anda. Masuk ke Azure dengan Azure CLI.
az login
Buat grup sumber daya.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
Saat Anda menggunakan
--query
parameter , respons memfilter ke pesan keberhasilan atau kegagalan sederhana.Buat lingkungan aplikasi kontainer Anda.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Menggunakan komponen
Setelah memiliki lingkungan yang ada, Anda dapat membuat aplikasi kontainer dan mengikatnya ke instans komponen Java dari komponen Admin untuk Spring.
Buat komponen Admin untuk Spring Java.
az containerapp env java-component admin-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1
Perbarui komponen Admin untuk Spring Java.
az containerapp env java-component admin-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2
Mengikat aplikasi kontainer Anda ke komponen Admin untuk Spring Java
Buat aplikasi kontainer dan ikat ke komponen Admin untuk Spring.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --bind $JAVA_COMPONENT_NAME
Operasi pengikatan mengikat aplikasi kontainer ke komponen Admin untuk Spring Java. Aplikasi kontainer sekarang dapat membaca nilai konfigurasi dari variabel lingkungan, terutama SPRING_BOOT_ADMIN_CLIENT_URL
properti , dan menyambungkan ke komponen Admin untuk Spring.
Pengikatan juga menyuntikkan properti berikut:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Properti ini menunjukkan bahwa klien komponen Admin untuk Spring harus lebih memilih alamat IP instans aplikasi kontainer saat Anda terhubung ke admin untuk server Spring.
Opsional: Batalkan ikatan aplikasi kontainer Anda dari komponen Admin untuk Spring Java
Untuk menghapus pengikatan dari aplikasi kontainer, gunakan --unbind
opsi .
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Melihat dasbor
Penting
Untuk melihat dasbor, Anda harus memiliki setidaknya peran yang Microsoft.App/managedEnvironments/write
ditetapkan ke akun Anda pada sumber daya lingkungan terkelola. Anda dapat secara eksplisit menetapkan Owner
peran atau Contributor
pada sumber daya. Anda juga dapat mengikuti langkah-langkah untuk membuat definisi peran kustom dan menetapkannya ke akun Anda.
Catatan
Dasbor tidak tersedia di Azure China 21Vianet.
Buat definisi peran kustom.
az role definition create --role-definition '{ "Name": "<ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'
Pastikan untuk mengganti tempat penampung di antara tanda
<>
kurung siku dengan nilai Anda.Tetapkan peran kustom ke akun Anda di sumber daya lingkungan terkelola.
Dapatkan ID sumber daya lingkungan terkelola:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Tetapkan peran ke akun Anda.
Sebelum Anda menjalankan perintah ini, ganti tempat penampung - seperti yang ditunjukkan oleh tanda
<>
kurung - dengan ID pengguna atau perwakilan layanan atau nama peran Anda.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Catatan
Nilai
<USER_OR_SERVICE_PRINCIPAL_ID>
harus menjadi identitas yang Anda gunakan untuk mengakses portal Azure. Nilainya<ROLE_NAME>
adalah nama yang Anda tetapkan di langkah 1.Dapatkan URL dasbor Admin untuk Spring.
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv
Perintah ini mengembalikan URL yang dapat Anda gunakan untuk mengakses dasbor Admin untuk Spring. Dengan dasbor, Anda juga dapat melihat aplikasi kontainer Anda, seperti yang ditunjukkan pada cuplikan layar berikut.
Membersihkan sumber daya
Sumber daya yang dibuat dalam tutorial ini berpengaruh pada tagihan Azure Anda. Jika Anda tidak akan menggunakan layanan ini dalam jangka panjang, jalankan perintah berikut untuk menghapus semua yang Anda buat dalam tutorial ini.
az group delete --resource-group $RESOURCE_GROUP
Dependensi
Saat Anda menggunakan komponen admin di aplikasi kontainer Anda sendiri, Anda perlu menambahkan dependensi berikut dalam file pom.xml Anda. Ganti nomor versi dengan versi terbaru yang tersedia di Repositori Maven.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Properti yang dapat dikonfigurasi
Dimulai dengan Spring Boot 2, titik akhir selain health
dan info
tidak diekspos secara default. Anda dapat mengeksposnya dengan menambahkan konfigurasi berikut di file application.properties Anda.
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
Daftar konfigurasi yang diizinkan untuk Admin Anda untuk Spring
Daftar berikut merinci properti komponen admin yang dapat Anda konfigurasi untuk aplikasi Anda. Untuk informasi selengkapnya, lihat Admin Spring Boot.
Nama properti | Deskripsi | Nilai default |
---|---|---|
spring.boot.admin.server.enabled |
Mengaktifkan Server Admin Spring Boot. | true |
spring.boot.admin.context-path |
Awalan jalur tempat aset statis dan API Server Admin dilayani. Relatif terhadap Dispatcher-Servlet. | |
spring.boot.admin.monitor.status-interval |
Interval waktu dalam milidetik untuk memeriksa status instans. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
Masa pakai status dalam milidetik. Status tidak diperbarui selama status terakhir tidak kedaluwarsa. | 10.000 mdtk |
spring.boot.admin.monitor.info-interval |
Interval waktu dalam milidetik untuk memeriksa info instans. | 1m |
spring.boot.admin.monitor.info-lifetime |
Masa pakai info dalam hitungan menit. Info tidak diperbarui selama info terakhir tidak kedaluwarsa. | 1m |
spring.boot.admin.monitor.default-timeout |
Batas waktu default saat membuat permintaan. Nilai individual untuk titik akhir tertentu dapat ditimpa menggunakan spring.boot.admin.monitor.timeout.* . |
10,000 |
spring.boot.admin.monitor.timeout.* |
Pasangan kunci-nilai dengan batas waktu per endpointId . |
Default ke default-timeout nilai. |
spring.boot.admin.monitor.default-retries |
Jumlah default percobaan ulang untuk permintaan yang gagal. Permintaan yang mengubah data (PUT , , POST PATCH , DELETE ) tidak pernah dicoba kembali. Nilai individual untuk titik akhir tertentu dapat ditimpa menggunakan spring.boot.admin.monitor.retries.* . |
0 |
spring.boot.admin.monitor.retries.* |
Pasangan kunci-nilai dengan jumlah percobaan ulang per endpointId . Permintaan yang mengubah data (PUT , , POST PATCH , DELETE ) tidak pernah dicoba kembali. |
Default ke default-retries nilai. |
spring.boot.admin.metadata-keys-to-sanitize |
Nilai metadata untuk kunci yang cocok dengan pola regex ini digunakan untuk membersihkan di semua output JSON. Mulai dari Spring Boot 3, semua nilai aktuator ditutupi secara default. Untuk informasi selengkapnya tentang cara mengonfigurasi proses unsanitization, lihat Membersihkan Nilai Sensitif. | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
Untuk aplikasi klien Spring Boot 1.x, Spring Boot Admin memeriksa titik akhir yang ditentukan menggunakan OPTIONS permintaan. Jika jalur berbeda dari ID, Anda dapat menentukan nilai ini sebagai id:path - misalnya, health:ping . |
"health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents" |
spring.boot.admin.instance-proxy.ignored-headers |
Header tidak diteruskan saat membuat permintaan ke klien. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
Judul halaman yang ditampilkan. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
Durasi polling dalam milidetik untuk mengambil data cache baru. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
Durasi polling dalam milidetik untuk mengambil data sumber data baru. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
Durasi polling dalam milidetik untuk mengambil data gc baru. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Durasi polling dalam milidetik untuk mengambil data proses baru. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
Durasi polling dalam milidetik untuk mengambil data memori baru. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
Durasi polling dalam milidetik untuk mengambil data utas baru. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
Durasi polling dalam milidetik untuk mengambil data logfile baru. | 1000 |
spring.boot.admin.ui.enable-toasts |
Mengaktifkan atau menonaktifkan pemberitahuan toast. | false |
spring.boot.admin.ui.title |
Nilai judul jendela browser. | "" |
spring.boot.admin.ui.brand |
Kode HTML dirender di header navigasi dan default ke label Admin Spring Boot. Secara default, logo Admin Spring Boot diikuti dengan namanya. | "" |
management.scheme |
Nilai yang digantikan dalam URL layanan yang digunakan untuk mengakses titik akhir aktuator. | |
management.address |
Nilai yang digantikan dalam URL layanan yang digunakan untuk mengakses titik akhir aktuator. | |
management.port |
Nilai yang digantikan dalam URL layanan yang digunakan untuk mengakses titik akhir aktuator. | |
management.context-path |
Nilai yang ditambahkan ke URL layanan yang digunakan untuk mengakses titik akhir aktuator. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Nilai yang ditambahkan ke URL layanan yang digunakan untuk pemeriksaan kesehatan. Diabaikan oleh EurekaServiceInstanceConverter . |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
DiscoveryClient Mengaktifkan dukungan untuk server admin. |
true |
spring.boot.admin.discovery.converter.management-context-path |
Nilai yang ditambahkan ke service-url layanan yang ditemukan saat management-url nilai dikonversi oleh DefaultServiceInstanceConverter . |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
Nilai yang ditambahkan ke management-url layanan yang ditemukan saat health-url nilai dikonversi oleh DefaultServiceInstanceConverter . |
"health" |
spring.boot.admin.discovery.ignored-services |
Layanan yang diabaikan saat menggunakan penemuan dan tidak terdaftar sebagai aplikasi. Mendukung pola sederhana seperti "foo*" , , "*bar" dan "foo*bar*" . |
|
spring.boot.admin.discovery.services |
Layanan disertakan saat menggunakan penemuan dan terdaftar sebagai aplikasi. Mendukung pola sederhana seperti "foo*" , , "*bar" dan "foo*bar*" . |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
Layanan diabaikan jika berisi setidaknya satu item metadata yang cocok dengan pola dalam daftar ini. Mendukung pola seperti "discoverable=false" . |
|
spring.boot.admin.discovery.instances-metadata |
Layanan disertakan jika berisi setidaknya satu item metadata yang cocok dengan pola dalam daftar. Mendukung pola seperti "discoverable=true" . |
Konfigurasi umum
- Konfigurasi terkait pengelogan:
- logging.level.*
- logging.group.*
- Konfigurasi lain di bawah
logging.*
namespace harus dilarang. Misalnya, menulis file log dengan menggunakanlogging.file
harus dilarang.
Batasan
- Dasbor Admin Spring Boot tidak tersedia di Azure China 21Vianet.
Konten terkait
Mengintegrasikan Admin terkelola untuk Spring dengan Eureka Server untuk Spring