Konfigurowanie zarządzanego serwera konfiguracji Spring Cloud w usłudze Azure Spring Apps

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

Ten artykuł dotyczy: ✔️ Java ✔️ C#

Ten artykuł dotyczy: ✔️ Użycie standardowe i dedykowane (wersja zapoznawcza) ✔️ w warstwie Podstawowa/Standardowa ❌ Enterprise

W tym artykule pokazano, jak skonfigurować zarządzany serwer Spring Cloud Config Server w usłudze Azure Spring Apps.

Serwer Spring Cloud Config Server zapewnia obsługę po stronie serwera i klienta dla konfiguracji zewnętrznej w systemie rozproszonym. Wystąpienie serwera konfiguracji zapewnia centralne miejsce do zarządzania właściwościami zewnętrznymi dla aplikacji we wszystkich środowiskach. Aby uzyskać więcej informacji, zobacz dokumentację spring cloud Config.

Uwaga

Aby użyć serwera konfiguracji w ramach planu standardowego i dedykowanego, należy go najpierw włączyć. Aby uzyskać więcej informacji, zobacz Włączanie i wyłączanie serwera Spring Cloud Config Server w usłudze Azure Spring Apps.

Wymagania wstępne

  • Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
  • Już zainicjowane i uruchomione wystąpienie usługi Azure Spring Apps przy użyciu planu podstawowego lub standardowego. Aby skonfigurować i uruchomić usługę Azure Spring Apps, zobacz Szybki start: wdrażanie pierwszej aplikacji w usłudze Azure Spring Apps. Serwer Spring Cloud Config Server nie ma zastosowania do planu Enterprise.
  • Git.

Ograniczenie

W przypadku korzystania z serwera konfiguracji z zapleczem usługi Git istnieją pewne ograniczenia. Następujące właściwości są automatycznie wstrzykiwane do środowiska aplikacji w celu uzyskania dostępu do serwera konfiguracji i odnajdywania usług. Jeśli te właściwości są również konfigurowane z plików serwera konfiguracji, mogą wystąpić konflikty i nieoczekiwane zachowanie.

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

Uwaga

Nie umieszczaj tych właściwości w plikach aplikacji serwera konfiguracji.

Tworzenie plików serwera konfiguracji

Usługa Azure Spring Apps obsługuje usługi Azure DevOps Server, GitHub, GitLab i Bitbucket do przechowywania plików serwera konfiguracji. Gdy repozytorium jest gotowe, możesz utworzyć pliki konfiguracji i zapisać je tam.

Niektóre konfigurowalne właściwości są dostępne tylko dla niektórych typów. W poniższych sekcjach opisano właściwości każdego typu repozytorium.

Uwaga

Serwer konfiguracji przyjmuje master (w usłudze Git) jako etykietę domyślną, jeśli jej nie określisz. Jednak usługa GitHub niedawno zmieniła gałąź domyślną z master na main. Aby uniknąć awarii serwera konfiguracji usługi Azure Spring Apps, pamiętaj, aby podczas konfigurowania serwera konfiguracji za pomocą usługi GitHub zwrócić uwagę na etykietę domyślną, szczególnie w przypadku nowo utworzonych repozytoriów.

Repozytorium publiczne

W przypadku korzystania z repozytorium publicznego konfigurowalne właściwości są bardziej ograniczone niż w przypadku repozytorium prywatnego.

W poniższej tabeli wymieniono konfigurowalne właściwości, których można użyć do skonfigurowania publicznego repozytorium Git.

Uwaga

Używanie łącznika (-) do oddzielania wyrazów jest jedyną konwencją nazewnictwa, która jest obecnie obsługiwana. Można na przykład użyć etykiety domyślnej, ale nie domyślnej.

Właściwości Wymagania Funkcja
uri Tak Identyfikator URI repozytorium Git, który jest używany jako zaplecze serwera konfiguracji. Powinien zaczynać się od http://, , https://lub git@ssh://.
default-label Nie. Domyślna etykieta repozytorium Git. Powinna być nazwą gałęzi, nazwą tagu lub identyfikatorem zatwierdzenia repozytorium.
search-paths Nie. Tablica ciągów używanych do wyszukiwania podkatalogów repozytorium Git.

Prywatne repozytorium z uwierzytelnianiem SSH

W poniższej tabeli wymieniono konfigurowalne właściwości, których można użyć do skonfigurowania prywatnego repozytorium Git za pomocą protokołu SSH.

