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.

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

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.

  1. Logga in på Azure-portalen.

  2. Gå till översiktssidan för Azure Spring Apps.

  3. Välj Konfigurationsserver i det vänstra navigeringsfönstret.

  4. I avsnittet Standardlagringsplats anger du URI till https://github.com/Azure-Samples/piggymetrics-config.

  5. Välj validera.

    Screenshot of Azure portal showing the Config Server page.

  6. När verifieringen är klar väljer du Använd för att spara ändringarna.

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

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.

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

    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.

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

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.

Screenshot of the Config Server Import settings pane.

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.

  1. I Azure Repos-portalen för projektet väljer du knappen Klona :

  2. 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öre dev.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.

  3. 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

  1. Logga in på Azure-portalen.

  2. Gå till översiktssidan för Azure Spring Apps.

  3. Välj den tjänst som ska konfigureras.

  4. 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.

    Screenshot of repository configuration settings.

Ta bort konfigurationen

Välj Återställfliken 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.

  1. 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);
            }
        }
    }
    
  2. 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
    
  3. 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.