Mengonfigurasi Spring Cloud Config Server terkelola di Azure Spring Apps

Catatan

Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara saat kami berupaya memperbarui aset seperti cuplikan layar, video, dan diagram.

Artikel ini berlaku untuk: ✔️ Java ✔️ C#

Artikel ini berlaku untuk: ✔️ Konsumsi standar dan khusus (Pratinjau) ✔️ Basic/Standard ❌ Enterprise

Artikel ini menunjukkan cara mengonfigurasi Spring Cloud Config Server terkelola di layanan Azure Spring Apps.

Spring Cloud Config Server menyediakan dukungan sisi klien dan server untuk konfigurasi yang dieksternalisasi dalam sistem terdistribusi. Instans Config Server menyediakan tempat terpusat untuk mengelola properti eksternal untuk aplikasi di semua lingkungan. Untuk informasi selengkapnya, lihat dokumentasi Konfigurasi Spring Cloud.

Catatan

Untuk menggunakan server konfigurasi dalam konsumsi Standar dan paket khusus, Anda harus mengaktifkannya terlebih dahulu. Untuk informasi selengkapnya, lihat Mengaktifkan dan menonaktifkan Spring Cloud Config Server di Azure Spring Apps.

Prasyarat

  • Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
  • Instans layanan Azure Spring Apps yang sudah disediakan dan berjalan menggunakan paket Dasar atau Standar. Untuk menyiapkan dan meluncurkan layanan Azure Spring Apps, lihat Mulai Cepat: Menyebarkan aplikasi pertama Anda ke Azure Spring Apps. Spring Cloud Config Server tidak berlaku untuk paket Enterprise.
  • Git.

Pembatasan

Ada beberapa batasan saat Anda menggunakan Config Server dengan back end Git. Properti berikut secara otomatis disuntikkan ke lingkungan aplikasi Anda untuk mengakses Server Konfigurasi dan Penemuan Layanan. Jika Anda juga mengonfigurasi properti tersebut dari file Config Server, Anda mungkin mengalami konflik dan perilaku tak terduga.

eureka.client.service-url.defaultZone
eureka.client.tls.keystore
eureka.instance.preferIpAddress
eureka.instance.instance-id
server.port
spring.cloud.config.tls.keystore
spring.config.import
spring.application.name
spring.jmx.enabled
management.endpoints.jmx.exposure.include

Perhatian

Jangan letakkan properti ini di file aplikasi Config Server Anda.

Membuat file Config Server Anda

Azure Spring Apps mendukung Azure DevOps Server, GitHub, GitLab, dan Bitbucket untuk menyimpan file Config Server Anda. Ketika repositori Anda siap, Anda dapat membuat file konfigurasi dan menyimpannya di sana.

Beberapa properti yang dapat dikonfigurasi hanya tersedia untuk jenis tertentu. Bagian berikut ini menjelaskan properti untuk setiap jenis repositori.

Catatan

Config Server mengambil master (di Git) sebagai label default jika Anda tidak menentukannya. Namun, GitHub baru-baru ini mengubah cabang default dari master ke main. Untuk menghindari kegagalan Azure Spring Apps Config Server, harap perhatikan label default saat menyiapkan Config Server dengan GitHub, terutama untuk repositori yang baru dibuat.

Repositori publik

Saat Anda menggunakan repositori publik, properti yang dapat dikonfigurasi lebih terbatas daripada dengan repositori privat.

Tabel berikut mencantumkan properti yang dapat dikonfigurasi yang bisa Anda gunakan untuk menyiapkan repositori Git publik.

Catatan

Menggunakan tanda hubung (-) untuk memisahkan kata adalah satu-satunya konvensi penamaan yang saat ini didukung. Misalnya, Anda dapat menggunakan default-label, tetapi tidak defaultLabel.

Properti Wajib Fitur
uri Ya URI repositori Git yang digunakan sebagai back end Server Konfigurasi. Harus dimulai dengan http://, , git@https://, atau ssh://.
default-label No Label default repositori Git. Harus berupa nama cabang, nama tag, atau ID penerapan repositori.
search-paths No Array string yang digunakan untuk mencari subdirektori dari repositori Git.

Repositori privat dengan autentikasi SSH

Tabel berikut mencantumkan properti yang dapat dikonfigurasi yang dapat Anda gunakan untuk menyiapkan repositori Git privat dengan SSH.

Catatan

Menggunakan tanda hubung (-) untuk memisahkan kata adalah satu-satunya konvensi penamaan yang saat ini didukung. Misalnya, Anda dapat menggunakan default-label, tetapi tidak defaultLabel.

