Konfigurace spravovaného serveru Spring Cloud Config v Azure Spring Apps

Poznámka:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

Tento článek se vztahuje na: ✔️ Java ✔️ C#

Tento článek se vztahuje na: ✔️ Využití standardu a vyhrazené (Preview) ✔️ Basic/Standard ❌ Enterprise

V tomto článku se dozvíte, jak nakonfigurovat spravovaný Spring Cloud Config Server ve službě Azure Spring Apps.

Spring Cloud Config Server poskytuje podporu na straně serveru a klienta pro externalizovanou konfiguraci v distribuovaném systému. Instance konfiguračního serveru poskytuje centrální místo pro správu externích vlastností pro aplikace ve všech prostředích. Další informace najdete v dokumentaci ke konfiguraci Spring Cloudu.

Poznámka:

Pokud chcete použít konfigurační server ve standardním a vyhrazeném plánu, musíte ho nejprve povolit. Další informace najdete v tématu Povolení a zakázání Spring Cloud Config Serveru v Azure Spring Apps.

Požadavky

  • Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
  • Již zřízená a spuštěná instance služby Azure Spring Apps pomocí plánu Basic nebo Standard. Informace o nastavení a spuštění služby Azure Spring Apps najdete v rychlém startu: Nasazení první aplikace do Azure Spring Apps. Spring Cloud Config Server se nevztahuje na plán Enterprise.
  • Git

Omezení

Při použití konfiguračního serveru s back-endem Gitu platí určitá omezení. Následující vlastnosti se automaticky vloží do vašeho aplikačního prostředí pro přístup ke konfiguračnímu serveru a zjišťování služeb. Pokud tyto vlastnosti nakonfigurujete také ze souborů konfiguračního serveru, může docházet ke konfliktům a neočekávanému chování.

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

Upozornění

Tyto vlastnosti neukládejte do souborů aplikace konfiguračního serveru.

Vytvoření souborů konfiguračního serveru

Azure Spring Apps podporuje Azure DevOps Server, GitHub, GitLab a Bitbucket pro ukládání souborů konfiguračního serveru. Až bude úložiště připravené, můžete vytvořit konfigurační soubory a uložit je tam.

Některé konfigurovatelné vlastnosti jsou k dispozici pouze pro určité typy. Následující části popisují vlastnosti jednotlivých typů úložiště.

Poznámka:

Pokud ho nezadáte, konfigurační server jako výchozí popisek převezme master (na Gitu). GitHub ale nedávno změnil výchozí větev z master na main. Abyste se vyhnuli selhání konfiguračního serveru Azure Spring Apps, nezapomeňte při nastavování konfiguračního serveru pomocí GitHubu věnovat pozornost výchozímu popisku, zejména u nově vytvořených úložišť.

Veřejné úložiště

Při použití veřejného úložiště jsou konfigurovatelné vlastnosti omezenější než u privátního úložiště.

Následující tabulka uvádí konfigurovatelné vlastnosti, které můžete použít k nastavení veřejného úložiště Git.

Poznámka:

Použití spojovníku (-) k oddělení slov je jediná konvence pojmenování, která se aktuálně podporuje. Můžete například použít výchozí popisek, ale ne výchozíLabel.

Vlastnost Požaduje se Funkce
uri Ano Identifikátor URI úložiště Git, který se používá jako back-end konfiguračního serveru. Měl by začínat na http://, https://, git@nebo ssh://.
default-label No Výchozí popisek úložiště Git. Mělo by to být název větve, název značky nebo ID potvrzení úložiště.
search-paths No Pole řetězců, které slouží k vyhledávání podadresářů úložiště Git.

Privátní úložiště s ověřováním SSH

Následující tabulka uvádí konfigurovatelné vlastnosti, které můžete použít k nastavení privátního úložiště Git pomocí SSH.

Poznámka:

Použití spojovníku (-) k oddělení slov je jediná konvence pojmenování, která se aktuálně podporuje. Můžete například použít výchozí popisek, ale ne výchozíLabel.

Vlastnost Požaduje se Funkce
uri Ano Identifikátor URI úložiště Git, který se používá jako back-end konfiguračního serveru. Měl by začínat na http://, https://, git@nebo ssh://.
default-label No Výchozí popisek úložiště Git. Mělo by to být název větve, název značky nebo ID potvrzení úložiště.
search-paths No Pole řetězců sloužících k vyhledávání podadresářů úložiště Git.
private-key No Privátní klíč SSH pro přístup k úložišti Git. Vyžaduje se při spuštění git@ identifikátoru URI nebo ssh://.
host-key No Klíč hostitele serveru úložiště Git. Neměla by obsahovat předponu algoritmu, která je pokryta host-key-algorithm.
host-key-algorithm No Algoritmus klíče hostitele. Mělo by to být ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 nebo ecdsa-sha2-nistp521. Povinné pouze v případě, že host-key existuje.
strict-host-key-checking No Označuje, zda se instance konfiguračního serveru nespustí při použití privátní host-key. Měla by být true (výchozí hodnota) nebo false.

