Een beheerde Spring Cloud-configuratieserver configureren in Azure Spring Apps

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op: ✔️ Java ✔️ C#

Dit artikel is van toepassing op: ✔️ Standaardverbruik en toegewezen (preview) ✔️ Basic/Standard ❌ Enterprise

In dit artikel leest u hoe u een beheerde Spring Cloud-configuratieserver configureert in de Azure Spring Apps-service.

Spring Cloud Config Server biedt ondersteuning aan server- en clientzijde voor een externe configuratie in een gedistribueerd systeem. Het exemplaar van de configuratieserver biedt een centrale locatie voor het beheren van externe eigenschappen voor toepassingen in alle omgevingen. Zie de Spring Cloud-configuratiedocumentatie voor meer informatie.

Notitie

Als u de configuratieserver wilt gebruiken in het standaardverbruik en toegewezen abonnement, moet u deze eerst inschakelen. Zie Spring Cloud-configuratieserver inschakelen en uitschakelen in Azure Spring Apps voor meer informatie.

Vereisten

  • Een Azure-abonnement. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
  • Een al ingericht en uitgevoerd Azure Spring Apps-service-exemplaar met behulp van het Basic- of Standard-abonnement. Als u een Azure Spring Apps-service wilt instellen en starten, raadpleegt u quickstart: Uw eerste toepassing implementeren in Azure Spring Apps. Spring Cloud-configuratieserver is niet van toepassing op het Enterprise-abonnement.
  • Git.

Beperking

Er gelden enkele beperkingen op het gebruik van Config Server met een Git-back-end. De volgende eigenschappen worden automatisch in uw toepassingsomgeving geïnjecteerd om toegang te krijgen tot Config Server en Service Discovery. Als u deze eigenschappen ook vanuit uw Config Server-bestanden configureert, kunnen er conflicten en onverwacht gedrag optreden.

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

Let op

Plaats deze eigenschappen niet in uw Config Server-toepassingsbestanden.

Uw Config Server-bestanden maken

Azure Spring Apps ondersteunt Azure DevOps Server, GitHub, GitLab en Bitbucket voor het opslaan van uw Config Server-bestanden. Wanneer uw opslagplaats gereed is, kunt u de configuratiebestanden maken en daar opslaan.

Sommige configureerbare eigenschappen zijn alleen beschikbaar voor bepaalde typen. In de volgende secties worden de eigenschappen voor elk type opslagplaats beschreven.

Notitie

Config Server gebruikt master (op Git) als het standaardlabel als u er geen opgeeft. GitHub heeft echter onlangs de standaardbranch gewijzigd van master in main. Let op het standaardlabel bij het instellen van de configuratieserver van Azure Spring Apps met GitHub, met name voor nieuw gemaakte opslagplaatsen om te voorkomen dat azure Spring Apps-configuratieserver mislukt.

Openbare opslagplaats

Wanneer u een openbare opslagplaats gebruikt, zijn uw configureerbare eigenschappen beperkter dan met een privéopslagplaats.

De volgende tabel bevat de configureerbare eigenschappen die u kunt gebruiken om een openbare Git-opslagplaats in te stellen.

Notitie

Het gebruik van een afbreekstreepje (-) als scheidingsteken tussen woorden is momenteel de enige ondersteunde naamconventie. U kunt bijvoorbeeld standaard-label gebruiken, maar niet standaardLabel.

Eigenschappen Vereist Functie
uri Ja De URI van de Git-opslagplaats die wordt gebruikt als de back-end van de configuratieserver. Moet beginnen met http://, https://, git@of ssh://.
default-label Nee Het standaardlabel van de Git-opslagplaats. Moet de naam van de vertakking, tagnaam of doorvoer-id van de opslagplaats zijn.
search-paths Nee Een matrix van tekenreeksen die worden gebruikt om te zoeken in submappen van de Git-opslagplaats.

Persoonlijke opslagplaats met SSH-verificatie

De volgende tabel bevat de configureerbare eigenschappen die u kunt gebruiken om een persoonlijke Git-opslagplaats in te stellen met SSH.

Notitie

