Dela via


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-konfigurationsserver i Azure Spring Apps.

Spring Cloud Config Server tillhandahåller stöd på server- och klientsidan för en externaliserad konfiguration i ett distribuerat system. Spring Cloud Config Server-instansen är en central plats för att hantera externa egenskaper för program i alla miljöer. Mer information finns i 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.

Aktivera Spring Cloud Config Server

Du kan aktivera Spring Cloud Config Server när du etablerar en Azure Spring Apps Enterprise-plantjänstinstans. Om du redan har en Azure Spring Apps Enterprise-planinstans läser du avsnittet Hantera Spring Cloud Config Server i en befintlig Enterprise-planinstans i den här artikeln.

Du kan aktivera Spring Cloud Config Server med hjälp av Azure-portalen eller Azure CLI.

Använd följande steg för att aktivera Spring Cloud Config Server:

  1. Öppna Azure Portal.

  2. På fliken Grundläggande väljer du Företagsnivå i avsnittet Prissättning och anger nödvändig information. Välj sedan Nästa: Hanterade komponenter.

  3. På fliken Hanterade komponenter väljer du Aktivera Spring Cloud Config Server (förhandsversion).

    Skärmbild av Azure-portalen som visar fliken VMware Tanzu-inställningar med kryssrutan Aktivera Spring Cloud Config Server markerad.

  4. Ange andra inställningar och välj sedan Granska och Skapa.

  5. På fliken Granska en skapa kontrollerar du att Aktivera Spring Cloud Config Server (förhandsversion) är inställt på Ja. Välj Skapa för att skapa enterprise-planinstansen.

Begränsningar

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

Undvik att placera 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.

Att använda ett bindestreck (-) för att separera ord är den enda namngivningskonventionen för egenskapen som för närvarande stöds. Du kan till exempel använda default-label, men inte defaultLabel.

Offentlig lagringsplats

När du använder en offentlig lagringsplats är dina konfigurerbara egenskaper mer begränsade än de är 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:

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 ett grennamn, taggnamn eller inchecknings-ID på 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:

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-nistp384eller ecdsa-sha2-nistp521. Krävs endast om host-key det finns.
strict-host-key-checking Nej Config Server-indikatorn som visar om den inte startar när du använder den privata host-key. Ska vara true (standardvärde) eller false.

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:

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 ett grennamn, taggnamn eller inchecknings-ID på 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:

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. Använd formatet {application}/{profile} med jokertecken för varje mönster.
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-nistp384eller 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 true (standardvärde) eller false.

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 i den här artikeln och avsnittet Mönstermatchning och flera lagringsplatser i Spring Cloud Config.

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.

Skärmbild av Azure-portalen som visar sidan Konfigurationsserver med kolumnen Mönster i tabellen Ytterligare lagringsplatser markerad.

Skärmbild av Azure-portalen som visar sidan Konfigurationsserver med kolumnen Mönster i tabellen Ytterligare lagringsplatser markerad.

Konfigurera en Git-lagringsplats mot Config Server

När du har sparat dina konfigurationsfiler 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 Spring Cloud Config Server i navigeringsfönstret.

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

  5. Välj validera.

    Skärmbild av Azure-portalen som visar sidan Konfigurationsserver.

    Skärmbild av Azure-portalen som visar sidan Konfigurationsserver.

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

    Skärmbild av Azure-portalen som visar sidan Konfigurationsserver med knappen Använd markerad.

    Skärmbild av Azure-portalen som visar sidan Konfigurationsserver med knappen Använd markerad.

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

Det här avsnittet visar hur du anger lagringsplatsinformation för en offentlig eller privat lagringsplats. För en privat lagringsplats kan du använda Grundläggande autentisering eller SSH.

Använd följande steg för att ange lagringsplatsinformation för en offentlig lagringsplats:

  1. I avsnittet Standardlagringsplats i rutan Uri klistrar du in lagringsplatsens URI.
  2. För inställningen Etikett anger du konfiguration.
  3. Kontrollera att autentiseringsinställningen är Offentlig.
  4. Välj Använd.

Använd följande steg för att ange lagringsplatsinformation för en privat lagringsplats med grundläggande lösenords-/tokenbaserad autentisering:

  1. I avsnittet Standardlagringsplats i rutan Uri klistrar du in lagringsplatsens URI.

  2. Under Autentisering väljer du Redigera autentisering.

  3. Välj HTTP Basic i listrutan Autentiseringstyp i fönstret Redigera autentisering.

  4. Ange ditt användarnamn och lösenord/token för att bevilja åtkomst till Azure Spring Apps.

  5. Välj OK och välj sedan Använd för att slutföra konfigurationen av konfigurationsserverinstansen.

    Skärmbild av Azure-portalen som visar avsnittet Standardlagringsplats i autentiseringsinställningarna för grundläggande 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.

