Konfigurera en hanterad Spring Cloud-konfigurationsserver i Azure Spring Apps
Kommentar
Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.
Den här artikeln gäller för: ✔️ Java ✔️ C#
Den här artikeln gäller för: ✔️ Standardförbrukning och dedikerad (förhandsversion) ✔️ Basic/Standard ❌ Enterprise
Den här artikeln visar hur du konfigurerar en hanterad Spring Cloud Config Server i Azure Spring Apps-tjänsten.
Spring Cloud Config Server tillhandahåller stöd på server- och klientsidan för en externaliserad konfiguration i ett distribuerat system. Konfigurationsserverinstansen är en central plats för att hantera externa egenskaper för program i alla miljöer. Mer information finns i dokumentationen om Spring Cloud Config.
Kommentar
Om du vill använda konfigurationsservern i standardförbrukningen och den dedikerade planen måste du aktivera den först. Mer information finns i Aktivera och inaktivera Spring Cloud Config Server i Azure Spring Apps.
Förutsättningar
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- En redan etablerad och kör Azure Spring Apps-tjänstinstans med hjälp av Basic- eller Standard-planen. Information om hur du konfigurerar och startar en Azure Spring Apps-tjänst finns i Snabbstart: Distribuera ditt första program till Azure Spring Apps. Spring Cloud Config Server gäller inte för Enterprise-planen.
- Git.
Begränsning
Det finns vissa begränsningar när du använder Config Server med en Git-serverdel. Följande egenskaper matas automatiskt in i programmiljön för att få åtkomst till Config Server och Service Discovery. Om du även konfigurerar dessa egenskaper från dina Config Server-filer kan det uppstå konflikter och oväntat beteende.
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
Varning
Placera inte dessa egenskaper i Config Server-programfilerna.
Skapa dina konfigurationsserverfiler
Azure Spring Apps stöder Azure DevOps Server, GitHub, GitLab och Bitbucket för lagring av dina Config Server-filer. När lagringsplatsen är klar kan du skapa konfigurationsfilerna och lagra dem där.
Vissa konfigurerbara egenskaper är endast tillgängliga för vissa typer. I följande avsnitt beskrivs egenskaperna för varje lagringsplatstyp.
Kommentar
Konfigurationsservern tar master
(på Git) som standardetikett om du inte anger någon. GitHub har dock nyligen ändrat standardgrenen från master
till main
. För att undvika azure Spring Apps Config Server-fel bör du vara uppmärksam på standardetiketten när du konfigurerar Config Server med GitHub, särskilt för nyligen skapade lagringsplatser.
Offentlig lagringsplats
När du använder en offentlig lagringsplats är dina konfigurerbara egenskaper mer begränsade än med en privat lagringsplats.
I följande tabell visas de konfigurerbara egenskaper som du kan använda för att konfigurera en offentlig Git-lagringsplats.
Kommentar
Att använda ett bindestreck (-) för att separera ord är den enda namngivningskonvention som stöds för närvarande. Du kan till exempel använda standardetikett, men inte defaultLabel.
Property | Obligatoriskt | Funktion |
---|---|---|
uri |
Ja | URI:n för Git-lagringsplatsen som används som konfigurationsserverns serverdel. Bör börja med http:// , https:// , git@ eller ssh:// . |
default-label |
Nej | Standardetiketten för Git-lagringsplatsen. Ska vara grennamnet, taggnamnet eller inchecknings-ID:t för lagringsplatsen. |
search-paths |
Nej | En matris med strängar som används för att söka i underkataloger för Git-lagringsplatsen. |
Privat lagringsplats med SSH-autentisering
I följande tabell visas de konfigurerbara egenskaper som du kan använda för att konfigurera en privat Git-lagringsplats med SSH.
Kommentar
Att använda ett bindestreck (-) för att separera ord är den enda namngivningskonvention som stöds för närvarande. Du kan till exempel använda standardetikett, men inte defaultLabel.
Property | Obligatoriskt | Funktion |
---|---|---|
uri |
Ja | URI:n för Git-lagringsplatsen som används som konfigurationsserverns serverdel. Bör börja med http:// , https:// , git@ eller ssh:// . |
default-label |
Nej | Standardetiketten för Git-lagringsplatsen. Ska vara grennamnet, taggnamnet eller inchecknings-ID:t för lagringsplatsen. |
search-paths |
Nej | En matris med strängar som används för att söka i underkataloger för Git-lagringsplatsen. |
private-key |
Nej | Den privata SSH-nyckeln för åtkomst till Git-lagringsplatsen. Krävs när URI:n börjar med git@ eller ssh:// . |
host-key |
Nej | Värdnyckeln för Git-lagringsplatsens server. Ska inte innehålla algoritmprefixet som omfattas av host-key-algorithm . |
host-key-algorithm |
Nej | Värdnyckelalgoritmen. Ska vara ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 eller ecdsa-sha2-nistp521. Krävs endast om host-key det finns. |
strict-host-key-checking |
Nej | Anger om konfigurationsserverinstansen inte kan starta när du använder den privata host-key . Ska vara sant (standardvärde) eller falskt. |
Privat lagringsplats med grundläggande autentisering
I följande tabell visas de konfigurerbara egenskaper som du kan använda för att konfigurera en privat Git-lagringsplats med grundläggande autentisering.
Kommentar
Att använda ett bindestreck (-) för att separera ord är den enda namngivningskonvention som stöds för närvarande. Använd till exempel standardetikett, inte defaultLabel.
Property | Obligatoriskt | Funktion |
---|---|---|
uri |
Ja | URI:n för Git-lagringsplatsen som används som konfigurationsserverns serverdel. Bör börja med http:// , https:// , git@ eller ssh:// . |
default-label |
Nej | Standardetiketten för Git-lagringsplatsen. Ska vara förgreningsnamn, taggnamn eller inchecknings-ID för lagringsplatsen. |
search-paths |
Nej | En matris med strängar som används för att söka i underkataloger för Git-lagringsplatsen. |
username |
Nej | Användarnamnet som används för att komma åt Git-lagringsplatsens server. Krävs när Git-lagringsplatsens server stöder grundläggande HTTP-autentisering. |
password |
Nej | Lösenordet eller den personliga åtkomsttoken som används för att komma åt Git-lagringsplatsens server. Krävs när Git-lagringsplatsens server stöder grundläggande HTTP-autentisering. |
Kommentar
Många Git-lagringsplatsservrar stöder användning av token i stället för lösenord för grundläggande HTTP-autentisering. Vissa lagringsplatser tillåter att token bevaras på obestämd tid. Vissa Git-lagringsplatsservrar, inklusive Azure DevOps Server, tvingar dock token att upphöra att gälla om några timmar. Lagringsplatser som gör att token upphör att gälla bör inte använda tokenbaserad autentisering med Azure Spring Apps. Om du använder en sådan token bör du komma ihåg att uppdatera den innan den upphör att gälla.
GitHub har tagit bort stöd för lösenordsautentisering, så du måste använda en personlig åtkomsttoken i stället för lösenordsautentisering för GitHub. Mer information finns i Tokenautentiseringskrav för Git-åtgärder.
Andra Git-lagringsplatser
I följande tabell visas de konfigurerbara egenskaper som du kan använda för att konfigurera Git-lagringsplatser med ett mönster.
Kommentar
Att använda ett bindestreck (-) för att separera ord är den enda namngivningskonvention som stöds för närvarande. Använd till exempel standardetikett, inte defaultLabel.
Property | Obligatoriskt | Funktion |
---|---|---|
repos |
Nej | En karta som består av inställningarna för en Git-lagringsplats med ett angivet namn. |
repos."uri" |
Ja på repos |
URI:n för Git-lagringsplatsen som används som konfigurationsserverns serverdel. Bör börja med http:// , https:// , git@ eller ssh:// . |
repos."name" |
Ja på repos |
Ett namn för att identifiera lagringsplatsen. till exempel team-A eller team-B. Krävs endast om repos det finns. |
repos."pattern" |
Nej | En matris med strängar som används för att matcha ett programnamn. För varje mönster använder du formatet {application}/{profile} med jokertecken. |
repos."default-label" |
Nej | Standardetiketten för Git-lagringsplatsen. Ska vara förgreningsnamn, taggnamn eller inchecknings-IOD för lagringsplatsen. |
repos."search-paths " |
Nej | En matris med strängar som används för att söka i underkataloger för Git-lagringsplatsen. |
repos."username" |
Nej | Användarnamnet som används för att komma åt Git-lagringsplatsens server. Krävs när Git-lagringsplatsens server stöder grundläggande HTTP-autentisering. |
repos."password" |
Nej | Lösenordet eller den personliga åtkomsttoken som används för att komma åt Git-lagringsplatsens server. Krävs när Git-lagringsplatsens server stöder grundläggande HTTP-autentisering. |
repos."private-key" |
Nej | Den privata SSH-nyckeln för åtkomst till Git-lagringsplatsen. Krävs när URI:n börjar med git@ eller ssh:// . |
repos."host-key" |
Nej | Värdnyckeln för Git-lagringsplatsens server. Ska inte innehålla algoritmprefixet som omfattas av host-key-algorithm . |
repos."host-key-algorithm" |
Nej | Värdnyckelalgoritmen. Ska vara ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 eller ecdsa-sha2-nistp521. Krävs endast om host-key det finns. |
repos."strict-host-key-checking" |
Nej | Anger om konfigurationsserverinstansen inte kan starta när du använder den privata host-key . Ska vara sant (standardvärde) eller falskt. |
I följande tabell visas några exempel på mönster för att konfigurera tjänsten med en valfri extra lagringsplats. Mer information finns i avsnittet Extra lagringsplatser och avsnittet Mönstermatchning och flera lagringsplatser i Spring-dokumentationen.
Mönster | beskrivning |
---|---|
test-config-server-app-0/* | Mönstret och lagringsplatsens URI matchar ett Spring Boot-program med namnet test-config-server-app-0 med valfri profil. |
test-config-server-app-1/dev | Mönstret och lagringsplatsens URI matchar ett Spring Boot-program med namnet test-config-server-app-1 med en utvecklingsprofil. |
test-config-server-app-2/prod | Mönstret och lagringsplatsens URI matchar ett Spring Boot-program med namnet test-config-server-app-2 med en prod-profil. |
Koppla din Config Server-lagringsplats till Azure Spring Apps
Nu när dina konfigurationsfiler har sparats på en lagringsplats använder du följande steg för att ansluta Azure Spring Apps till lagringsplatsen.
Logga in på Azure-portalen.
Gå till översiktssidan för Azure Spring Apps.
Välj Konfigurationsserver i det vänstra navigeringsfönstret.
I avsnittet Standardlagringsplats anger du URI till
https://github.com/Azure-Samples/piggymetrics-config
.Välj validera.
När verifieringen är klar väljer du Använd för att spara ändringarna.
Det kan ta några minuter att uppdatera konfigurationen. Du bör få ett meddelande när konfigurationen är klar.
Ange lagringsplatsinformation direkt till Azure-portalen
Du kan ange lagringsplatsinformation för standardlagringsplatsen och eventuellt för extra lagringsplatser.
Standardlagringsplats
Använd stegen i det här avsnittet för att ange lagringsplatsinformation för en offentlig eller privat lagringsplats.
Offentlig lagringsplats: I avsnittet Standardlagringsplats i rutan Uri klistrar du in lagringsplatsens URI. Ange konfiguration för inställningen Etikett . Kontrollera att autentiseringsinställningen är Offentlig och välj sedan Använd.
Privat lagringsplats: Azure Spring Apps stöder grundläggande lösenords-/tokenbaserad autentisering och SSH.
- Grundläggande autentisering: I avsnittet Standardlagringsplats i rutan Uri klistrar du in lagringsplatsens URI och väljer sedan inställningen under Autentisering för att öppna fönstret Redigera autentisering . I listrutan Autentiseringstyp väljer du HTTP Basic och anger sedan ditt användarnamn och lösenord/token för att bevilja åtkomst till Azure Spring Apps. Välj OK och välj sedan Använd för att slutföra konfigurationen av konfigurationsserverinstansen.
Kommentar
Många Git-lagringsplatsservrar stöder användning av token i stället för lösenord för grundläggande HTTP-autentisering. Vissa lagringsplatser tillåter att token bevaras på obestämd tid. Vissa Git-lagringsplatsservrar, inklusive Azure DevOps Server, tvingar dock token att upphöra att gälla om några timmar. Lagringsplatser som gör att token upphör att gälla bör inte använda tokenbaserad autentisering med Azure Spring Apps. Om du använder en sådan token bör du komma ihåg att uppdatera den innan den upphör att gälla.
GitHub har tagit bort stöd för lösenordsautentisering, så du måste använda en personlig åtkomsttoken i stället för lösenordsautentisering för GitHub. Mer information finns i Tokenautentiseringskrav för Git-åtgärder.
- SSH: I avsnittet Standardlagringsplats i rutan Uri klistrar du in lagringsplatsens URI och väljer sedan inställningen under Autentisering för att öppna fönstret Redigera autentisering . I listrutan Redigera autentisering i listrutan Autentiseringstyp väljer du SSH och anger sedan din privata nyckel. Du kan också ange värdnyckeln och värdnyckelalgoritmen. Inkludera din offentliga nyckel i konfigurationsserverlagringsplatsen. Välj OK och välj sedan Använd för att slutföra konfigurationen av konfigurationsserverinstansen.
Extra lagringsplatser
Om du vill konfigurera tjänsten med en valfri extra lagringsplats anger du URI - och autentiseringsinställningarna som du gjorde för standardlagringsplatsen. Se till att inkludera en namninställning för ditt mönster och välj sedan Använd för att koppla den till din instans.
Ange lagringsplatsinformation i en YAML-fil
Om du har skrivit en YAML-fil med lagringsplatsens inställningar kan du importera filen direkt från den lokala datorn till Azure Spring Apps. I följande exempel visas en enkel YAML-fil för en privat lagringsplats med grundläggande autentisering.
spring:
cloud:
config:
server:
git:
uri: https://github.com/azure-spring-apps-samples-pr/config-server-repository.git
username: <username>
password: <password/token>
Välj knappen Importera inställningar och välj sedan YAML-filen från projektkatalogen. Välj Importera.
Dina meddelanden visar en async
åtgärd. Konfigurationsservern bör rapportera att den har slutförts efter 1–2 minuter. Informationen från YAML-filen visas i Azure-portalen. Välj Använd för att slutföra importen.
Använda Azure Repos för Azure Spring Apps-konfiguration
Azure Spring Apps kan komma åt Git-lagringsplatser som är offentliga, skyddade av SSH eller skyddade med grundläggande HTTP-autentisering. Grundläggande HTTP-autentisering är det enklaste alternativet för att skapa och hantera lagringsplatser med Azure Repos.
Hämta lagringsplatsens URL och autentiseringsuppgifter
Använd följande steg för att hämta din lagringsplats-URL och dina autentiseringsuppgifter.
I Azure Repos-portalen för projektet väljer du knappen Klona :
Kopiera klonings-URL:en från textrutan. Den här URL:en är vanligtvis i följande form:
https://<organization name>@dev.azure.com/<organization name>/<project name>/_git/<repository name>
Ta bort allt efter
https://
och föredev.azure.com
, inklusive symbolen@
. Den resulterande URL:en bör vara i följande form:https://dev.azure.com/<organization name>/<project name>/_git/<repository name>
Spara den här URL:en för användning i nästa avsnitt.
Välj Generera Git-autentiseringsuppgifter för att visa ett användarnamn och lösenord som ska sparas för användning i följande avsnitt.
Konfigurera Azure Spring Apps för åtkomst till Git-lagringsplatsen
Logga in på Azure-portalen.
Gå till översiktssidan för Azure Spring Apps.
Välj den tjänst som ska konfigureras.
Välj fliken Konfigurationsserver i den vänstra rutan på tjänstsidan under Inställningar. Konfigurera lagringsplatsen som du skapade på följande sätt:
- Lägg till lagringsplatsens URI som du sparade i föregående avsnitt.
- Välj inställningen under Autentisering för att öppna fönstret Redigera autentisering.
- Som Autentiseringstyp väljer du HTTP Basic.
- För Användarnamn anger du det användarnamn som du sparade i föregående avsnitt.
- För Lösenord anger du lösenordet som du sparade i föregående avsnitt.
- Välj OK och vänta sedan tills åtgärden har slutförts.
Ta bort konfigurationen
Välj Återställ på fliken Konfigurationsserver för att radera dina befintliga inställningar. Ta bort konfigurationsserverinställningarna om du vill ansluta konfigurationsserverinstansen till en annan källa, till exempel när du flyttar från GitHub till Azure DevOps Server.
Konfigurationsserveruppdatering
När egenskaper ändras måste tjänster som använder dessa egenskaper meddelas innan ändringar kan göras. Standardlösningen för Spring Cloud Config Server är att manuellt utlösa uppdateringshändelsen, vilket kanske inte är möjligt om det finns många appinstanser. Mer information finns i Centraliserad konfiguration
I stället kan du automatiskt uppdatera värden från Config Server genom att låta konfigurationsklienten söka efter ändringar baserat på en intern uppdatering. Använd följande steg för att automatiskt uppdatera värden från Config Server.
Registrera en schemalagd aktivitet för att uppdatera kontexten i ett visst intervall, enligt följande exempel.
@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); } } }
Aktivera automatisk uppdatering och ange lämpligt uppdateringsintervall i filen application.yml . I följande exempel avsöker klienten konfigurationsändringar var 60:e sekund, vilket är det minsta värde som du kan ange för ett uppdateringsintervall.
Som standard är autorefresh inställt på false och uppdateringsintervallet är inställt på 60 sekunder.
spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refresh
Lägg till @RefreshScope koden. I följande exempel uppdateras variabeln
connectTimeout
automatiskt var 60:e sekund.@RestController @RefreshScope public class HelloController { @Value("${timeout:4000}") private String connectTimeout; }
Mer information finns i config-client-polling-exemplet .
Nästa steg
I den här artikeln har du lärt dig hur du aktiverar och konfigurerar din Spring Cloud Config Server-instans. Mer information om hur du hanterar ditt program finns i Skala ett program i Azure Spring Apps.