Het gebruik van een afbreekstreepje (-) als scheidingsteken tussen woorden is momenteel de enige ondersteunde naamconventie. U kunt bijvoorbeeld standaard-label gebruiken, maar niet standaardLabel.

Eigenschappen Vereist Functie
uri Ja De URI van de Git-opslagplaats die wordt gebruikt als de back-end van de configuratieserver. Moet beginnen met http://, https://, git@of ssh://.
default-label Nee Het standaardlabel van de Git-opslagplaats. Moet de naam van de vertakking, tagnaam of doorvoer-id van de opslagplaats zijn.
search-paths Nee Een matrix van tekenreeksen gebruikt om te zoeken in submappen van de Git-opslagplaats.
private-key Nee De persoonlijke SSH-sleutel voor toegang tot de Git-opslagplaats. Vereist wanneer de URI begint met git@ of ssh://.
host-key Nee De hostsleutel van de Git-opslagplaatsserver. Het algoritmevoorvoegsel mag niet worden opgenomen zoals gedekt door host-key-algorithm.
host-key-algorithm Nee Het algoritme van de hostsleutel. Moet ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 of ecdsa-sha2-nistp521 zijn. Alleen vereist als host-key deze bestaat.
strict-host-key-checking Nee Hiermee wordt aangegeven of het exemplaar van de configuratieserver niet kan worden gestart wanneer het privé-exemplaar host-keywordt gebruikt. Moet true (standaardwaarde) of false zijn.

Persoonlijke opslagplaats met basisverificatie

De volgende tabel bevat de configureerbare eigenschappen die u kunt gebruiken om een persoonlijke Git-opslagplaats in te stellen met basisverificatie.

Notitie

Het gebruik van een afbreekstreepje (-) als scheidingsteken tussen woorden is momenteel de enige ondersteunde naamconventie. Gebruik bijvoorbeeld standaard-label, niet standaardLabel.

Eigenschappen Vereist Functie
uri Ja De URI van de Git-opslagplaats die wordt gebruikt als de back-end van de configuratieserver. Moet beginnen met http://, https://, git@of ssh://.
default-label Nee Het standaardlabel van de Git-opslagplaats. Moet de naam van de vertakking, tagnaam of commit-id van de opslagplaats zijn.
search-paths Nee Een matrix van tekenreeksen gebruikt om te zoeken in submappen van de Git-opslagplaats.
username Nee De gebruikersnaam die wordt gebruikt voor toegang tot de Server van de Git-opslagplaats. Vereist wanneer de Git-opslagplaatsserver HTTP-basisverificatie ondersteunt.
password Nee Het wachtwoord of het persoonlijke toegangstoken dat wordt gebruikt voor toegang tot de Server van de Git-opslagplaats. Vereist wanneer de Git-opslagplaatsserver HTTP-basisverificatie ondersteunt.

Notitie

Veel Git-opslagplaatsservers ondersteunen het gebruik van tokens in plaats van wachtwoorden voor HTTP-basisverificatie. In sommige opslagplaatsen kunnen tokens voor onbepaalde tijd worden bewaard. Sommige Git-opslagplaatsservers, waaronder Azure DevOps Server, dwingen echter af dat tokens binnen een paar uur verlopen. Opslagplaatsen die ervoor zorgen dat tokens verlopen, mogen geen verificatie op basis van tokens gebruiken met Azure Spring Apps. Als u een dergelijk token gebruikt, moet u het bijwerken voordat het verloopt.

GitHub heeft ondersteuning voor wachtwoordverificatie verwijderd, dus u moet een persoonlijk toegangstoken gebruiken in plaats van wachtwoordverificatie voor GitHub. Zie Tokenverificatievereisten voor Git-bewerkingen voor meer informatie.

Andere Git-opslagplaatsen

De volgende tabel bevat de configureerbare eigenschappen die u kunt gebruiken om Git-opslagplaatsen in te stellen met een patroon.

Notitie

Het gebruik van een afbreekstreepje (-) als scheidingsteken tussen woorden is momenteel de enige ondersteunde naamconventie. Gebruik bijvoorbeeld standaard-label, niet standaardLabel.