Uwaga

Używanie łącznika (-) do oddzielania wyrazów jest jedyną konwencją nazewnictwa, która jest obecnie obsługiwana. Można na przykład użyć etykiety domyślnej, ale nie domyślnej.

Właściwości Wymagania Funkcja
uri Tak Identyfikator URI repozytorium Git używany jako zaplecze serwera konfiguracji. Powinien zaczynać się od http://, , https://lub git@ssh://.
default-label Nie. Domyślna etykieta repozytorium Git. Powinna być nazwą gałęzi, nazwą tagu lub identyfikatorem zatwierdzenia repozytorium.
search-paths Nie. Tablica ciągów używanych do wyszukiwania podkatalogów repozytorium Git.
private-key Nie. Klucz prywatny SSH umożliwiający dostęp do repozytorium Git. Wymagane, gdy identyfikator URI zaczyna się od git@ lub ssh://.
host-key Nie. Klucz hosta serwera repozytorium Git. Nie należy uwzględniać prefiksu algorytmu zgodnie z opisem .host-key-algorithm
host-key-algorithm Nie. Algorytm klucza hosta. Powinny być ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 lub ecdsa-sha2-nistp521. Wymagane tylko wtedy, gdy host-key istnieje.
strict-host-key-checking Nie. Wskazuje, czy wystąpienie serwera konfiguracji nie może uruchomić się podczas korzystania z prywatnego host-key. Powinna mieć wartość true (wartość domyślna) lub false.

Repozytorium prywatne z uwierzytelnianiem podstawowym

W poniższej tabeli wymieniono konfigurowalne właściwości, których można użyć do skonfigurowania prywatnego repozytorium Git przy użyciu uwierzytelniania podstawowego.

Uwaga

Używanie łącznika (-) do oddzielania wyrazów jest jedyną konwencją nazewnictwa, która jest obecnie obsługiwana. Na przykład użyj etykiety domyślnej, a nie defaultLabel.

Właściwości Wymagania Funkcja
uri Tak Identyfikator URI repozytorium Git, który jest używany jako zaplecze serwera konfiguracji. Powinien zaczynać się od http://, , https://lub git@ssh://.
default-label Nie. Domyślna etykieta repozytorium Git. Powinna być nazwą gałęzi, nazwą tagu lub identyfikatorem zatwierdzenia repozytorium.
search-paths Nie. Tablica ciągów używanych do wyszukiwania podkatalogów repozytorium Git.
username Nie. Nazwa użytkownika używana do uzyskiwania dostępu do serwera repozytorium Git. Wymagane, gdy serwer repozytorium Git obsługuje uwierzytelnianie podstawowe HTTP.
password Nie. Hasło lub osobisty token dostępu używany do uzyskiwania dostępu do serwera repozytorium Git. Wymagane, gdy serwer repozytorium Git obsługuje uwierzytelnianie podstawowe HTTP.

Uwaga

Wiele serwerów repozytorium Git obsługuje używanie tokenów, a nie haseł na potrzeby uwierzytelniania podstawowego HTTP. Niektóre repozytoria umożliwiają utrwalanie tokenów na czas nieokreślony. Jednak niektóre serwery repozytorium Git, w tym serwer Usługi Azure DevOps Server, wymuszają wygaśnięcie tokenów w ciągu kilku godzin. Repozytoria, które powodują wygaśnięcie tokenów, nie powinny używać uwierzytelniania opartego na tokenach w usłudze Azure Spring Apps. Jeśli używasz takiego tokenu, pamiętaj, aby zaktualizować go przed jego wygaśnięciem.

Usługa GitHub usunęła obsługę uwierzytelniania haseł, dlatego musisz użyć osobistego tokenu dostępu zamiast uwierzytelniania haseł w usłudze GitHub. Aby uzyskać więcej informacji, zobacz Wymagania dotyczące uwierzytelniania tokenu dla operacji usługi Git.

Inne repozytoria Git

W poniższej tabeli wymieniono konfigurowalne właściwości, których można użyć do skonfigurowania repozytoriów Git za pomocą wzorca.

Uwaga

Używanie łącznika (-) do oddzielania wyrazów jest jedyną konwencją nazewnictwa, która jest obecnie obsługiwana. Na przykład użyj etykiety domyślnej, a nie defaultLabel.

