Konfigurace spravovaného konfiguračního serveru Spring Cloud v Azure Spring Apps

Poznámka

Azure Spring Apps je nový název služby Azure Spring Cloud. I když má služba nový název, uvidíte starý název na některých místech, 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: ✔️ Úroveň ❌ Basic/Standard Enterprise

V tomto článku se dozvíte, jak nakonfigurovat spravovaný server 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 službě Spring Cloud Config.

Požadavky

Omezení

Při použití konfiguračního serveru s back-endem Gitu existují 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 dojít 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.application.name
spring.jmx.enabled

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, 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šť.

Poznámka

Konfigurační server přebírá master (na Gitu) výchozí popisek, pokud ho nezadáte. GitHub však 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 pro nově vytvořené úložiště.

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á je aktuálně podporovaná. Můžete například použít výchozí popisek, ale ne výchozíLabel.

Vlastnost Požaduje se Funkce
uri Yes Identifikátor URI úložiště Git, který se používá jako back-end konfiguračního serveru. Mělo 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é se používají 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á je aktuálně podporovaná. Můžete například použít výchozí popisek, ale ne výchozíLabel.

Vlastnost Požaduje se Funkce
uri Yes Identifikátor URI úložiště Git použitý jako back-end konfiguračního serveru. Mělo 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žadováno při zahájení identifikátoru URI nebo git@ssh://.
host-key No Klíč hostitele serveru úložiště Git. Neměl by obsahovat předponu algoritmu, jak je popsáno .host-key-algorithm
host-key-algorithm No Algoritmus klíče hostitele. Měla by 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 Určuje, jestli se instance konfiguračního serveru při použití privátního host-keyserveru nespustí. Měla by být true (výchozí hodnota) nebo false.

Poznámka

Konfigurační server zatím nepodporuje podpisy SHA-2. Dokud nebude přidána podpora, použijte místo toho podpisy SHA-1 nebo základní ověřování.

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á je aktuálně podporovaná. Použijte například výchozí popisek, ne výchozíLabel.

Vlastnost Požaduje se Funkce
uri Yes Identifikátor URI úložiště Git, který se používá jako back-end konfiguračního serveru. Mělo 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.
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 token osobního přístupu, 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.

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í, aby tokeny trvaly neomezeně dlouho. Některé servery úložiště Git, včetně Azure DevOps Server, ale vynutí vypršení platnosti tokenů během několika hodin. Úložiště, která způsobují vypršení platnosti tokenů, by neměla používat ověřování založené na tokenech v Azure Spring Apps.

GitHub odebral podporu pro ověřování hesel, takže místo ověřování heslem pro GitHub budete muset 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á je aktuálně podporovaná. Použijte například výchozí popisek, ne 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ělo by začínat na http://, , https://git@nebo ssh://.
repos."name" Ano na repos Název k identifikaci úložiště; například team-A nebo team-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 znaky.
repos."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 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žívané 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 token osobního přístupu, 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.
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á nebo git@ssh://.
repos."host-key" No Klíč hostitele serveru úložiště Git. Neměl by obsahovat předponu algoritmu, jak je popsáno .host-key-algorithm
repos."host-key-algorithm" No Algoritmus klíče hostitele. Měla by 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 Určuje, jestli se instance konfiguračního serveru při použití privátního host-keyserveru nespustí. 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 Další úložiště a část Porovnávání vzorů a více úložišť v dokumentaci spring.

Vzory Description
test-config-server-app-0/* Vzor a identifikátor URI úložiště odpovídá aplikaci Spring Boot s názvem test-config-server-app-0 libovolného profilu.
test-config-server-app-1/dev Identifikátor URI modelu a úložiště odpovídá 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ídá aplikaci Spring Boot pojmenovanou test-config-server-app-2 s prod profilem.

Snímek obrazovky Azure Portal zobrazující stránku konfiguračního serveru se zvýrazněným sloupcem Vzory tabulky Další úložiště

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, pomocí následujícího postupu připojte Azure Spring Apps k úložišti.

  1. Přihlaste se k webu Azure Portal.

  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.

    Snímek obrazovky Azure Portal zobrazující stránku konfiguračního serveru

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

    Snímek obrazovky Azure Portal se stránkou Konfigurační server se zvýrazněným tlačítkem Použít

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

Zadejte informace o úložišti přímo do Azure Portal

Můžete zadat informace o úložišti pro výchozí úložiště a volitelně i 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 privátní ú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 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 rozevíracím seznamu Typ ověřování vyberte HTTP Basic a zadejte svoje uživatelské jméno a heslo/token a udělte přístup k Azure Spring Apps. Vyberte OK a pak vyberte Použít k dokončení nastavení instance konfiguračního serveru.

    Snímek obrazovky s oddílem Výchozí úložiště zobrazující nastavení ověřování pro základní ověřování

    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í, aby tokeny trvaly neomezeně dlouho. Některé servery úložiště Git, včetně Azure DevOps Server, ale vynutí vypršení platnosti tokenů během několika hodin. Úložiště, která způsobují vypršení platnosti tokenů, by neměla používat ověřování založené na tokenech v Azure Spring Apps.

    GitHub odebral podporu pro ověřování hesel, takže místo ověřování heslem pro GitHub budete muset 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 Uri identifikátor URI identifikátor URI a 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. Do úložiště konfiguračního serveru zahrňte svůj veřejný klíč. Vyberte OK a pak vyberte Použít k dokončení nastavení instance konfiguračního serveru.

    Snímek obrazovky s oddílem Výchozí úložiště zobrazující nastavení ověřování pro ověřování SSH

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 vyberte Použít a připojte ho k instanci.

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

Pokud jste napsali soubor YAML 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-cloud-samples/config-server-repository.git
                    username: <username>
                    password: <password/token>

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

Snímek obrazovky s podoknem Nastavení importu konfiguračního serveru

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

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šší možností vytváření a správy ú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 projektu vyberte tlačítko Klonovat:

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

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

    Odeberte vše 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. Výběrem možnosti Generovat přihlašovací údaje Gitu zobrazte 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 webu Azure Portal.

  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 potom počkejte, až se operace dokončí.

    Snímek obrazovky s nastavením konfigurace úložiště

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, 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í, upozorněny před provedením změn. 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 najdete v tématu Centralizovaná konfigurace

Místo toho můžete automaticky aktualizovat hodnoty z konfiguračního serveru tím, že umožníte klientovi konfigurace dotazovat změny na základě interní aktualizace. Pomocí následujících kroků 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 automatickou aktualizaci a nastavte příslušný 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 automatická aktualizace 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 dotazování config-client-client.

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.