Eigenschappen Vereist Functie
repos Nee Een toewijzing bestaande uit de instellingen voor een Git-opslagplaats met een bepaalde naam.
repos."uri" Ja voor repos De URI van de Git-opslagplaats die wordt gebruikt als de back-end van de configuratieserver. Moet beginnen met http://, https://, git@of ssh://.
repos."name" Ja voor repos Een naam om de opslagplaats te identificeren; bijvoorbeeld team-A of team-B. Alleen vereist als repos deze bestaat.
repos."pattern" Nee Een matrix van tekenreeksen gebruikt om een toepassingsnaam te vinden. Gebruik voor elk patroon de indeling {application}/{profile} met jokertekens.
repos."default-label" Nee Het standaardlabel van de Git-opslagplaats. Moet de naam van de vertakking, tagnaam of doorvoer-IOD van de opslagplaats zijn.
repos."search-paths" Nee Een matrix van tekenreeksen gebruikt om te zoeken in submappen van de Git-opslagplaats.
repos."username" Nee De gebruikersnaam die wordt gebruikt voor toegang tot de Git-opslagplaatsserver. Vereist wanneer de Git-opslagplaatsserver HTTP-basisverificatie ondersteunt.
repos."password" Nee Het wachtwoord of het persoonlijke toegangstoken dat wordt gebruikt voor toegang tot de Server van de Git-opslagplaats. Vereist wanneer de Git-opslagplaatsserver HTTP-basisverificatie ondersteunt.
repos."private-key" Nee De persoonlijke SSH-sleutel voor toegang tot de Git-opslagplaats. Vereist wanneer de URI begint met git@ of ssh://.
repos."host-key" Nee De hostsleutel van de Git-opslagplaatsserver. Het algoritmevoorvoegsel mag niet worden opgenomen zoals gedekt door host-key-algorithm.
repos."host-key-algorithm" Nee Het algoritme van de hostsleutel. Moet ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 of ecdsa-sha2-nistp521 zijn. Alleen vereist als host-key deze bestaat.
repos."strict-host-key-checking" Nee Hiermee wordt aangegeven of het exemplaar van de configuratieserver niet kan worden gestart wanneer het privé-exemplaar host-keywordt gebruikt. Moet true (standaardwaarde) of false zijn.

In de volgende tabel ziet u enkele voorbeelden van patronen voor het configureren van uw service met een optionele extra opslagplaats. Zie de sectie Extra opslagplaatsen en de sectie Patroonkoppeling en Meerdere opslagplaatsen van de Spring-documentatie voor meer informatie.