Właściwości Wymagania Funkcja
repos Nie. Mapa składająca się z ustawień repozytorium Git o podanej nazwie.
repos."uri" Tak repos Identyfikator URI repozytorium Git, który jest używany jako zaplecze serwera konfiguracji. Powinien zaczynać się od http://, , https://lub git@ssh://.
repos."name" Tak repos Nazwa identyfikująca repozytorium; na przykład team-A lub team-B. Wymagane tylko wtedy, gdy repos istnieje.
repos."pattern" Nie. Tablica ciągów używanych do dopasowania nazwy aplikacji. Dla każdego wzorca użyj formatu {application}/{profile} z symbolami wieloznacznymi.
repos."default-label" Nie. Domyślna etykieta repozytorium Git. Powinna być nazwą gałęzi, nazwą tagu lub zatwierdzeniem IOD repozytorium.
repos."search-paths" Nie. Tablica ciągów używanych do wyszukiwania podkatalogów repozytorium Git.
repos."username" Nie. Nazwa użytkownika używana do uzyskiwania dostępu do serwera repozytorium Git. Wymagane, gdy serwer repozytorium Git obsługuje uwierzytelnianie podstawowe HTTP.
repos."password" Nie. Hasło lub osobisty token dostępu używany do uzyskiwania dostępu do serwera repozytorium Git. Wymagane, gdy serwer repozytorium Git obsługuje uwierzytelnianie podstawowe HTTP.
repos."private-key" Nie. Klucz prywatny SSH umożliwiający dostęp do repozytorium Git. Wymagane, gdy identyfikator URI zaczyna się od git@ lub ssh://.
repos."host-key" Nie. Klucz hosta serwera repozytorium Git. Nie należy uwzględniać prefiksu algorytmu zgodnie z opisem .host-key-algorithm
repos."host-key-algorithm" Nie. Algorytm klucza hosta. Powinny być ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 lub ecdsa-sha2-nistp521. Wymagane tylko wtedy, gdy host-key istnieje.
repos."strict-host-key-checking" Nie. Wskazuje, czy wystąpienie serwera konfiguracji nie może uruchomić się podczas korzystania z prywatnego host-key. Powinna mieć wartość true (wartość domyślna) lub false.

W poniższej tabeli przedstawiono kilka przykładów wzorców konfigurowania usługi przy użyciu opcjonalnego dodatkowego repozytorium. Aby uzyskać więcej informacji, zobacz sekcję Dodatkowe repozytoria i sekcję Dopasowywanie wzorców i Wiele repozytoriów w dokumentacji platformy Spring.

