Konfigurieren eines verwalteten Spring Cloud-Konfigurationsservers in Azure Spring Apps

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Java ✔️ C#

Dieser Artikel bezieht sich auf: ✔️ Standardverbrauch und dedizierte (Vorschau) ✔️ Basic/Standard ❌ Enterprise

In diesem Artikel wird gezeigt, wie Sie einen verwalteten Spring Cloud-Konfigurationsserver im Azure Spring Apps-Dienst konfigurieren.

Die Spring Cloud-Konfigurationsserver bietet server- und clientseitige Unterstützung für eine externalisierte Konfiguration in einem verteilten System. Die Konfigurationsserverinstanz bietet Ihnen einen zentralen Ort zum Verwalten externer Eigenschaften für Anwendungen in allen Umgebungen. Weitere Informationen finden Sie in der Dokumentation zu Spring Cloud Config.

Hinweis

Um den Konfigurationsserver im Standardverbrauch und dedizierten Plan zu verwenden, müssen Sie ihn zuerst aktivieren. Weitere Informationen finden Sie unter Aktivieren und Deaktivieren von Spring Cloud Config Server in Azure Spring Apps.

Voraussetzungen

Einschränkung

Bei der Verwendung eines Konfigurationsservers mit einem Git-Back-End gelten einige Einschränkungen. Die folgenden Eigenschaften werden für den Zugriff auf Config Server und die Dienstermittlung automatisch in Ihre Anwendungsumgebung eingefügt. Wenn Sie diese Eigenschaften auch in den Dateien Ihres Konfigurationsservers konfigurieren, treten unter Umständen Konflikte oder unerwartetes Verhalten auf.

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

Achtung

Fügen Sie diese Eigenschaften nicht in Ihre Config Server-Anwendungsdateien ein.

Erstellen der Konfigurationsserverdateien

Azure Spring Apps unterstützt Azure DevOps Server, GitHub, GitLab und Bitbucket zum Speichern Ihrer Config Server-Dateien. Wenn Ihr Repository bereit ist, können Sie die Konfigurationsdateien erstellen und dort speichern.

Einige der konfigurierbaren Eigenschaften sind nur für bestimmte Typen verfügbar. In den folgenden Abschnitten werden die Eigenschaften für die einzelnen Repositorytypen beschrieben.

Hinweis

Config Server verwendet master (auf Git) als Standardbezeichnung, wenn Sie keine eigene angeben. Allerdings wurde der Standardbranch auf GitHub kürzlich von master in main geändert. Um einen Azure Spring Apps Config Server-Fehler zu vermeiden, müssen Sie beim Einrichten von Config Server mit GitHub auf die Standardbeschriftung achten. Dies gilt insbesondere für neu erstellte Repositorys.

Öffentliches Repository

Bei der Verwendung eines öffentlichen Repositorys sind Ihre konfigurierbaren Eigenschaften stärker eingeschränkt als bei einem privaten Repository.

In der folgenden Tabelle sind die konfigurierbaren Eigenschaften aufgeführt, die Sie zum Einrichten eines öffentlichen Git-Repositorys verwenden können.

Hinweis

Das Verwenden eines Bindestrichs (-) zum Trennen von Wörtern ist die einzige Namenskonvention, die derzeit unterstützt wird. Beispielsweise können Sie standard-bezeichnung verwenden, jedoch nicht StandardBezeichnung.

Eigenschaft Erforderlich Funktion
uri Ja Der URI des Git-Repositorys, das als Config Server-Back-End verwendet wird. Sollte beginnen mit http://, https://, git@ oder ssh://.
default-label Nein Die Standardbezeichnung des Git-Repositorys. Sollte der Branchname, Tagname oder die Commit-ID des Repositorys sein.
search-paths Nein Ein Array von Zeichenfolgen, die zum Durchsuchen von Unterverzeichnissen des Git-Repositorys verwendet werden

Privates Repository mit SSH-Authentifizierung

In der folgenden Tabelle sind die konfigurierbaren Eigenschaften aufgeführt, die Sie zum Einrichten eines privaten Git-Repositorys mit SSH verwenden können.

Hinweis

Das Verwenden eines Bindestrichs (-) zum Trennen von Wörtern ist die einzige Namenskonvention, die derzeit unterstützt wird. Beispielsweise können Sie standard-bezeichnung verwenden, jedoch nicht StandardBezeichnung.