Properti Wajib Fitur
uri Ya URI repositori Git yang digunakan sebagai back end Config Server. Harus dimulai dengan http://, , git@https://, atau ssh://.
default-label No Label default repositori Git. Harus berupa nama cabang, nama tag, atau ID penerapan repositori.
search-paths No Array string yang digunakan untuk mencari subdirektori dari repositori Git.
private-key No Kunci privat SSH untuk mengakses repositori Git. Diperlukan saat URI dimulai dengan git@ atau ssh://.
host-key No Kunci host server repositori Git. Tidak boleh menyertakan awalan algoritma seperti yang dicakup oleh host-key-algorithm.
host-key-algorithm No Algoritma kunci host. Harus ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, atau ecdsa-sha2-nistp521. Diperlukan hanya jika host-key ada.
strict-host-key-checking No Menunjukkan apakah instans Config Server gagal dimulai saat menggunakan privat host-key. Harus true (nilai default) atau false.

Repositori privat dengan autentikasi dasar

Tabel berikut mencantumkan properti yang dapat dikonfigurasi yang bisa Anda gunakan untuk menyiapkan repositori Git privat dengan autentikasi dasar.

Catatan

Menggunakan tanda hubung (-) untuk memisahkan kata adalah satu-satunya konvensi penamaan yang saat ini didukung. Misalnya, gunakan default-label, bukan defaultLabel.

Properti Wajib Fitur
uri Ya URI repositori Git yang digunakan sebagai back end Server Konfigurasi. Harus dimulai dengan http://, , git@https://, atau ssh://.
default-label No Label default repositori Git. Harus berupa nama cabang, nama tag, atau commit-id repositori.
search-paths No Array string yang digunakan untuk mencari subdirektori dari repositori Git.
username No Nama pengguna yang digunakan untuk mengakses server repositori Git. Diperlukan ketika server repositori Git mendukung autentikasi dasar HTTP.
password No Kata sandi atau token akses pribadi yang digunakan untuk mengakses server repositori Git. Diperlukan ketika server repositori Git mendukung autentikasi dasar HTTP.

Catatan

Banyak server repositori Git mendukung penggunaan token daripada kata sandi untuk autentikasi dasar HTTP. Beberapa repositori mengizinkan token untuk bertahan tanpa batas waktu. Namun, beberapa server repositori Git, termasuk Azure DevOps Server, memaksa token kedaluwarsa dalam beberapa jam. Repositori yang menyebabkan token kedaluwarsa tidak boleh menggunakan autentikasi berbasis token dengan Azure Spring Apps. Jika Anda menggunakan token seperti itu, ingatlah untuk memperbaruinya sebelum kedaluwarsa.

GitHub telah menghapus dukungan untuk autentikasi kata sandi, jadi Anda perlu menggunakan token akses pribadi alih-alih autentikasi kata sandi untuk GitHub. Untuk informasi selengkapnya, lihat Persyaratan autentikasi token untuk operasi Git.

Repositori Git lainnya

Tabel berikut mencantumkan properti yang dapat dikonfigurasi yang dapat Anda gunakan untuk menyiapkan repositori Git dengan pola.

Catatan

Menggunakan tanda hubung (-) untuk memisahkan kata adalah satu-satunya konvensi penamaan yang saat ini didukung. Misalnya, gunakan default-label, bukan defaultLabel.

Properti Wajib Fitur
repos No Peta yang terdiri dari pengaturan untuk repositori Git dengan nama yang diberikan.
repos."uri" Ya pada repos URI repositori Git yang digunakan sebagai back end Server Konfigurasi. Harus dimulai dengan http://, , git@https://, atau ssh://.
repos."name" Ya pada repos Nama untuk mengidentifikasi repositori; misalnya, team-A atau team-B. Diperlukan hanya jika repos ada.
repos."pattern" No Array string yang digunakan untuk mencocokkan nama aplikasi. Untuk setiap pola, gunakan format {application}/{profile} dengan kartubebas.
repos."default-label" No Label default repositori Git. Harus berupa nama cabang, nama tag, atau penerapan IOD repositori.
repos."search-paths" No Array string yang digunakan untuk mencari subdirektori dari repositori Git.
repos."username" No Nama pengguna yang digunakan untuk mengakses server repositori Git. Diperlukan ketika server repositori Git mendukung autentikasi dasar HTTP.
repos."password" No Kata sandi atau token akses pribadi yang digunakan untuk mengakses server repositori Git. Diperlukan ketika server repositori Git mendukung autentikasi dasar HTTP.
repos."private-key" No Kunci privat SSH untuk mengakses repositori Git. Diperlukan ketika URI dimulai dengan git@ atau ssh://.
repos."host-key" No Kunci host server repositori Git. Tidak boleh menyertakan awalan algoritma seperti yang dicakup oleh host-key-algorithm.
repos."host-key-algorithm" No Algoritma kunci host. Harus ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, atau ecdsa-sha2-nistp521. Diperlukan hanya jika host-key ada.
repos."strict-host-key-checking" No Menunjukkan apakah instans Config Server gagal dimulai saat menggunakan privat host-key. Harus true (nilai default) atau false.

