Bagikan melalui


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.

Cuplikan layar yang memperlihatkan gambaran umum dasbor Admin untuk Wawasan Spring.

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

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.

  1. 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.
  2. Masuk ke Azure dengan Azure CLI.

    az login
    
  3. 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.

  4. 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.

  1. 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
    
  2. 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

  1. 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.

  1. 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.

  2. 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)
    
  3. 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.

  4. 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.

    Cuplikan layar yang memperlihatkan gambaran umum dasbor Admin untuk Spring.

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, , POSTPATCH, 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, , POSTPATCH, 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 menggunakan logging.file harus dilarang.

Batasan

  • Dasbor Admin Spring Boot tidak tersedia di Azure China 21Vianet.

Mengintegrasikan Admin terkelola untuk Spring dengan Eureka Server untuk Spring