Bagikan melalui


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 ke false sehingga server mengembalikan status HTTP 404 , jika aplikasi tidak ditemukan. Secara default, bendera ini diatur ke true.
  • 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.

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.

  1. 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));
            }
        }
    }
    
  2. 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 ke false, dan refresh-interval diatur ke 60 detik.

    spring:
        cloud:
            config:
            auto-refresh: true
            refresh-interval: 60
    management:
        endpoints:
            web:
            exposure:
                include:
                - refresh
    
  3. Tambahkan @RefreshScope dalam kode Anda. Dalam contoh berikut, variabel connectTimeout 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.

  1. Tambahkan properti terenkripsi dalam file .properties Anda di repositori git Anda.

    Misalnya, file Anda harus menyerupai contoh berikut:

    message={cipher}f43e3df3862ab196a4b367624a7d9b581e1c543610da353fbdd2477d60fb282f
    
  2. 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:

  1. Tambahkan properti terenkripsi dalam file Anda *.properties* di repositori git Anda.

  2. 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
    
  3. Di aplikasi klien Anda, tambahkan kunci ENCRYPT_KEY=randomKey dekripsi sebagai variabel lingkungan.

    Atau, jika Anda menyertakan spring-cloud-starter-bootstrap pada classpath, atau ditetapkan spring.cloud.bootstrap.enabled=true sebagai properti sistem, atur encrypt.key dalam bootstrap.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