Använd följande steg för att ange lagringsplatsinformation för en privat lagringsplats med hjälp av SSH:

  1. I avsnittet Standardlagringsplats i rutan Uri klistrar du in lagringsplatsens URI.

  2. Under Autentisering väljer du Redigera autentisering.

  3. Välj SSH i listrutan Autentiseringstyp i fönstret Redigera autentisering.

  4. Ange din privata nyckel. Du kan också ange värdnyckeln och värdnyckelalgoritmen.

  5. Inkludera din offentliga nyckel i konfigurationsserverlagringsplatsen.

  6. Välj OK och välj sedan Använd för att slutföra konfigurationen av konfigurationsserverinstansen.

    Skärmbild av Azure-portalen som visar avsnittet Standardlagringsplats i autentiseringsinställningarna för SSH-autentisering.

Extra lagringsplatser

Om du vill konfigurera tjänsten med en valfri extra lagringsplats använder du följande steg:

  1. Ange Uri- och autentiseringsinställningarna som du gjorde för standardlagringsplatsen. Se till att inkludera en namninställning för ditt mönster.
  2. Välj Använd för att koppla lagringsplatsen till din instans.

Konfigurera en Git-lagringsplats genom att importera 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>

Använd följande steg för att importera en YAML-fil:

  1. Välj Importera inställningar och välj sedan YAML-filen från projektkatalogen. Välj Importera.

    Skärmbild av Azure-portalen som visar fönstret Inställningar för konfigurationsserverimport.

    Skärmbild av Azure-portalen som visar fönstret Inställningar för konfigurationsserverimport.

    Fönstret 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.

  2. Välj Använd för att slutföra importen.

Konfigurera Azure Repos mot Config Server

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 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 om du vill använda den senare.

  3. Välj Generera Git-autentiseringsuppgifter för att visa ett användarnamn och lösenord. Spara det här användarnamnet och lösenordet som ska användas i följande avsnitt.

Konfigurera en Git-lagringsplats mot Config Server

Använd följande steg för att konfigurera 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. I den vänstra rutan på tjänstsidan under Inställningar väljer du fliken Spring Cloud Config Server.

  5. Använd följande steg för att konfigurera lagringsplatsen som du skapade:

    • Lägg till lagringsplatsens URI som du sparade tidigare.
    • 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 tidigare.
    • För Lösenord anger du det lösenord som du sparade tidigare.
    • Välj OK och vänta sedan tills åtgärden har slutförts.

    Skärmbild av Azure-portalen som visar standardinställningarna för lagringsplatsens konfiguration med Uri och autentiseringstypen markerade.

Binda en app till Spring Cloud Config Server

Använd följande kommando för att binda en app till Spring Cloud Config Server, vilket gör att appen kan hämta konfigurationer från Config Server.

az spring config-server bind \
    --resource-group <resource-group> \
    --service <service-name> \
    --app <app-name>

Du kan också konfigurera appbindningen från Azure-portalen, enligt följande skärmbild:

Skärmbild av Azure-portalen som visar sidan Spring Cloud Config Server med listrutan Appbindning markerad.

Kommentar

Dessa ändringar tar några minuter att sprida till alla program när konfigurationsserverns status ändras.

Om du ändrar bindnings-/avbindningsstatusen måste du starta om eller distribuera om programmet.

Nu kan du välja att binda ditt program till Spring Cloud Config Server direkt när du skapar en ny app med hjälp av följande kommando:

az spring app create \ 
    --resource-group <resource-group> \ 
    --service <service-name> \ 
    --name <app-name> \ 
    --bind-config-server

Du kan också binda ditt program till Spring Cloud Config Server från Azure-portalen, enligt följande skärmbild:

Skärmbild av Azure-portalen som visar sidan Skapa app med listrutan Bind markerad.

Ta bort konfigurationen

Välj Återställfliken Spring Cloud Config Server 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.

Uppdatera konfigurationsserver

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

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Lägg till @RefreshScope i 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 .

Hantera Spring Cloud Config Server i en befintlig Enterprise-planinstans

Du kan aktivera och inaktivera Spring Cloud Config Server när tjänsten har skapats med hjälp av Azure-portalen eller Azure CLI. Innan du inaktiverar Spring Cloud Config Server måste du avbinda alla dina appar från den.

Använd följande steg för att aktivera eller inaktivera Spring Cloud Config Server:

  1. Gå till tjänstinstansen och välj sedan Spring Cloud Config Server.

  2. Välj Hantera.

  3. Välj eller avmarkera Aktivera Spring Cloud Config Server och välj sedan Spara.

    Skärmbild av Azure-portalen som visar fönstret Hantera med alternativet Aktivera konfigurationsserver markerat.

  4. Nu kan du visa tillståndet för Spring Cloud Config Server på sidan Spring Cloud Config Server .

Azure Spring Apps