Eigenschaft Erforderlich Funktion
uri Ja Der URI des Git-Repositorys, das als Config Server-Back-End verwendet wird. Sollte beginnen mit http://, https://, git@ oder ssh://.
default-label Nein Die Standardbezeichnung des Git-Repositorys. Sollte der Branchname, Tagname oder die Commit-ID des Repositorys sein.
search-paths Nein Ein Array von Zeichenfolgen, die zum Durchsuchen von Unterverzeichnissen des Git-Repositorys verwendet werden
private-key Nein Der private SSH-Schlüssel für den Zugriff auf das Git-Repository. Erforderlich, wenn der URI mit git@ oder ssh:// beginnt.
host-key Nein Der Hostschlüssel des Git-Repositoryservers. Sollte nicht das durch host-key-algorithm abgedeckte Algorithmuspräfix enthalten.
host-key-algorithm Nein Der Hostschlüsselalgorithmus. Sollte ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 oder ecdsa-sha2-nistp521 sein. Nur erforderlich, wenn host-key vorhanden ist.
strict-host-key-checking Nein Gibt an, ob die Config Server-Instanz nicht gestartet werden kann, wenn die private host-key. Muss true (Standardwert) oder false sein.

Privates Repository mit Standardauthentifizierung

In der folgenden Tabelle sind die konfigurierbaren Eigenschaften aufgeführt, die Sie zum Einrichten eines privaten Git-Repositorys mit Standardauthentifizierung verwenden können.

Hinweis

Das Verwenden eines Bindestrichs (-) zum Trennen von Wörtern ist die einzige Namenskonvention, die derzeit unterstützt wird. Verwenden können Sie beispielsweise standard-bezeichnung, aber nicht StandardBezeichnung.

Eigenschaft Erforderlich Funktion
uri Ja Der URI des Git-Repositorys, das als Config Server-Back-End verwendet wird. Sollte beginnen mit http://, https://, git@ oder ssh://.
default-label Nein Die Standardbezeichnung des Git-Repositorys. Sollte der Branchname, Tagname oder die Commit-ID des Repositorys sein.
search-paths Nein Ein Array von Zeichenfolgen, die zum Durchsuchen von Unterverzeichnissen des Git-Repositorys verwendet werden
username Nein Der Benutzername, der für den Zugriff auf den Git-Repositoryserver verwendet wird. Erforderlich, wenn der Git-Repositoryserver HTTP-Standardauthentifizierung unterstützt.
password Nein Das Kennwort oder persönliche Zugriffstoken, das für den Zugriff auf den Git-Repositoryserver verwendet wird. Erforderlich, wenn der Git-Repositoryserver HTTP-Standardauthentifizierung unterstützt.

Hinweis

Viele Git-Repositoryserver unterstützen für die HTTP-Standardauthentifizierung eher die Verwendung von Token anstatt von Kennwörtern. In einigen Repositorys können Token unendlich lange aufbewahrt werden. Für bestimmte Git-Repositoryserver, z. B. Azure DevOps Server, wird aber erzwungen, dass Token innerhalb einiger Stunden ablaufen. Für Repositorys mit erzwungenem Ablauf von Token sollte die tokenbasierte Authentifizierung mit Azure Spring Apps nicht genutzt werden. Wenn Sie ein solches Token verwenden, denken Sie daran, es zu aktualisieren, bevor es abläuft.

GitHub hat die Unterstützung für die Kennwortauthentifizierung entfernt, daher müssen Sie ein persönliches Zugriffstoken anstelle der Kennwortauthentifizierung für GitHub verwenden. Weitere Informationen finden Sie unter Anforderungen der Tokenauthentifizierung für Git-Vorgänge.

Andere Git-Repositorys

In der folgenden Tabelle sind die konfigurierbaren Eigenschaften aufgeführt, die Sie zum Einrichten von Git-Repositorys mit einem Muster verwenden können.

Hinweis

Das Verwenden eines Bindestrichs (-) zum Trennen von Wörtern ist die einzige Namenskonvention, die derzeit unterstützt wird. Verwenden können Sie beispielsweise standard-bezeichnung, aber nicht StandardBezeichnung.