Tabel berikut menunjukkan beberapa contoh pola untuk mengonfigurasi layanan Anda dengan repositori tambahan opsional. Untuk informasi selengkapnya, lihat bagian Repositori tambahan dan bagian Pencocokan Pola dan Beberapa Repositori dari dokumentasi Spring.

Pola Deskripsi
test-config-server-app-0/* Pola dan URI repositori cocok dengan aplikasi boot Spring bernama test-config-server-app-0 dengan profil apa pun.
test-config-server-app-1/dev Pola dan URI repositori cocok dengan aplikasi boot Spring bernama test-config-server-app-1 dengan profil dev.
test-config-server-app-2/prod Pola dan URI repositori cocok dengan aplikasi boot Spring bernama test-config-server-app-2 dengan profil prod.

Screenshot of Azure portal showing the Config Server page with the Patterns column of the Additional repositories table highlighted.

Lampirkan repositori Config Server Anda ke Azure Spring Apps

Sekarang setelah file konfigurasi Anda disimpan di repositori, gunakan langkah-langkah berikut untuk menyambungkan Azure Spring Apps ke repositori.

  1. Masuk ke portal Azure.

  2. Buka halaman Ringkasan Azure Spring Apps Anda.

  3. Pilih Config Server di panel navigasi kiri.

  4. Di bagian Repositori default, atur URI menjadi https://github.com/Azure-Samples/piggymetrics-config.

  5. Pilih Validasi.

    Screenshot of Azure portal showing the Config Server page.

  6. Setelah validasi selesai, klik Terapkan untuk menyimpan perubahan Anda.

    Screenshot of Azure portal showing Config Server page with Apply button highlighted.

Diperlukan waktu beberapa menit untuk memperbarui konfigurasi. Anda harus mendapatkan pemberitahuan saat konfigurasi selesai.

Masukkan informasi repositori langsung ke portal Azure

Anda dapat memasukkan informasi repositori untuk repositori default dan, secara opsional, untuk repositori tambahan.

Repositori default

Gunakan langkah-langkah di bagian ini untuk memasukkan informasi repositori untuk repositori publik atau privat.

  • Repositori publik: Di bagian Repositori default, di kotak Uri tempel URI repositori. Masukkan konfigurasi untuk pengaturan Label . Pastikan bahwa pengaturan Autentikasi adalah Publik, lalu pilih Terapkan.

  • Repositori privat: Azure Spring Apps mendukung SSH dan autentikasi berbasis token/kata sandi dasar.

    • Autentikasi Dasar: Di bagian Repositori default, dalam kotak Uri , tempelkan URI repositori, lalu pilih pengaturan di bawah Autentikasi untuk membuka panel Edit Autentikasi . Di daftar drop-down Jenis autentikasi, pilih HTTP Basic, lalu masukkan nama pengguna dan kata sandi/token Anda untuk memberikan akses ke Azure Spring Apps. Pilih OK, lalu pilih Terapkan untuk menyelesaikan penyiapan instans Config Server Anda.

    Screenshot of the Default repository section showing authentication settings for Basic authentication.

    Catatan

    Banyak server repositori Git mendukung penggunaan token daripada kata sandi untuk autentikasi dasar HTTP. Beberapa repositori mengizinkan token untuk bertahan tanpa batas waktu. Namun, beberapa server repositori Git, termasuk Azure DevOps Server, memaksa token kedaluwarsa dalam beberapa jam. Repositori yang menyebabkan token kedaluwarsa tidak boleh menggunakan autentikasi berbasis token dengan Azure Spring Apps. Jika Anda menggunakan token seperti itu, ingatlah untuk memperbaruinya sebelum kedaluwarsa.

    GitHub telah menghapus dukungan untuk autentikasi kata sandi, jadi Anda perlu menggunakan token akses pribadi alih-alih autentikasi kata sandi untuk GitHub. Untuk informasi selengkapnya, lihat Persyaratan autentikasi token untuk operasi Git.

    • SSH: Di bagian Repositori default, dalam kotak Uri , tempelkan URI repositori, lalu pilih pengaturan di bawah Autentikasi untuk membuka panel Edit Autentikasi . Di panel Edit Autentikasi , di daftar drop-down Jenis autentikasi, pilih SSH, lalu masukkan kunci privat Anda. Secara opsional, tentukan kunci host dan algoritma kunci host Anda. Sertakan kunci publik Anda di repositori Config Server Anda. Pilih OK, lalu pilih Terapkan untuk menyelesaikan penyiapan instans Config Server Anda.

    Screenshot of the Default repository section showing authentication settings for SSH authentication.

Repositori ekstra

Jika Anda ingin mengonfigurasi layanan Anda dengan repositori tambahan opsional, tentukan pengaturan Uri dan Autentikasi seperti yang Anda lakukan untuk repositori default. Pastikan untuk menyertakan pengaturan Nama untuk pola Anda, lalu pilih Terapkan untuk melampirkannya ke instans Anda.

Memasukkan informasi repositori ke dalam file YAML

Jika Anda telah menulis file YAML dengan pengaturan repositori, Anda dapat mengimpor file langsung dari komputer lokal Anda ke Azure Spring Apps. Contoh berikut menunjukkan file YAML sederhana untuk repositori privat dengan autentikasi dasar.

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/azure-spring-apps-samples-pr/config-server-repository.git
          username: <username>
          password: <password/token>

Pilih tombol Impor pengaturan, lalu pilih file YAML dari direktori proyek Anda. Pilih impor.

Screenshot of the Config Server Import settings pane.

Pemberitahuan Anda menampilkan async operasi. Server Konfigurasi harus melaporkan keberhasilan setelah 1-2 menit. Informasi dari file YAML Anda ditampilkan di portal Azure. Pilih Terapkan untuk menyelesaikan impor.

Menggunakan Azure Repos untuk konfigurasi Azure Spring Apps

Azure Spring Apps dapat mengakses repositori Git yang bersifat publik, diamankan oleh SSH, atau diamankan menggunakan autentikasi dasar HTTP. Autentikasi dasar HTTP adalah yang paling mudah dari opsi untuk membuat dan mengelola repositori dengan Azure Repos.

Mendapatkan URL repositori dan kredensial

Gunakan langkah-langkah berikut untuk mendapatkan URL repositori dan kredensial Anda.

  1. Di portal Repositori Azure untuk proyek Anda, klik tombol Klon:

  2. Salin URL klon dari kotak teks. URL ini biasanya dalam bentuk berikut:

    https://<organization name>@dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Hapus semuanya setelah https:// dan sebelum dev.azure.com, termasuk @ simbol . URL yang dihasilkan harus dalam bentuk berikut:

    https://dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Simpan URL ini untuk digunakan di bagian berikutnya.

  3. Pilih Buat Kredensial Git untuk menampilkan nama pengguna dan kata sandi, yang harus disimpan untuk digunakan di bagian berikut.

Mengonfigurasi Azure Spring Apps untuk mengakses repositori Git

  1. Masuk ke portal Azure.

  2. Buka halaman Ringkasan Azure Spring Apps Anda.

  3. Pilih layanan yang akan dikonfigurasi.

  4. Di panel kiri halaman layanan di bawah Pengaturan, pilih tab Config Server. Konfigurasikan repositori yang Anda buat, sebagai berikut:

    • Tambahkan URI repositori yang Anda simpan di bagian sebelumnya.
    • Pilih pengaturan di bawah Autentikasi untuk membuka panel Edit Autentikasi .
    • Untuk Jenis autentikasi, pilih HTTP Basic.
    • Untuk Nama Pengguna, tentukan nama pengguna yang Anda simpan di bagian sebelumnya.
    • Untuk Kata Sandi, tentukan kata sandi yang Anda simpan di bagian sebelumnya.
    • Pilih OK, lalu tunggu hingga operasi selesai.

    Screenshot of repository configuration settings.

Menghapus konfigurasi Anda

Pilih Reset pada tab Config Server untuk menghapus pengaturan Anda yang sudah ada. Hapus pengaturan server konfigurasi jika Anda ingin menyambungkan instans Config Server ke sumber lain, seperti saat Anda berpindah dari GitHub ke Azure DevOps Server.

Refresh Config Server

Ketika properti diubah, layanan yang menggunakan properti tersebut harus diberi tahu sebelum perubahan dapat dilakukan. Solusi default untuk Spring Cloud Config Server adalah memicu peristiwa refresh secara manual, yang mungkin tidak layak jika ada banyak instans aplikasi. Untuk informasi selengkapnya, lihat Konfigurasi Terpusat

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.

    @ConditionalOnBean({RefreshEndpoint.class})
    @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 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(), refreshInterval * 1000);
            }
        }
    }
    
  2. Aktifkan rekam otomatis dan atur interval refresh yang sesuai dalam file application.yml Anda. Dalam contoh berikut, polling klien untuk konfigurasi berubah setiap 60 detik, yang merupakan nilai minimum yang dapat Anda atur untuk interval refresh.

    Secara default, autorefresh diatur ke false dan interval refresh 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;
    }
    

Untuk informasi selengkapnya, lihat sampel config-client-polling .

Langkah berikutnya

Dalam artikel ini, Anda mempelajari cara mengaktifkan dan mengonfigurasi instans Spring Cloud Config Server Anda. Untuk mempelajari selengkapnya tentang mengelola aplikasi Anda, lihat Menskalakan aplikasi di Azure Spring Apps.