Privátní úložiště se základním ověřováním

Následující tabulka uvádí konfigurovatelné vlastnosti, které můžete použít k nastavení privátního úložiště Git se základním ověřováním.

Poznámka:

Použití spojovníku (-) k oddělení slov je jediná konvence pojmenování, která se aktuálně podporuje. Například použijte výchozí popisek, nikoli výchozíLabel.

Vlastnost Požaduje se Funkce
uri Ano Identifikátor URI úložiště Git, který se používá jako back-end konfiguračního serveru. Měl by začínat na http://, https://, git@nebo ssh://.
default-label No Výchozí popisek úložiště Git. Měl by to být název větve, název značky nebo ID potvrzení úložiště.
search-paths No Pole řetězců sloužících k vyhledávání podadresářů úložiště Git.
username No Uživatelské jméno, které se používá pro přístup k serveru úložiště Git. Vyžaduje se, když server úložiště Git podporuje základní ověřování HTTP.
password No Heslo nebo osobní přístupový token použitý pro přístup k serveru úložiště Git. Vyžaduje se, když server úložiště Git podporuje základní ověřování HTTP.

Poznámka:

Mnoho serverů úložiště Git podporuje použití tokenů místo hesel pro základní ověřování HTTP. Některá úložiště umožňují trvalé uchovávání tokenů. Některé servery úložiště Git, včetně Azure DevOps Serveru, ale vynutí vypršení platnosti tokenů za několik hodin. Úložiště, která způsobují vypršení platnosti tokenů, by neměla používat ověřování na základě tokenů v Azure Spring Apps. Pokud takový token použijete, nezapomeňte ho před vypršením platnosti aktualizovat.

GitHub odebral podporu ověřování heslem, takže místo ověřování heslem pro GitHub musíte použít osobní přístupový token. Další informace najdete v tématu Požadavky na ověřování tokenů pro operace Gitu.

Další úložiště Git

Následující tabulka uvádí konfigurovatelné vlastnosti, které můžete použít k nastavení úložišť Git se vzorem.

Poznámka:

Použití spojovníku (-) k oddělení slov je jediná konvence pojmenování, která se aktuálně podporuje. Například použijte výchozí popisek, nikoli výchozíLabel.

Vlastnost Požaduje se Funkce
repos No Mapa skládající se z nastavení úložiště Git s daným názvem.
repos."uri" Ano na repos Identifikátor URI úložiště Git, který se používá jako back-end konfiguračního serveru. Měl by začínat na http://, https://, git@nebo ssh://.
repos."name" Ano na repos Název pro identifikaci úložiště; například tým A nebo tým B. Povinné pouze v případě, že repos existuje.
repos."pattern" No Pole řetězců, které se používají ke shodě s názvem aplikace. Pro každý vzor použijte formát {application}/{profile} se zástupnými cardy.
repos."default-label" No Výchozí popisek úložiště Git. Měl by to být název větve, název značky nebo potvrzení IOD úložiště.
repos."search-paths" No Pole řetězců sloužících k vyhledávání podadresářů úložiště Git.
repos."username" No Uživatelské jméno použité pro přístup k serveru úložiště Git. Vyžaduje se, když server úložiště Git podporuje základní ověřování HTTP.
repos."password" No Heslo nebo osobní přístupový token použitý pro přístup k serveru úložiště Git. Vyžaduje se, když server úložiště Git podporuje základní ověřování HTTP.
repos."private-key" No Privátní klíč SSH pro přístup k úložišti Git. Vyžaduje se, když identifikátor URI začíná git@ nebo ssh://.
repos."host-key" No Klíč hostitele serveru úložiště Git. Neměla by obsahovat předponu algoritmu, která je pokryta host-key-algorithm.
repos."host-key-algorithm" No Algoritmus klíče hostitele. Mělo by to být ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 nebo ecdsa-sha2-nistp521. Povinné pouze v případě, že host-key existuje.
repos."strict-host-key-checking" No Označuje, zda se instance konfiguračního serveru nespustí při použití privátní host-key. Měla by být true (výchozí hodnota) nebo false.