Patronen Beschrijving
test-config-server-app-0/* Het patroon en de opslagplaats-URI komen overeen met een Spring Boot-toepassing met een test-config-server-app-0 profiel.
test-config-server-app-1/dev Het patroon en de opslagplaats-URI komen overeen met een Spring Boot-toepassing met test-config-server-app-1 een dev-profiel.
test-config-server-app-2/prod Het patroon en de opslagplaats-URI komen overeen met een Spring Boot-toepassing met test-config-server-app-2 een prod-profiel.

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

Uw Config Server-opslagplaats koppelen aan Azure Spring Apps

Nu uw configuratiebestanden zijn opgeslagen in een opslagplaats, gebruikt u de volgende stappen om Azure Spring Apps te verbinden met de opslagplaats.

  1. Meld u aan bij de Azure-portal.

  2. Ga naar de overzichtspagina van Azure Spring Apps.

  3. Selecteer Config Server in het linkernavigatiedeelvenster.

  4. Stel in de sectie Standaardopslagplaats de URI in op https://github.com/Azure-Samples/piggymetrics-config.

  5. Selecteer Valideren.

    Screenshot of Azure portal showing the Config Server page.

  6. Wanneer de validatie is voltooid, selecteert u Toepassen om uw wijzigingen op te slaan.

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

Het bijwerken van de configuratie kan enkele minuten duren. U ontvangt een melding wanneer de configuratie is voltooid.

De gegevens van de opslagplaats rechtstreeks invoeren bij de Azure-portal

U kunt opslagplaatsgegevens invoeren voor de standaardopslagplaats en eventueel voor extra opslagplaatsen.

Standaardopslagplaats

Gebruik de stappen in deze sectie om opslagplaatsgegevens in te voeren voor een openbare of persoonlijke opslagplaats.

  • Openbare opslagplaats: Plak in de sectie Standaardopslagplaats in het vak Uri de URI-URI van de opslagplaats. Voer de configuratie in voor de labelinstelling . Zorg ervoor dat de verificatie-instelling openbaar is en selecteer vervolgens Toepassen.

  • Privéopslagplaats: Azure Spring Apps biedt ondersteuning voor basisverificatie op basis van wachtwoorden/tokens en SSH.

    • Basisverificatie: Plak in het vak Uri in het gedeelte Standaardopslagplaats de URI en selecteer vervolgens de instelling onder Verificatie om het deelvenster Verificatie bewerken te openen. Selecteer HTTP Basic in de vervolgkeuzelijst Verificatietype en voer vervolgens uw gebruikersnaam en wachtwoord/token in om toegang te verlenen tot Azure Spring Apps. Selecteer OK en vervolgens Toepassen om de instelling van uw instantie van een Config Server te voltooien.

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

    Notitie

    Veel Git-opslagplaatsservers ondersteunen het gebruik van tokens in plaats van wachtwoorden voor HTTP-basisverificatie. In sommige opslagplaatsen kunnen tokens voor onbepaalde tijd worden bewaard. Sommige Git-opslagplaatsservers, waaronder Azure DevOps Server, dwingen echter af dat tokens binnen een paar uur verlopen. Opslagplaatsen die ervoor zorgen dat tokens verlopen, mogen geen verificatie op basis van tokens gebruiken met Azure Spring Apps. Als u een dergelijk token gebruikt, moet u het bijwerken voordat het verloopt.

    GitHub heeft ondersteuning voor wachtwoordverificatie verwijderd, dus u moet een persoonlijk toegangstoken gebruiken in plaats van wachtwoordverificatie voor GitHub. Zie Tokenverificatievereisten voor Git-bewerkingen voor meer informatie.

    • SSH: Plak in het vak Uri in de sectie Standaardopslagplaats de URI en selecteer vervolgens de instelling onder Verificatie om het deelvenster Verificatie bewerken te openen. Selecteer in het deelvenster Verificatie bewerken in de vervolgkeuzelijst Verificatietype de optie SSH en voer vervolgens uw persoonlijke sleutel in. Geef eventueel uw hostsleutel en hostsleutel-algoritme op. Neem uw openbare sleutel op in de opslagplaats van de configuratieserver. Selecteer OK en vervolgens Toepassen om de instelling van uw instantie van een Config Server te voltooien.

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

Extra opslagplaatsen

Als u uw service wilt configureren met een optionele extra opslagplaats, geeft u de URI - en verificatie-instellingen op zoals u hebt gedaan voor de standaardopslagplaats. Zorg ervoor dat u een naaminstelling voor uw patroon opneemt en selecteer Vervolgens Toepassen om deze toe te voegen aan uw exemplaar.

Informatie over en opslagplaats invoeren in een YAML-bestand

Als u een YAML-bestand hebt geschreven met de instellingen van uw opslagplaats, kunt u het bestand rechtstreeks vanaf uw lokale computer importeren in Azure Spring Apps. In het volgende voorbeeld ziet u een eenvoudig YAML-bestand voor een privéopslagplaats met basisverificatie.

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/azure-spring-apps-samples-pr/config-server-repository.git
          username: <username>
          password: <password/token>

Klik op de knop Instellingen importeren en selecteer vervolgens het YAML-bestand in uw projectmap. Selecteer Importeren.

Screenshot of the Config Server Import settings pane.

In uw meldingen wordt een async bewerking weergegeven. De configuratieserver moet na 1-2 minuten zijn geslaagd. De informatie uit uw YAML-bestand wordt weergegeven in Azure Portal. Selecteer Toepassen om het importeren te voltooien.

Azure-opslagplaatsen gebruiken voor azure Spring Apps-configuratie

Azure Spring Apps heeft toegang tot Git-opslagplaatsen die openbaar zijn, worden beveiligd door SSH of worden beveiligd met behulp van HTTP-basisverificatie. HTTP-basisverificatie is het eenvoudigst van de opties voor het maken en beheren van opslagplaatsen met Azure-opslagplaatsen.

URL en referenties voor opslagplaats ophalen

Gebruik de volgende stappen om uw opslagplaats-URL en referenties op te halen.

  1. Selecteer in de Azure-opslagplaatsportal voor uw project de knop Klonen :

  2. Kopieer de kloon-URL uit het tekstvak. Deze URL heeft doorgaans de volgende vorm:

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

    Verwijder alles na https:// en voor dev.azure.com, inclusief het @ symbool. De resulterende URL moet de volgende vorm hebben:

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

    Sla deze URL op voor gebruik in de volgende sectie.

  3. Selecteer Git-referenties genereren om een gebruikersnaam en wachtwoord weer te geven. Deze moeten worden opgeslagen voor gebruik in de volgende sectie.

Azure Spring Apps configureren voor toegang tot de Git-opslagplaats

  1. Meld u aan bij de Azure-portal.

  2. Ga naar de overzichtspagina van Azure Spring Apps.

  3. Selecteer de service die u wilt configureren.

  4. Selecteer in het linkerdeelvenster van de servicepagina onder Instellingen het tabblad Configuratieserver. Configureer de opslagplaats die u hebt gemaakt, als volgt:

    • Voeg de opslagplaats-URI toe die u in de vorige sectie hebt opgeslagen.
    • Selecteer de instelling onder Verificatie om het deelvenster Verificatie bewerken te openen.
    • Voor verificatietype selecteert u HTTP Basic.
    • Geef bij Gebruikersnaam de gebruikersnaam op die u in de vorige sectie hebt opgeslagen.
    • Geef voor Wachtwoord het wachtwoord op dat u in de vorige sectie hebt opgeslagen.
    • Selecteer OK en wacht tot de bewerking is voltooid.

    Screenshot of repository configuration settings.

Uw configuratie verwijderen

Selecteer Opnieuw instellen op het tabblad Configuratieserver om uw bestaande instellingen te wissen. Verwijder de instellingen van de configuratieserver als u uw exemplaar van de configuratieserver wilt verbinden met een andere bron, bijvoorbeeld wanneer u overstapt van GitHub naar Azure DevOps Server.

Configuratieserver vernieuwen

Wanneer eigenschappen worden gewijzigd, moeten services die deze eigenschappen gebruiken, worden gewaarschuwd voordat wijzigingen kunnen worden aangebracht. De standaardoplossing voor Spring Cloud Config Server is het handmatig activeren van de vernieuwings gebeurtenis, wat mogelijk niet haalbaar is als er veel app-exemplaren zijn. Zie Gecentraliseerde configuratie voor meer informatie

In plaats daarvan kunt u automatisch waarden vernieuwen van Config Server door de configuratieclient te laten peilen naar wijzigingen op basis van een interne vernieuwing. Gebruik de volgende stappen om automatisch waarden van de configuratieserver te vernieuwen.

  1. Registreer een geplande taak om de context in een bepaald interval te vernieuwen, zoals wordt weergegeven in het volgende voorbeeld.

    @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. Schakel autorefresh in en stel het juiste vernieuwingsinterval in uw application.yml-bestand in. In het volgende voorbeeld wordt elke 60 seconden door de client gecontroleerd op configuratiewijzigingen. Dit is de minimale waarde die u voor een vernieuwingsinterval kunt instellen.

    Autorefresh is standaard ingesteld op false en het vernieuwingsinterval is ingesteld op 60 seconden.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Voeg uw code toe @RefreshScope . In het volgende voorbeeld wordt de variabele connectTimeout elke 60 seconden automatisch vernieuwd.

    @RestController
    @RefreshScope
    public class HelloController {
        @Value("${timeout:4000}")
        private String connectTimeout;
    }
    

Zie het voorbeeld van config-client-polling voor meer informatie.

Volgende stappen

In dit artikel hebt u geleerd hoe u uw exemplaar van een Spring Cloud-configuratieserver kunt inschakelen en configureren. Zie Een toepassing schalen in Azure Spring Apps voor meer informatie over het beheren van uw toepassing.