Eigenschaft Erforderlich Funktion
repos Nein Eine Zuordnung aus den Einstellungen für ein Git-Repository mit einem angegebenen Namen.
repos."uri" Ja bei repos Der URI des Git-Repositorys, das als Config Server-Back-End verwendet wird. Sollte beginnen mit http://, https://, git@ oder ssh://.
repos."name" Ja bei repos Ein Name zum Identifizieren des Repositorys, z. B. Team-A oder Team-B. Nur erforderlich, wenn repos vorhanden ist.
repos."pattern" Nein Ein Array von Zeichenfolgen zum Abgleichen eines Anwendungsnamens. Verwenden Sie für jedes Muster das Format {application}/{profile} mit Platzhaltern.
repos."default-label" Nein Die Standardbezeichnung des Git-Repositorys. Sollte der Branchname, Tagname oder die Commit-ID des Repositorys sein.
repos."search-paths" Nein Ein Array von Zeichenfolgen, die zum Durchsuchen von Unterverzeichnissen des Git-Repositorys verwendet werden
repos."username" Nein Der Benutzername, der für den Zugriff auf den Git-Repositoryserver verwendet wird. Erforderlich, wenn der Git-Repositoryserver HTTP-Standardauthentifizierung unterstützt.
repos."password" Nein Das Kennwort oder persönliche Zugriffstoken, das für den Zugriff auf den Git-Repositoryserver verwendet wird. Erforderlich, wenn der Git-Repositoryserver HTTP-Standardauthentifizierung unterstützt.
repos."private-key" Nein Der private SSH-Schlüssel für den Zugriff auf das Git-Repository. Erforderlich, wenn der URI mit git@ oder ssh:// beginnt.
repos."host-key" Nein Der Hostschlüssel des Git-Repositoryservers. Sollte nicht das durch host-key-algorithm abgedeckte Algorithmuspräfix enthalten.
repos."host-key-algorithm" Nein Der Hostschlüsselalgorithmus. Sollte ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 oder ecdsa-sha2-nistp521 sein. Nur erforderlich, wenn host-key vorhanden ist.
repos."strict-host-key-checking" Nein Gibt an, ob die Config Server-Instanz nicht gestartet werden kann, wenn die private host-key. Muss true (Standardwert) oder false sein.

Die folgende Tabelle enthält einige Beispiele für Muster für die Konfiguration Ihres Diensts mit einem optionalen zusätzlichen Repository. Weitere Informationen finden Sie im Abschnitt "Zusätzliche Repositorys " und im Abschnitt "Musterabgleich" und "Mehrere Repositorys" der Spring-Dokumentation.

