Konfigurace nastavení pro komponentu Konfigurační server for Spring v Azure Container Apps (Preview)
Konfigurační server for Spring poskytuje centralizované umístění pro zpřístupnění konfiguračních dat více aplikacím. V následujících doprovodných materiálech se dozvíte, jak nakonfigurovat a spravovat komponentu Config Server for Spring.
Zobrazit
Podrobnosti o jednotlivých komponentách můžete zobrazit pomocí show
příkazu.
Před spuštěním následujícího příkazu nahraďte zástupné symboly ohraničené <>
hodnotami.
az containerapp env java-component config-server-for-spring show \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <JAVA_COMPONENT_NAME>
List
Pomocí příkazu můžete zobrazit seznam všech registrovaných komponent list
Javy.
Před spuštěním následujícího příkazu nahraďte zástupné symboly ohraničené <>
hodnotami.
az containerapp env java-component list \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP>
Bind
--bind
Pomocí parametru update
příkazu vytvořte připojení mezi komponentou Config Server for Spring a vaší aplikací kontejneru.
Před spuštěním následujícího příkazu nahraďte zástupné symboly ohraničené <>
hodnotami.
az containerapp update \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--bind <JAVA_COMPONENT_NAME>
Zrušit vazbu
Pokud chcete přerušit připojení mezi vaší aplikací kontejneru a komponentou Config Server for Spring, použijte --unbind
parametr update
příkazu.
Před spuštěním následujícího příkazu nahraďte zástupné symboly ohraničené <>
hodnotami.
az containerapp update \
--name <CONTAINER_APP_NAME> \
--unbind <JAVA_COMPONENT_NAME> \
--resource-group <RESOURCE_GROUP>
Možnosti konfigurace
Příkaz az containerapp update
používá --configuration
parametr k řízení konfigurace konfiguračního serveru pro Spring. Můžete použít více parametrů najednou, pokud jsou oddělené mezerou. Další podrobnosti najdete v dokumentaci k Spring Cloud Config Serveru .
Následující tabulka uvádí různé dostupné konfigurační hodnoty.
Konfigurace back-endu Gitu
Název | Popis |
---|---|
spring.cloud.config.server.git.uri spring.cloud.config.server.git.repos.{repoName}.uri |
Identifikátor URI vzdáleného úložiště |
spring.cloud.config.server.git.username spring.cloud.config.server.git.repos.{repoName}.username |
Uživatelské jméno pro ověřování pomocí vzdáleného úložiště |
spring.cloud.config.server.git.password spring.cloud.config.server.git.repos.{repoName}.password |
Heslo pro ověřování pomocí vzdáleného úložiště |
spring.cloud.config.server.git.search-paths spring.cloud.config.server.git.repos.{repoName}.search-paths |
Cesty hledání, které se mají použít v místní pracovní kopii. Ve výchozím nastavení prohledá pouze kořen. |
spring.cloud.config.server.git.force-pull spring.cloud.config.server.git.repos.{repoName}.force-pull |
Příznak označující, že úložiště by mělo vynutit přijetí změn. Pokud true zahodí všechny místní změny a převezme je ze vzdáleného úložiště. |
spring.cloud.config.server.git.default-label spring.cloud.config.server.git.repos.{repoName}.default-label |
Výchozí popisek použitý pro Git je hlavní. Pokud nenastavíte spring.cloud.config.server.git.default-label a větev s názvem main neexistuje, konfigurační server se ve výchozím nastavení také pokusí rezervovat větev s názvem master. Pokud chcete zakázat chování náhradní větve, můžete nastavit spring.cloud.config.server.git.tryMasterBranch na false. |
spring.cloud.config.server.git.try-master-branch spring.cloud.config.server.git.repos.{repoName}.try-master-branch |
Konfigurační server se ve výchozím nastavení pokusí rezervovat větev s názvem master. |
spring.cloud.config.server.git.skip-ssl-validation spring.cloud.config.server.git.repos.{repoName}.skip-ssl-validation |
Ověření certifikátu SSL serveru Git konfiguračního serveru je možné zakázat nastavením vlastnosti git.skipSslValidation na true. |
spring.cloud.config.server.git.clone-on-start spring.cloud.config.server.git.repos.{repoName}.clone-on-start |
Příznak označující, že úložiště by se mělo naklonovat při spuštění (ne na vyžádání). Obecně vede k pomalejšímu spuštění, ale rychlejšímu prvnímu dotazu. |
spring.cloud.config.server.git.timeout spring.cloud.config.server.git.repos.{repoName}.timeout |
Časový limit (v sekundách) pro získání připojení HTTP nebo SSH (pokud je k dispozici) Výchozí 5 sekund. |
spring.cloud.config.server.git.refresh-rate spring.cloud.config.server.git.repos.{repoName}.refresh-rate |
Jak často konfigurační server načte aktualizovaná konfigurační data z back-endu Gitu. |
spring.cloud.config.server.git.private-key spring.cloud.config.server.git.repos.{repoName}.private-key |
Platný privátní klíč SSH. Musí být nastaveno, pokud je hodnota ignore-local-ssh-settings true a identifikátor URI Gitu je formát SSH. |
spring.cloud.config.server.git.host-key spring.cloud.config.server.git.repos.{repoName}.host-key |
Platný klíč hostitele SSH. Musí být nastavena, pokud je nastaven také algoritmus klíče hostitele. |
spring.cloud.config.server.git.host-key-algorithm spring.cloud.config.server.git.repos.{repoName}.host-key-algorithm |
Jeden z ssh-dss, ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 nebo ecdsa-sha2-nistp521. Pokud je nastavený také klíč hostitele, musí být nastavená. |
spring.cloud.config.server.git.strict-host-key-checking spring.cloud.config.server.git.repos.{repoName}.strict-host-key-checking |
true nebo false. Pokud je false, ignorujte chyby s klíčem hostitele. |
spring.cloud.config.server.git.repos.{repoName} |
Identifikátor URI vzdáleného úložiště |
spring.cloud.config.server.git.repos.{repoName}.pattern |
Formát vzoru je čárkami oddělený seznam názvů {application}/{profile} se zástupnými cardy. Pokud {application}/{profile} neodpovídá žádnému ze vzorů, použije výchozí identifikátor URI definovaný v části. |
Běžné konfigurace
protokolování souvisejících konfigurací
- logging.level.*
- logging.group.*
- Všechny ostatní konfigurace v rámci protokolování.* Obor názvů by měl být zakázán, například zápis souborů protokolu pomocí
logging.file
by měl být zakázáno.
spring.cloud.config.server.overrides
- Dodatečná mapa zdroje vlastností, která se má odeslat všem klientům bezpodmínečně.
spring.cloud.config.override-none
- Prioritu všech přepsání v klientovi můžete změnit tak, aby vypadala podobně jako výchozí hodnoty, a umožnit tak aplikacím zadat vlastní hodnoty v proměnných prostředí nebo v systémových vlastnostech, a to nastavením příznaku spring.cloud.config.override-none=true (výchozí hodnota je false) ve vzdáleném úložišti.
spring.cloud.config.allow-override
- Pokud povolíte konfiguraci při prvním spuštění, můžete klientským aplikacím povolit přepsání konfigurace z konfiguračního serveru umístěním dvou vlastností do konfigurace aplikací pocházejících z konfiguračního serveru.
spring.cloud.config.server.health.
- Indikátor stavu můžete nakonfigurovat tak, aby kontrolovali více aplikací spolu s vlastními profily a vlastními popisky.
spring.cloud.config.server.accept-empty
- Můžete nastavit
spring.cloud.config.server.accept-empty
takfalse
, aby server vrátil stav HTTP404
, pokud aplikace nebyla nalezena. Ve výchozím nastavení je tento příznak nastaven natrue
.
- Můžete nastavit
Šifrování a dešifrování (symetrické)
- encrypt.key
- Je vhodné použít symetrický klíč, protože se jedná o jednu hodnotu vlastnosti ke konfiguraci.
- spring.cloud.config.server.encrypt.enabled
- Můžete ho nastavit tak, aby
false
se dešifrování na straně serveru zakázalo.
- Můžete ho nastavit tak, aby
- encrypt.key
Aktualizovat
Služby, které spotřebovávají vlastnosti, musí znát změnu, než k ní dojde. Výchozí metoda oznámení pro Config Server for Spring zahrnuje ruční aktivaci události aktualizace, jako je například aktualizace voláním https://<YOUR_CONFIG_CLIENT_HOST_NAME>/actuator/refresh
, což nemusí být možné, pokud existuje mnoho instancí aplikace.
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.
Zaregistrujte naplánovanou úlohu pro aktualizaci kontextu v daném intervalu, jak je znázorněno v následujícím příkladu.
@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)); } } }
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ěnu konfigurace každých 60 sekund, což je minimální hodnota, kterou můžete nastavit pro interval aktualizace.Ve výchozím nastavení
autorefresh
je nastavená hodnotafalse
arefresh-interval
je nastavená na 60 sekund.spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refresh
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; }
Šifrování a dešifrování pomocí symetrického klíče
Dešifrování na straně serveru
Ve výchozím nastavení je povolené šifrování na straně serveru. Pomocí následujícího postupu povolte dešifrování ve vaší aplikaci.
Přidejte zašifrovanou vlastnost do souboru .properties v úložišti Git.
Například soubor by měl vypadat podobně jako v následujícím příkladu:
message={cipher}f43e3df3862ab196a4b367624a7d9b581e1c543610da353fbdd2477d60fb282f
Aktualizujte komponentu Konfigurační server pro Spring Java tak, aby používalo úložiště Git, které má šifrovanou vlastnost a nastavil šifrovací klíč.
Před spuštěním následujícího příkazu nahraďte zástupné symboly ohraničené
<>
hodnotami.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
Dešifrování na straně klienta
Dešifrování vlastností na straně klienta můžete použít pomocí následujících kroků:
Přidejte zašifrovanou vlastnost do souboru v
*.properties*
úložišti Git.Aktualizujte komponentu Konfigurační server pro Spring Java tak, aby používala úložiště Git, které má šifrovanou vlastnost, a zakažte dešifrování na straně serveru.
Před spuštěním následujícího příkazu nahraďte zástupné symboly ohraničené
<>
hodnotami.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
V klientské aplikaci přidejte dešifrovací klíč
ENCRYPT_KEY=randomKey
jako proměnnou prostředí.Alternativně pokud zahrnete spring-cloud-starter-bootstrap do
classpath
, nebo nastavitspring.cloud.bootstrap.enabled=true
jako systémovou vlastnost, nastavenáencrypt.key
vbootstrap.properties
.Před spuštěním následujícího příkazu nahraďte zástupné symboly ohraničené
<>
hodnotami.az containerapp update \ --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --set-env-vars "ENCRYPT_KEY=randomKey"
encrypt: key: somerandomkey