Mengonfigurasi pengaturan untuk komponen Config Server for Spring di Azure Container Apps (pratinjau)
Config Server for Spring menyediakan lokasi terpusat untuk membuat data konfigurasi tersedia untuk beberapa aplikasi. Gunakan panduan berikut untuk mempelajari cara mengonfigurasi dan mengelola komponen Config Server for Spring Anda.
tampilkan
Anda dapat melihat detail komponen individual berdasarkan nama menggunakan show
perintah .
Sebelum Anda menjalankan perintah berikut, ganti tempat penampung yang dikelilingi dengan <>
nilai Anda.
az containerapp env java-component config-server-for-spring show \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <JAVA_COMPONENT_NAME>
List
Anda dapat mencantumkan semua komponen Java terdaftar menggunakan list
perintah .
Sebelum Anda menjalankan perintah berikut, ganti tempat penampung yang dikelilingi dengan <>
nilai Anda.
az containerapp env java-component list \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP>
Mengikat
--bind
Gunakan parameter update
perintah untuk membuat koneksi antara komponen Config Server for Spring dan aplikasi kontainer Anda.
Sebelum Anda menjalankan perintah berikut, ganti tempat penampung yang dikelilingi dengan <>
nilai Anda.
az containerapp update \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--bind <JAVA_COMPONENT_NAME>
Batalkan ikatan
Untuk memutuskan koneksi antara aplikasi kontainer Anda dan komponen Config Server for Spring, gunakan --unbind
parameter update
perintah .
Sebelum Anda menjalankan perintah berikut, ganti tempat penampung yang dikelilingi dengan <>
nilai Anda.
az containerapp update \
--name <CONTAINER_APP_NAME> \
--unbind <JAVA_COMPONENT_NAME> \
--resource-group <RESOURCE_GROUP>
Opsi konfigurasi
Perintah az containerapp update
menggunakan --configuration
parameter untuk mengontrol bagaimana Config Server for Spring dikonfigurasi. Anda dapat menggunakan beberapa parameter sekaligus selama dipisahkan oleh spasi. Anda dapat menemukan detail selengkapnya di dokumen Spring Cloud Config Server .
Tabel berikut mencantumkan nilai konfigurasi berbeda yang tersedia.
Konfigurasi backend Git
Nama | Deskripsi |
---|---|
spring.cloud.config.server.git.uri spring.cloud.config.server.git.repos.{repoName}.uri |
URI repositori jarak jauh. |
spring.cloud.config.server.git.username spring.cloud.config.server.git.repos.{repoName}.username |
Nama pengguna untuk autentikasi dengan repositori jarak jauh. |
spring.cloud.config.server.git.password spring.cloud.config.server.git.repos.{repoName}.password |
Kata sandi untuk autentikasi dengan repositori jarak jauh. |
spring.cloud.config.server.git.search-paths spring.cloud.config.server.git.repos.{repoName}.search-paths |
Cari jalur untuk digunakan dalam salinan kerja lokal. Secara default hanya mencari akar. |
spring.cloud.config.server.git.force-pull spring.cloud.config.server.git.repos.{repoName}.force-pull |
Bendera untuk menunjukkan bahwa repositori harus menarik paksa. Jika benar buang perubahan lokal apa pun dan ambil dari repositori jarak jauh. |
spring.cloud.config.server.git.default-label spring.cloud.config.server.git.repos.{repoName}.default-label |
Label default yang digunakan untuk Git adalah utama. Jika Anda tidak mengatur spring.cloud.config.server.git.default-label dan cabang bernama utama tidak ada, server konfigurasi secara default juga akan mencoba memeriksa cabang bernama master. Jika Anda ingin menonaktifkan perilaku cabang fallback, Anda dapat mengatur spring.cloud.config.server.git.tryMasterBranch ke false. |
spring.cloud.config.server.git.try-master-branch spring.cloud.config.server.git.repos.{repoName}.try-master-branch |
Server konfigurasi secara default akan mencoba memeriksa cabang bernama master. |
spring.cloud.config.server.git.skip-ssl-validation spring.cloud.config.server.git.repos.{repoName}.skip-ssl-validation |
Validasi server konfigurasi sertifikat SSL server Git dapat dinonaktifkan dengan mengatur properti git.skipSslValidation ke true. |
spring.cloud.config.server.git.clone-on-start spring.cloud.config.server.git.repos.{repoName}.clone-on-start |
Bendera untuk menunjukkan bahwa repositori harus dikloning saat startup (bukan sesuai permintaan). Umumnya mengarah ke startup yang lebih lambat tetapi kueri pertama yang lebih cepat. |
spring.cloud.config.server.git.timeout spring.cloud.config.server.git.repos.{repoName}.timeout |
Waktu habis (dalam detik) untuk mendapatkan koneksi HTTP atau SSH (jika berlaku). Default 5 detik. |
spring.cloud.config.server.git.refresh-rate spring.cloud.config.server.git.repos.{repoName}.refresh-rate |
Seberapa sering server konfigurasi akan mengambil data konfigurasi yang diperbarui dari backend Git Anda. |
spring.cloud.config.server.git.private-key spring.cloud.config.server.git.repos.{repoName}.private-key |
Kunci privat SSH yang valid. Harus diatur jika ignore-local-ssh-settings benar dan Git URI adalah format SSH. |
spring.cloud.config.server.git.host-key spring.cloud.config.server.git.repos.{repoName}.host-key |
Kunci host SSH yang valid. Harus diatur jika host-key-algorithm juga diatur. |
spring.cloud.config.server.git.host-key-algorithm spring.cloud.config.server.git.repos.{repoName}.host-key-algorithm |
Salah satu ssh-dss, ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, atau ecdsa-sha2-nistp521. Harus diatur jika kunci host juga diatur. |
spring.cloud.config.server.git.strict-host-key-checking spring.cloud.config.server.git.repos.{repoName}.strict-host-key-checking |
benar atau salah. Jika false, abaikan kesalahan dengan kunci host. |
spring.cloud.config.server.git.repos.{repoName} |
URI repositori jarak jauh. |
spring.cloud.config.server.git.repos.{repoName}.pattern |
Format pola adalah daftar nama {application}/{profile} yang dipisahkan koma dengan kartubebas. Jika {application}/{profile} tidak cocok dengan salah satu pola, itu menggunakan URI default yang ditentukan di bawah. |
Konfigurasi umum
konfigurasi terkait pengelogan
- logging.level.*
- logging.group.*
- Konfigurasi lain apa pun di bawah pengelogan.* namespace harus dilarang, misalnya, menulis file log dengan menggunakan
logging.file
harus dilarang.
spring.cloud.config.server.overrides
- Peta tambahan untuk sumber properti yang akan dikirim ke semua klien secara tanpa syarat.
spring.cloud.config.override-none
- Anda dapat mengubah prioritas semua penimpaan di klien menjadi lebih seperti nilai default, memungkinkan aplikasi menyediakan nilainya sendiri dalam variabel lingkungan atau properti Sistem, dengan mengatur bendera spring.cloud.config.override-none=true (defaultnya salah) di repositori jarak jauh.
spring.cloud.config.allow-override
- Jika Anda mengaktifkan bootstrap pertama konfigurasi, Anda dapat mengizinkan aplikasi klien untuk mengambil alih konfigurasi dari server konfigurasi dengan menempatkan dua properti dalam konfigurasi aplikasi yang berasal dari server konfigurasi.
spring.cloud.config.server.health.
- Anda dapat mengonfigurasi Indikator Kesehatan untuk memeriksa lebih banyak aplikasi bersama dengan profil kustom dan label kustom
spring.cloud.config.server.accept-empty
- Anda dapat mengatur
spring.cloud.config.server.accept-empty
kefalse
sehingga server mengembalikan status HTTP404
, jika aplikasi tidak ditemukan. Secara default, bendera ini diatur ketrue
.
- Anda dapat mengatur
Enkripsi dan dekripsi (simetris)
- encrypt.key
- Lebih mudah untuk menggunakan kunci konten karena merupakan nilai properti tunggal untuk dikonfigurasi.
- spring.cloud.config.server.encrypt.enabled
- Anda dapat mengatur ini ke
false
, untuk menonaktifkan dekripsi sisi server.
- Anda dapat mengatur ini ke
- encrypt.key
Refresh
Layanan yang menggunakan properti perlu mengetahui tentang perubahan sebelum terjadi. Metode pemberitahuan default untuk Config Server for Spring melibatkan pemicu peristiwa refresh secara manual, seperti refresh dengan panggilan https://<YOUR_CONFIG_CLIENT_HOST_NAME>/actuator/refresh
, yang mungkin tidak layak jika ada banyak instans aplikasi.
Sebagai gantinya, Anda dapat secara otomatis menyegarkan nilai dari Config Server dengan membiarkan polling klien konfigurasi untuk perubahan berdasarkan refresh internal. Gunakan langkah-langkah berikut untuk menyegarkan nilai secara otomatis dari Config Server.
Daftarkan tugas terjadwal untuk merefresh konteks dalam interval tertentu, seperti yang ditunjukkan dalam contoh berikut.
@Configuration @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class}) @EnableScheduling public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer { @Value("${spring.cloud.config.refresh-interval:60}") private long refreshInterval; @Value("${spring.cloud.config.auto-refresh:false}") private boolean autoRefresh; private final RefreshEndpoint refreshEndpoint; public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) { this.refreshEndpoint = refreshEndpoint; } @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { if (autoRefresh) { // set minimal refresh interval to 5 seconds refreshInterval = Math.max(refreshInterval, 5); scheduledTaskRegistrar.addFixedRateTask(refreshEndpoint::refresh, Duration.ofSeconds(refreshInterval)); } } }
Aktifkan
autorefresh
dan atur interval refresh yang sesuai dalam file application.yml . Dalam contoh berikut, klien melakukan polling untuk perubahan konfigurasi setiap 60 detik, yang merupakan nilai minimum yang dapat Anda atur untuk interval refresh.Secara default,
autorefresh
diatur kefalse
, danrefresh-interval
diatur ke 60 detik.spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refresh
Tambahkan
@RefreshScope
dalam kode Anda. Dalam contoh berikut, variabelconnectTimeout
secara otomatis di-refresh setiap 60 detik.@RestController @RefreshScope public class HelloController { @Value("${timeout:4000}") private String connectTimeout; }
Enkripsi dan dekripsi dengan kunci konten
Dekripsi sisi server
Secara default, enkripsi sisi server diaktifkan. Gunakan langkah-langkah berikut untuk mengaktifkan dekripsi di aplikasi Anda.
Tambahkan properti terenkripsi dalam file .properties Anda di repositori git Anda.
Misalnya, file Anda harus menyerupai contoh berikut:
message={cipher}f43e3df3862ab196a4b367624a7d9b581e1c543610da353fbdd2477d60fb282f
Perbarui komponen Config Server for Spring Java untuk menggunakan repositori git yang memiliki properti terenkripsi dan atur kunci enkripsi.
Sebelum Anda menjalankan perintah berikut, ganti tempat penampung yang dikelilingi dengan
<>
nilai Anda.az containerapp env java-component config-server-for-spring update \ --environment <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --name <JAVA_COMPONENT_NAME> \ --configuration spring.cloud.config.server.git.uri=<URI> encrypt.key=randomKey
Dekripsi sisi klien
Anda dapat menggunakan dekripsi sisi klien properti dengan mengikuti langkah-langkah berikut:
Tambahkan properti terenkripsi dalam file Anda
*.properties*
di repositori git Anda.Perbarui komponen Config Server for Spring Java untuk menggunakan repositori git yang memiliki properti terenkripsi dan menonaktifkan dekripsi sisi server.
Sebelum Anda menjalankan perintah berikut, ganti tempat penampung yang dikelilingi dengan
<>
nilai Anda.az containerapp env java-component config-server-for-spring update \ --environment <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --name <JAVA_COMPONENT_NAME> \ --configuration spring.cloud.config.server.git.uri=<URI> spring.cloud.config.server.encrypt.enabled=false
Di aplikasi klien Anda, tambahkan kunci
ENCRYPT_KEY=randomKey
dekripsi sebagai variabel lingkungan.Atau, jika Anda menyertakan spring-cloud-starter-bootstrap pada
classpath
, atau ditetapkanspring.cloud.bootstrap.enabled=true
sebagai properti sistem, aturencrypt.key
dalambootstrap.properties
.Sebelum Anda menjalankan perintah berikut, ganti tempat penampung yang dikelilingi dengan
<>
nilai Anda.az containerapp update \ --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --set-env-vars "ENCRYPT_KEY=randomKey"
encrypt: key: somerandomkey
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