Wzorce opis
test-config-server-app-0/* Identyfikator URI wzorca i repozytorium jest zgodny z aplikacją Spring Boot o nazwie test-config-server-app-0 z dowolnym profilem.
test-config-server-app-1/dev Identyfikator URI wzorca i repozytorium jest zgodny z aplikacją Spring Boot o nazwie test-config-server-app-1 z profilem deweloperskim.
test-config-server-app-2/prod Identyfikator URI wzorca i repozytorium jest zgodny z aplikacją Spring Boot o nazwie test-config-server-app-2 z profilem prod.

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

Dołączanie repozytorium serwera konfiguracji do usługi Azure Spring Apps

Teraz, gdy pliki konfiguracji są zapisywane w repozytorium, wykonaj następujące kroki, aby połączyć usługę Azure Spring Apps z repozytorium.

  1. Zaloguj się w witrynie Azure Portal.

  2. Przejdź do strony Przegląd usługi Azure Spring Apps.

  3. Wybierz pozycję Serwer konfiguracji w okienku nawigacji po lewej stronie.

  4. W sekcji Domyślne repozytorium ustaw identyfikator URI na https://github.com/Azure-Samples/piggymetrics-config.

  5. Wybierz Potwierdź.

    Screenshot of Azure portal showing the Config Server page.

  6. Po zakończeniu walidacji wybierz pozycję Zastosuj , aby zapisać zmiany.

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

Aktualizowanie konfiguracji może potrwać kilka minut. Po zakończeniu konfiguracji powinno zostać wyświetlone powiadomienie.

Wprowadź informacje o repozytorium bezpośrednio w witrynie Azure Portal

Możesz wprowadzić informacje o repozytorium domyślnym i opcjonalnie w przypadku dodatkowych repozytoriów.

Repozytorium domyślne

Wykonaj kroki opisane w tej sekcji, aby wprowadzić informacje o repozytorium dla repozytorium publicznego lub prywatnego.

  • Repozytorium publiczne: w sekcji Domyślne repozytorium w polu Identyfikator URI wklej identyfikator URI repozytorium. Wprowadź wartość config dla ustawienia Etykieta. Upewnij się, że ustawienie Uwierzytelnianie jest publiczne, a następnie wybierz pozycję Zastosuj.

  • Repozytorium prywatne: usługa Azure Spring Apps obsługuje podstawowe uwierzytelnianie oparte na hasłach/tokenach i protokół SSH.

    • Uwierzytelnianie podstawowe: w sekcji Domyślne repozytorium w polu Identyfikator URI wklej identyfikator URI repozytorium, a następnie wybierz ustawienie w obszarze Uwierzytelnianie , aby otworzyć okienko Edytowanie uwierzytelniania . Z listy rozwijanej Typ uwierzytelniania wybierz pozycję Http Basic, a następnie wprowadź nazwę użytkownika i hasło/token, aby udzielić dostępu do usługi Azure Spring Apps. Wybierz przycisk OK, a następnie wybierz pozycję Zastosuj , aby zakończyć konfigurowanie wystąpienia serwera konfiguracji.

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

    Uwaga

    Wiele serwerów repozytorium Git obsługuje używanie tokenów, a nie haseł na potrzeby uwierzytelniania podstawowego HTTP. Niektóre repozytoria umożliwiają utrwalanie tokenów na czas nieokreślony. Jednak niektóre serwery repozytorium Git, w tym serwer Usługi Azure DevOps Server, wymuszają wygaśnięcie tokenów w ciągu kilku godzin. Repozytoria, które powodują wygaśnięcie tokenów, nie powinny używać uwierzytelniania opartego na tokenach w usłudze Azure Spring Apps. Jeśli używasz takiego tokenu, pamiętaj, aby zaktualizować go przed jego wygaśnięciem.

    Usługa GitHub usunęła obsługę uwierzytelniania haseł, dlatego musisz użyć osobistego tokenu dostępu zamiast uwierzytelniania haseł w usłudze GitHub. Aby uzyskać więcej informacji, zobacz Wymagania dotyczące uwierzytelniania tokenu dla operacji usługi Git.

    • SSH: w sekcji Domyślne repozytorium w polu Identyfikator URI wklej identyfikator URI repozytorium, a następnie wybierz ustawienie w obszarze Uwierzytelnianie , aby otworzyć okienko Edytowanie uwierzytelniania . W okienku Edytowanie uwierzytelniania na liście rozwijanej Typ uwierzytelniania wybierz pozycję SSH, a następnie wprowadź klucz prywatny. Opcjonalnie określ klucz hosta i algorytm klucza hosta. Uwzględnij klucz publiczny w repozytorium serwera konfiguracji. Wybierz przycisk OK, a następnie wybierz pozycję Zastosuj , aby zakończyć konfigurowanie wystąpienia serwera konfiguracji.

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

Dodatkowe repozytoria

Jeśli chcesz skonfigurować usługę przy użyciu opcjonalnego dodatkowego repozytorium, określ ustawienia identyfikatora URI i uwierzytelniania , tak jak w przypadku repozytorium domyślnego. Pamiętaj, aby uwzględnić ustawienie Nazwa dla wzorca, a następnie wybierz pozycję Zastosuj , aby dołączyć je do wystąpienia.

Wprowadzanie informacji o repozytorium do pliku YAML

Jeśli plik YAML został napisany przy użyciu ustawień repozytorium, możesz zaimportować plik bezpośrednio z komputera lokalnego do usługi Azure Spring Apps. Poniższy przykład przedstawia prosty plik YAML dla repozytorium prywatnego z uwierzytelnianiem podstawowym.

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

Wybierz przycisk Importuj ustawienia , a następnie wybierz plik YAML z katalogu projektu. Wybierz Importuj.

Screenshot of the Config Server Import settings pane.

Powiadomienia wyświetla operacjęasync. Serwer konfiguracji powinien zgłosić powodzenie po upływie 1–2 minut. Informacje z pliku YAML są wyświetlane w witrynie Azure Portal. Wybierz pozycję Zastosuj , aby zakończyć importowanie.

Korzystanie z usługi Azure Repos na potrzeby konfiguracji usługi Azure Spring Apps

Usługa Azure Spring Apps może uzyskiwać dostęp do repozytoriów Git, które są publiczne, zabezpieczone za pomocą protokołu SSH lub zabezpieczone przy użyciu uwierzytelniania podstawowego PROTOKOŁU HTTP. Uwierzytelnianie podstawowe HTTP to najprostsze opcje tworzenia repozytoriów i zarządzania nimi za pomocą usługi Azure Repos.

Uzyskiwanie adresu URL i poświadczeń repozytorium

Wykonaj poniższe kroki, aby uzyskać adres URL repozytorium i poświadczenia.

  1. W portalu usługi Azure Repos dla projektu wybierz przycisk Klonuj:

  2. Skopiuj adres URL klonowania z pola tekstowego. Ten adres URL jest zazwyczaj w następującej postaci:

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

    Usuń wszystkie elementy po https:// i przed dev.azure.com, w tym @ symbol . Wynikowy adres URL powinien mieć następującą postać:

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

    Zapisz ten adres URL do użycia w następnej sekcji.

  3. Wybierz pozycję Generuj poświadczenia git, aby wyświetlić nazwę użytkownika i hasło, które należy zapisać do użycia w poniższej sekcji.

Konfigurowanie usługi Azure Spring Apps w celu uzyskania dostępu do repozytorium Git

  1. Zaloguj się w witrynie Azure Portal.

  2. Przejdź do strony Przegląd usługi Azure Spring Apps.

  3. Wybierz usługę do skonfigurowania.

  4. W lewym okienku strony usługi w obszarze Ustawienia wybierz kartę Serwer konfiguracji. Skonfiguruj utworzone repozytorium w następujący sposób:

    • Dodaj identyfikator URI repozytorium zapisany w poprzedniej sekcji.
    • Wybierz ustawienie w obszarze Uwierzytelnianie , aby otworzyć okienko Edytowanie uwierzytelniania .
    • W polu Typ uwierzytelniania wybierz pozycję HTTP Basic.
    • W polu Nazwa użytkownika określ nazwę użytkownika zapisaną w poprzedniej sekcji.
    • W polu Hasło określ hasło zapisane w poprzedniej sekcji.
    • Wybierz przycisk OK, a następnie poczekaj na zakończenie operacji.

    Screenshot of repository configuration settings.

Usuwanie konfiguracji

Wybierz pozycję Resetujna karcie Serwer konfiguracji , aby wymazać istniejące ustawienia. Usuń ustawienia serwera konfiguracji, jeśli chcesz połączyć wystąpienie serwera konfiguracji z innym źródłem, na przykład podczas przechodzenia z usługi GitHub do usługi Azure DevOps Server.

Odświeżanie serwera konfiguracji

Po zmianie właściwości usługi korzystające z tych właściwości muszą zostać powiadomione przed wprowadzeniem zmian. Domyślnym rozwiązaniem dla serwera Spring Cloud Config Server jest ręczne wyzwolenie zdarzenia odświeżania, co może nie być możliwe, jeśli istnieje wiele wystąpień aplikacji. Aby uzyskać więcej informacji, zobacz Scentralizowana konfiguracja

Zamiast tego można automatycznie odświeżać wartości z serwera konfiguracji, pozwalając klientowi konfiguracji sondować pod kątem zmian na podstawie wewnętrznego odświeżania. Wykonaj poniższe kroki, aby automatycznie odświeżyć wartości z serwera konfiguracji.

  1. Zarejestruj zaplanowane zadanie, aby odświeżyć kontekst w danym interwale, jak pokazano w poniższym przykładzie.

    @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. Włącz autorefresh i ustaw odpowiedni interwał odświeżania w pliku application.yml . W poniższym przykładzie klient sonduje zmiany konfiguracji co 60 sekund, czyli wartość minimalną, którą można ustawić dla interwału odświeżania.

    Domyślnie ustawienie autorefresh ma wartość false , a interwał odświeżania jest ustawiony na 60 sekund.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Dodaj @RefreshScope kod. W poniższym przykładzie zmienna connectTimeout jest automatycznie odświeżona co 60 sekund.

    @RestController
    @RefreshScope
    public class HelloController {
        @Value("${timeout:4000}")
        private String connectTimeout;
    }
    

Aby uzyskać więcej informacji, zobacz przykład config-client-polling .

Następne kroki

W tym artykule przedstawiono sposób włączania i konfigurowania wystąpienia serwera Spring Cloud Config Server. Aby dowiedzieć się więcej na temat zarządzania aplikacją, zobacz Skalowanie aplikacji w usłudze Azure Spring Apps.