Muster Beschreibung
test-config-server-app-0/* Das Muster und der Repository-URI entsprechen einer Spring Boot-Anwendung namens test-config-server-app-0 mit einem beliebigen Profil.
test-config-server-app-1/dev Das Muster und der Repository-URI entsprechen einer Spring Boot-Anwendung namens test-config-server-app-1 mit einem Entwicklungsprofil (Dev).
test-config-server-app-2/prod Das Muster und der Repository-URI entsprechen einer Spring Boot-Anwendung namens test-config-server-app-2 mit einem Produktionsprofil (prod).

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

Anfügen des Konfigurationsserverrepositorys an Azure Spring Cloud

Nachdem Sie Ihre Konfigurationsdateien in einem Repository gespeichert haben, verwenden Sie die folgenden Schritte, um Azure Spring Apps mit dem Repository zu verbinden.

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zur Seite Übersicht von Azure Spring Apps.

  3. Wählen Sie im Navigationsbereich auf der linken Seite die Option Konfigurationsserver aus.

  4. Geben Sie im Abschnitt Standardrepository für URI den Wert „https://github.com/Azure-Samples/piggymetrics-config“ ein.

  5. Wählen Sie Überprüfen aus.

    Screenshot of Azure portal showing the Config Server page.

  6. Klicken Sie nach Abschluss der Überprüfung auf Anwenden, um die Änderungen zu speichern.

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

Die Aktualisierung der Konfiguration kann einige Minuten dauern. Sie sollten eine Benachrichtigung erhalten, wenn die Konfiguration abgeschlossen ist.

Direkte Eingabe von Repositoryinformationen im Azure-Portal

Sie können Repositoryinformationen für das Standardrepository und optional für zusätzliche Repositorys eingeben.

Standardrepository

Verwenden Sie die Schritte in diesem Abschnitt, um Repositoryinformationen für ein öffentliches oder privates Repository einzugeben.

  • Öffentliches Repository: Fügen Sie im Abschnitt "Standard-Repository" im Feld "URI" den Repository-URI ein. Geben Sie config für die Einstellung Bezeichnung ein. Stellen Sie sicher, dass die Einstellung Authentifizierung den Wert Öffentlich aufweist, und wählen Sie dann Anwenden aus.

  • Privates Repository: Azure Spring Apps unterstützt die grundlegende Authentifizierung per Kennwort/Token und SSH.

    • Standardauthentifizierung: Fügen Sie im Abschnitt Standardrepository im Feld URI den Repository-URI ein, und wählen Sie dann die Einstellung unter Authentifizierung aus, um den Bereich Authentifizierung bearbeiten zu öffnen. Wählen Sie in der Dropdownliste Authentifizierungstyp die Option HTTP Basic aus, und geben Sie dann Ihren Benutzernamen mit dem Kennwort/Token für den Zugriff auf Azure Spring Apps ein. Wählen Sie OK und dann Anwenden aus, um die Einrichtung Ihrer Konfigurationsserverinstanz abzuschließen.

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

    Hinweis

    Viele Git-Repositoryserver unterstützen für die HTTP-Standardauthentifizierung eher die Verwendung von Token anstatt von Kennwörtern. In einigen Repositorys können Token unendlich lange aufbewahrt werden. Für bestimmte Git-Repositoryserver, z. B. Azure DevOps Server, wird aber erzwungen, dass Token innerhalb einiger Stunden ablaufen. Für Repositorys mit erzwungenem Ablauf von Token sollte die tokenbasierte Authentifizierung mit Azure Spring Apps nicht genutzt werden. Wenn Sie ein solches Token verwenden, denken Sie daran, es zu aktualisieren, bevor es abläuft.

    GitHub hat die Unterstützung für die Kennwortauthentifizierung entfernt, daher müssen Sie ein persönliches Zugriffstoken anstelle der Kennwortauthentifizierung für GitHub verwenden. Weitere Informationen finden Sie unter Anforderungen der Tokenauthentifizierung für Git-Vorgänge.

    • SSH: Fügen Sie im Abschnitt Standardrepository im Feld URI den Repository-URI ein, und wählen Sie dann die Einstellung unter Authentifizierung aus, um den Bereich Authentifizierung bearbeiten zu öffnen. Wählen Sie im Bereich Authentifizierung bearbeiten in der Dropdownliste Authentifizierungstyp die Option SSH aus, und geben Sie dann Ihren privaten Schlüssel ein. Optional können Sie Ihren Hostschlüssel und Hostschlüsselalgorithmus angeben. Nehmen Sie Ihren öffentlichen Schlüssel in Ihr Config Server-Repository auf. Wählen Sie OK und dann Anwenden aus, um die Einrichtung Ihrer Konfigurationsserverinstanz abzuschließen.

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

Zusätzliche Repositorys

Wenn Sie Ihren Dienst mit einem optionalen zusätzlichen Repository konfigurieren möchten, geben Sie die URI - und Authentifizierungseinstellungen wie für das Standard-Repository an. Geben Sie eine Einstellung Name für das Muster an, und wählen Sie dann Anwenden aus, um es an Ihre Instanz anzufügen.

Eingeben der Repositoryinformationen in eine YAML-Datei

Wenn Sie eine YAML-Datei mit Ihren Repositoryeinstellungen erstellt haben, können Sie die Datei direkt von Ihrem lokalen Computer in Azure Spring Apps importieren. Das folgende Beispiel zeigt eine einfache YAML-Datei für ein privates Repository mit Standardauthentifizierung.

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

Wählen Sie die Schaltfläche Einstellungen importieren und dann die YAML-Datei in Ihrem Projektverzeichnis aus. Klicken Sie auf Importieren.

Screenshot of the Config Server Import settings pane.

Ihre Benachrichtigungen zeigen einen async-Vorgang an. Config Server sollte nach 1–2 Minuten den Erfolg melden. Die Informationen aus Ihrer YAML-Datei werden im Azure-Portal angezeigt. Wählen Sie Übernehmen, um den Importvorgang abzuschließen.

Verwenden von Azure Repos für die Azure Spring Apps-Konfiguration

Azure Spring Apps kann auf Git-Repositorys zugreifen, die öffentlich sind und per SSH oder mithilfe der HTTP-Standardauthentifizierung gesichert werden. HTTP-Basisauthentifizierung ist die einfachste der Optionen zum Erstellen und Verwalten von Repositorys mit Azure Repos.

Abrufen von URL und Anmeldeinformationen des Repositorys

Verwenden Sie die folgenden Schritte, um Ihre Repo-URL und die Anmeldeinformationen abzurufen.

  1. Klicken Sie im Azure Repos-Portal für Ihr Projekt auf die Schaltfläche Klonen:

  2. Kopieren Sie die Klon-URL aus dem Textfeld. Diese URL befindet sich in der Regel in der folgenden Form:

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

    Entfernen Sie alles nach https:// und vor dev.azure.com, einschließlich des @-Symbols. Die resultierende URL sollte folgendes Format aufweisen:

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

    Speichern Sie diese URL zur Verwendung im nächsten Abschnitt.

  3. Wählen Sie Git-Anmeldeinformationen generieren aus, um einen Benutzernamen und ein Kennwort anzuzeigen, die zur Verwendung im folgenden Abschnitt gespeichert werden sollten.

Konfigurieren von Azure Spring Apps für den Zugriff auf das Git-Repository

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zur Seite Übersicht von Azure Spring Apps.

  3. Wählen Sie den zu konfigurierenden Dienst aus.

  4. Wählen Sie im linken Bereich der Dienstseite unter Einstellungen die Registerkarte Config Server aus. Konfigurieren Sie das Repository, das Sie erstellt haben, wie folgt:

    • Fügen Sie den Repository-URI hinzu, den Sie im vorigen Abschnitt gespeichert haben.
    • Wählen Sie die Einstellung unter Authentifizierung aus, um den Bereich Authentifizierung bearbeiten zu öffnen.
    • Wählen Sie als Authentifizierungstyp die Option HTTP Basic aus.
    • Geben Sie für Benutzername den Benutzernamen an, den Sie im vorigen Abschnitt gespeichert haben.
    • Geben Sie für Kennwort das Kennwort an, das Sie im vorigen Abschnitt gespeichert haben.
    • Wählen Sie OK aus, und warten Sie dann, bis der Vorgang abgeschlossen ist.

    Screenshot of repository configuration settings.

Löschen der Konfiguration

Wählen Sie auf der Registerkarte Config Server die Option Zurücksetzen aus, um Ihre vorhandenen Einstellungen zu löschen. Löschen Sie die Konfigurationsservereinstellungen, wenn Sie Ihre Config Server-Instanz mit einer anderen Quelle verbinden möchten, z. B. wenn Sie von GitHub zu Azure DevOps Server wechseln.

Config Server-Aktualisierung

Wenn Eigenschaften geändert werden, müssen Dienste, die diese Eigenschaften nutzen, benachrichtigt werden, bevor Änderungen vorgenommen werden können. Die Standardlösung für Spring Cloud Config Server besteht darin, das Aktualisierungsereignis manuell auszulösen, was möglicherweise nicht praktikabel ist, wenn viele App-Instanzen vorhanden sind. Weitere Informationen finden Sie unter Zentralisierte Konfiguration.

Stattdessen können Sie Werte von Config Server automatisch aktualisieren, indem Sie Änderungen in einem Aktualisierungsintervall vom Konfigurationsclient abfragen lassen. Verwenden Sie die folgenden Schritte, um Werte von Config Server automatisch zu aktualisieren.

  1. Registrieren Sie eine geplante Aufgabe, um den Kontext in einem bestimmten Intervall zu aktualisieren, wie im folgenden Beispiel gezeigt.

    @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. Aktivieren Sie "autorefresh", und legen Sie das entsprechende Aktualisierungsintervall in Ihrer application.yml Datei fest. Im folgenden Beispiel fragt der Client alle 60 Sekunden nach Konfigurationsänderungen ab. Dies ist der Mindestwert, den Sie für ein Aktualisierungsintervall festlegen können.

    Standardmäßig ist "autorefresh" auf "false " festgelegt, und das Aktualisierungsintervall wird auf 60 Sekunden festgelegt.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Fügen Sie Ihrem Code @RefreshScope hinzu. Im folgenden Beispiel wird die Variable connectTimeout automatisch alle 60 Sekunden aktualisiert.

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

Weitere Informationen finden Sie im Beispiel „config-client-polling“.

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie Sie Ihre Spring Cloud-Konfigurationsserverinstanz aktivieren und konfigurieren. Weitere Informationen zum Verwalten Ihrer Anwendung finden Sie unter Skalieren einer Anwendung in Azure Spring Apps.