Následující tabulka uvádí několik příkladů vzorů pro konfiguraci služby s volitelným dalším úložištěm. Další informace najdete v části Extra úložiště a oddíl Porovnávání vzorů a více úložišť v dokumentaci spring.

Vzory Popis
test-config-server-app-0/* Vzor a identifikátor URI úložiště odpovídají aplikaci Spring Boot s názvem test-config-server-app-0 libovolného profilu.
test-config-server-app-1/dev Vzor a identifikátor URI úložiště odpovídají aplikaci Spring Boot s názvem test-config-server-app-1 vývojového profilu.
test-config-server-app-2/prod Vzor a identifikátor URI úložiště odpovídají aplikaci Spring Boot s pojmenovaným test-config-server-app-2 profilem.

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

Připojení úložiště konfiguračního serveru k Azure Spring Apps

Teď, když jsou konfigurační soubory uložené v úložišti, použijte následující postup pro připojení Azure Spring Apps k úložišti.

  1. Přihlaste se k portálu Azure.

  2. Přejděte na stránku Přehled služby Azure Spring Apps.

  3. V levém navigačním podokně vyberte Konfigurační server .

  4. V části Výchozí úložiště nastavte identifikátor URI na https://github.com/Azure-Samples/piggymetrics-config.

  5. Vyberte Ověřit.

    Screenshot of Azure portal showing the Config Server page.

  6. Po dokončení ověření vyberte Použít a uložte provedené změny.

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

Aktualizace konfigurace může trvat několik minut. Po dokončení konfigurace byste měli dostat oznámení.

Zadejte informace o úložišti přímo na web Azure Portal.

Můžete zadat informace o úložišti pro výchozí úložiště a volitelně také pro další úložiště.

Výchozí úložiště

Pomocí kroků v této části zadejte informace o úložišti pro veřejné nebo soukromé úložiště.

  • Veřejné úložiště: V části Výchozí úložiště vložte do pole Uri identifikátor URI identifikátor URI. Zadejte konfiguraci pro nastavení Popisek . Ujistěte se, že je nastavení Ověřování veřejné, a pak vyberte Použít.

  • Privátní úložiště: Azure Spring Apps podporuje základní ověřování založené na heslech nebo tokenech a SSH.

    • Základní ověřování: V části Výchozí úložiště vložte do pole Identifikátor URI identifikátor URI úložiště a pak v části Ověřování vyberte nastavení, aby se otevřelo podokno Upravit ověřování . V rozevíracím seznamu Typ ověřování vyberte HTTP Basic a zadejte svoje uživatelské jméno a heslo/token, abyste udělili přístup k Azure Spring Apps. Vyberte OK a pak vyberte Použít k dokončení nastavení instance konfiguračního serveru.

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

    Poznámka:

    Mnoho serverů úložiště Git podporuje použití tokenů místo hesel pro základní ověřování HTTP. Některá úložiště umožňují trvalé uchovávání tokenů. Některé servery úložiště Git, včetně Azure DevOps Serveru, ale vynutí vypršení platnosti tokenů za několik hodin. Úložiště, která způsobují vypršení platnosti tokenů, by neměla používat ověřování na základě tokenů v Azure Spring Apps. Pokud takový token použijete, nezapomeňte ho před vypršením platnosti aktualizovat.

    GitHub odebral podporu ověřování heslem, takže místo ověřování heslem pro GitHub musíte použít osobní přístupový token. Další informace najdete v tématu Požadavky na ověřování tokenů pro operace Gitu.

    • SSH: V části Výchozí úložiště vložte do pole Identifikátor URI identifikátor URI úložiště a pak vyberte nastavení v části Ověřování a otevřete podokno Upravit ověřování . V podokně Upravit ověřování v rozevíracím seznamu Typ ověřování vyberte SSH a zadejte svůj privátní klíč. Volitelně můžete zadat klíč hostitele a algoritmus klíče hostitele. Zahrňte svůj veřejný klíč do úložiště konfiguračního serveru. Vyberte OK a pak vyberte Použít k dokončení nastavení instance konfiguračního serveru.

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

Další úložiště

Pokud chcete službu nakonfigurovat s volitelným dalším úložištěm, zadejte nastavení identifikátoru URI a ověřování , jak jste to udělali pro výchozí úložiště. Nezapomeňte zahrnout nastavení Název pro váš vzor a pak ho vyberte Použít , abyste ho připojili k vaší instanci.

Zadání informací o úložišti do souboru YAML

Pokud jste soubor YAML napsali s nastavením úložiště, můžete ho importovat přímo z místního počítače do Azure Spring Apps. Následující příklad ukazuje jednoduchý soubor YAML pro privátní úložiště se základním ověřováním.

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

Vyberte tlačítko Importovat nastavení a pak v adresáři projektu vyberte soubor YAML. Vyberte Importovat.

Screenshot of the Config Server Import settings pane.

V oznámeních se async zobrazí operace. Konfigurační server by měl hlásit úspěch po 1 až 2 minutách. Informace ze souboru YAML se zobrazí na webu Azure Portal. Import dokončíte výběrem možnosti Použít .

Použití Azure Repos pro konfiguraci Azure Spring Apps

Azure Spring Apps má přístup k úložištím Git, která jsou veřejná, zabezpečená protokolem SSH nebo zabezpečená pomocí základního ověřování HTTP. Základní ověřování HTTP je nejjednodušší z možností pro vytváření a správu úložišť pomocí Azure Repos.

Získání adresy URL úložiště a přihlašovacích údajů

Pomocí následujícího postupu získejte adresu URL a přihlašovací údaje úložiště.

  1. Na portálu Azure Repos pro váš projekt vyberte tlačítko Klonovat :

  2. Zkopírujte adresu URL klonu z textového pole. Tato adresa URL je obvykle v následujícím formátu:

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

    Odeberte všechno za https:// a před dev.azure.com, včetně symbolu @ . Výsledná adresa URL by měla být v následujícím formátu:

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

    Uložte tuto adresu URL pro použití v další části.

  3. Vyberte Generovat přihlašovací údaje Gitu, aby se zobrazilo uživatelské jméno a heslo, které by se mělo uložit pro použití v následující části.

Konfigurace Azure Spring Apps pro přístup k úložišti Git

  1. Přihlaste se k portálu Azure.

  2. Přejděte na stránku Přehled služby Azure Spring Apps.

  3. Vyberte službu, která se má nakonfigurovat.

  4. V levém podokně stránky služby v části Nastavení vyberte kartu Konfigurační server. Nakonfigurujte vytvořené úložiště následujícím způsobem:

    • Přidejte identifikátor URI úložiště, který jste uložili v předchozí části.
    • Výběrem nastavení v části Ověřování otevřete podokno Upravit ověřování .
    • Jako typ ověřování vyberte HTTP Basic.
    • Jako uživatelské jméno zadejte uživatelské jméno, které jste uložili v předchozí části.
    • Jako heslo zadejte heslo, které jste uložili v předchozí části.
    • Vyberte OK a počkejte na dokončení operace.

    Screenshot of repository configuration settings.

Odstranění konfigurace

Vyberte Obnovit na kartě Konfigurační server a vymažte stávající nastavení. Pokud chcete připojit instanci konfiguračního serveru k jinému zdroji, například když přecházíte z GitHubu na Azure DevOps Server, odstraňte nastavení konfiguračního serveru.

Aktualizace konfiguračního serveru

Při změně vlastností musí být služby, které tyto vlastnosti využívají, před provedením změn upozorněny. Výchozím řešením pro Spring Cloud Config Server je ruční aktivace události aktualizace, která nemusí být proveditelná, pokud existuje mnoho instancí aplikace. Další informace naleznete v tématu Centralizovaná konfigurace

Místo toho můžete hodnoty z konfiguračního serveru automaticky aktualizovat tak, že necháte klienta konfigurace dotazovat změny na základě interní aktualizace. Pomocí následujícího postupu můžete automaticky aktualizovat hodnoty z konfiguračního serveru.

  1. Zaregistrujte naplánovanou úlohu pro aktualizaci kontextu v daném intervalu, jak je znázorněno v následujícím příkladu.

    @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. Povolte autorefresh a nastavte odpovídající interval aktualizace v souboru application.yml . V následujícím příkladu se klient dotazuje na změny konfigurace každých 60 sekund, což je minimální hodnota, kterou můžete nastavit pro interval aktualizace.

    Ve výchozím nastavení je autorefresh nastavený na false a interval aktualizace je nastavený na 60 sekund.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Přidejte @RefreshScope kód. V následujícím příkladu se proměnná connectTimeout automaticky aktualizuje každých 60 sekund.

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

Další informace najdete v ukázce dotazu config-client-polling .

Další kroky

V tomto článku jste zjistili, jak povolit a nakonfigurovat instanci Spring Cloud Config Serveru. Další informace o správě aplikace najdete v tématu Škálování aplikace v Azure Spring Apps.