Migrieren von Spring Cloud-Anwendungen zu 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.

In diesem Handbuch wird beschrieben, was Sie beachten sollten, wenn Sie eine vorhandene Spring Cloud-Anwendung migrieren möchten, die auf Azure Spring Apps ausgeführt werden soll.

Vor der Migration

Führen Sie vor Beginn einer Migration die in den folgenden Abschnitten beschriebenen Schritte zur Bewertung und Bestandsermittlung aus, um eine erfolgreiche Migration zu gewährleisten.

Falls Sie keine dieser Voraussetzungen für die Migration erfüllen können, sehen Sie sich die folgenden Begleithandbücher an:

  • Migrieren ausführbarer JAR-Anwendungen zu Containern in Azure Kubernetes Service (Leitfaden geplant)
  • Migrieren ausführbarer JAR-Anwendungen zu Azure Virtual Machines (Leitfaden geplant)

Untersuchen der Anwendungskomponenten

Ermitteln, ob und wie das Dateisystem verwendet wird

Suchen Sie nach Fällen, in denen Ihre Dienste Daten in das lokale Dateisystem schreiben bzw. Daten daraus lesen. Ermitteln Sie, wo kurzlebige/temporäre Dateien geschrieben und gelesen und wo langlebige Dateien geschrieben und gelesen werden.

Hinweis

Azure Spring Apps bietet 5 GB temporären Speicher pro Azure Spring Apps-Instanz, bereitgestellt in /tmp. Wenn die geschriebenen temporären Dateien über diesen Grenzwert hinausgehen oder an einen anderen Speicherort geschrieben werden, sind Codeänderungen erforderlich.

Schreibgeschützter statischer Inhalt

Falls mit Ihrer Anwendung derzeit statischer Inhalt bereitgestellt wird, benötigen Sie dafür einen anderen Speicherort. Sie können beispielsweise erwägen, statischen Inhalt in Azure Blob Storage zu verschieben und Azure CDN hinzuzufügen, um global eine sehr hohe Downloadgeschwindigkeit zu erzielen. Weitere Informationen finden Sie unter Hosten von statischen Websites in Azure StorageundSchnellstart: Integrieren eines Azure-Speicherkontos in Azure CDN.

Dynamisch veröffentlichter statischer Inhalt

Wenn Ihre Anwendung statischen Inhalt zulässt, der von Ihrer Anwendung hochgeladen bzw. produziert wird, nach der Erstellung aber unveränderlich ist, können Sie Azure Blob Storage und Azure CDN wie oben beschrieben nutzen. Hierbei können Sie auch eine Azure-Funktion zum Verarbeiten von Uploads und der CDN-Aktualisierung verwenden. Eine entsprechende Beispielimplementierung finden Sie unter Hochladen und CDN-Vorabladen von statischem Inhalt mit Azure Functions.

Ermitteln, ob Dienste betriebssystemspezifischen Code enthalten

Wenn Ihre Anwendung Code mit Abhängigkeiten vom Hostbetriebssystem enthält, müssen Sie ihn umgestalten, um diese Abhängigkeiten zu beseitigen. Beispielsweise müssen Sie ggf. alle Vorkommen von / oder \ in Dateisystempfaden durch File.Separator oder Paths.get ersetzen.

Wechseln zu einer unterstützten Plattform

Azure Spring Apps bietet spezifische Versionen von Java und spezifischen Versionen von Spring Boot und Spring Cloud. Migrieren Sie zur Sicherstellung der Kompatibilität Ihre Anwendung zunächst zu einer der unterstützten Versionen von Java in der aktuellen Umgebung, und führen Sie anschließend die restlichen Schritte zur Migration aus. Achten Sie darauf, dass Sie die sich ergebende Konfiguration umfassend testen. Verwenden Sie für diese Tests das neueste stabile Release Ihrer Linux-Distribution.

Hinweis

Diese Überprüfung ist besonders wichtig, wenn Ihr aktueller Server auf einem nicht unterstützten JDK (z. B. Oracle JDK oder IBM OpenJ9) ausgeführt wird.

Melden Sie sich an Ihrem Produktionsserver an, und führen Sie den folgenden Befehl aus, um Ihre aktuelle Java-Version zu ermitteln:

java -version

Unterstützte Versionen von Java, Spring Boot und Spring Cloud sowie Anleitungen zum Aktualisieren finden Sie unter Vorbereiten einer Anwendung für die Bereitstellung in Azure Spring Apps.

Ermitteln von Spring Boot-Versionen

Überprüfen Sie die Abhängigkeiten der einzelnen Anwendungen, die migriert werden, um ihre Spring Boot-Version zu bestimmen.

Maven

Bei Maven-Projekten befindet sich die Spring Boot-Version in der Regel im <parent>-Element der POM-Datei:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
Gradle

Bei Gradle-Projekten befindet sich die Spring Boot-Version in der Regel im Abschnitt plugins als Version des Plug-Ins org.springframework.boot:

plugins {
  id 'org.springframework.boot' version '2.7.10'
  id 'io.spring.dependency-management' version '1.0.15.RELEASE'
  id 'java'
}

Gehen Sie bei Anwendungen, die Spring Boot 1.x verwenden, wie im Migrationshandbuch für Spring Boot 2.0 beschrieben vor, um sie auf eine unterstützte Spring Boot-Version zu aktualisieren. Unterstützte Versionen finden Sie im Abschnitt Spring Boot and Spring Cloud versions of Prepare an application for deployment in Azure Spring Apps.For supported versions, see the Spring Boot and Spring Cloud versions section of Prepare an application for deployment in Azure Spring Apps.

Ermitteln von Spring Cloud-Versionen

Überprüfen Sie die Abhängigkeiten der einzelnen Anwendungen, die Sie migrieren möchten, um jeweils die Version der verwendeten Spring Cloud-Komponenten zu ermitteln.

Maven

In Maven-Projekten wird die Spring Cloud-Version üblicherweise in der Eigenschaft spring-cloud.version festgelegt:

  <properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>2021.0.6</spring-cloud.version>
  </properties>
Gradle

In Gradle-Projekten wird die Spring Cloud-Version üblicherweise im Block mit den zusätzlichen Eigenschaften festgelegt:

ext {
  set('springCloudVersion', "2021.0.6")
}

Sie müssen alle Anwendungen aktualisieren, um unterstützte Versionen von Spring Cloud zu verwenden. Eine Liste der unterstützten Versionen finden Sie im Abschnitt spring Boot and Spring Cloud versions of Prepare an application for deployment in Azure Spring Apps.

Ermitteln von Protokollaggregationslösungen

Identifizieren Sie alle Protokollaggregationslösungen, die von den anwendungen verwendet werden, die Sie migrieren. Sie müssen diagnoseeinstellungen in der Migration konfigurieren, um protokollierte Ereignisse für den Verbrauch verfügbar zu machen. Weitere Informationen finden Sie im Abschnitt "Sicherstellen der Konsolenprotokollierung und Konfigurieren von Diagnoseeinstellungen" .

Ermitteln von APM-Agents (Application Performance Management, Anwendungsleistungsverwaltung)

Identifizieren Sie alle Anwendungsleistungsüberwachungs-Agents, die mit Ihren Anwendungen verwendet werden. Azure Spring Apps unterstützt die Integration in Application Insights, New Relic, Elastic APM, Dynatrace und AppDynamics. Wenn die Anwendung eine unterstützte APM verwendet, konfigurieren Sie die Integration in die Migration. Wenn die Anwendung keine unterstützte APM verwendet, sollten Sie stattdessen Application Insights verwenden. Weitere Informationen finden Sie im Abschnitt "Migration ".

Ermitteln von Zipkin-Abhängigkeiten

Bestimmen Sie, ob Ihre Anwendung Abhängigkeiten von Zipkin hat. Aktualisieren Sie die Anwendung stattdessen, um Application Insights zu verwenden. Weitere Informationen finden Sie im Abschnitt "Use Application Insights Java In-Process Agent" in Azure Spring Apps und im Abschnitt "Post-Migration ".

Bestand: Externe Ressourcen

Identifizieren Sie externe Ressourcen, z. B. Datenquellen, JMS-Nachrichtenbroker und URLs anderer Dienste. Bei Spring Cloud-Anwendungen befindet sich die Konfiguration für solche Ressourcen in der Regel an einem der folgenden Orte:

  • Im Ordner src/main/directory (üblicherweise in einer Datei namens application.properties oder application.yml)
  • Im Spring Cloud Config-Repository, das Sie im vorherigen Schritt identifiziert haben.

Datenbanken

Identifizieren Sie für jede SQL-Datenbank die Verbindungszeichenfolge.

Für eine Spring Boot-Anwendung werden Verbindungszeichenfolgen normalerweise in Konfigurationsdateien angezeigt.

Hier ist ein Beispiel aus der Datei application.properties angegeben:

spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

Hier ist ein Beispiel aus der Datei application.yaml angegeben:

spring:
  data:
    mongodb:
      uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017

Weitere mögliche Konfigurationsszenarien finden Sie in der Dokumentation zu Spring Data:

JMS-Nachrichtenbroker

Ermitteln Sie die verwendeten Broker, indem Sie sich im Buildmanifest (in der Regel eine Datei vom Typ pom.xml oder build.gradle) die relevanten Abhängigkeiten ansehen.

Bei einer Spring Boot-Anwendung, die ActiveMQ verwendet, ist diese Abhängigkeit beispielsweise in der Datei pom.xml enthalten:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

Spring Boot-Anwendungen mit kommerziellen Brokern enthalten in der Regel Abhängigkeiten direkt von den JMS-Treiberbibliotheken der Broker. Hier ist ein Beispiel aus der Datei build.gradle angegeben:

    dependencies {
      ...
      compile("com.ibm.mq:com.ibm.mq.allclient:9.0.4.0")
      ...
    }

Nachdem Sie den oder die verwendeten Broker ermittelt haben, können Sie nach den entsprechenden Einstellungen suchen. Bei Spring Cloud-Anwendungen befinden sich diese in der Regel im Anwendungsverzeichnis in den Dateien application.properties und application.yml oder im Spring Cloud Config-Serverrepository.

Hier ist ein ActiveMQ-Beispiel aus der Datei application.properties angegeben:

spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=tryandguess

Weitere Informationen zur ActiveMQ-Konfiguration finden Sie in der Dokumentation zu Spring Boot-Messaging.

Hier ist ein IBM MQ-Beispiel aus der Datei application.yaml angegeben:

ibm:
  mq:
    queueManager: qm1
    channel: dev.ORDERS
    connName: localhost(14)
    user: admin
    password: big$ecr3t

Weitere Informationen zur IBM MQ-Konfiguration finden Sie in der Dokumentation zu IBM MQ Spring-Komponenten.

Identifizieren von externen Caches

Ermitteln Sie alle verwendeten externen Caches. Redis wird häufig über Spring Data Redis verwendet. Informationen zur Konfiguration finden Sie in der Spring Data Redis-Dokumentation.

Ermitteln Sie, ob Sitzungsdaten über Spring Session zwischengespeichert werden. Suchen Sie dazu nach der entsprechenden Konfiguration (in Java oder XML).

Identitätsanbieter

Ermitteln Sie alle Identitätsanbieter und alle Spring Cloud-Anwendungen, für die eine Authentifizierung und/oder Autorisierung erforderlich ist. Informationen zum Konfigurieren von Identitätsanbietern finden Sie in den folgenden Ressourcen:

Über VMware Tanzu Application Service (TAS) (vormals Pivotal Cloud Foundry) konfigurierte Ressourcen

Bei Anwendungen, die mit TAS verwaltet werden, werden externe Ressourcen (einschließlich der weiter oben beschriebenen) häufig über TAS-Dienstbindungen konfiguriert. Verwenden Sie zum Untersuchen der Konfiguration solcher Ressourcen die TAS-Befehlszeilenschnittstelle (Cloud Foundry), um die Variable VCAP_SERVICES für die Anwendung anzuzeigen.

# Log into TAS, if needed (enter credentials when prompted)
cf login -a <API endpoint>

# Set the organization and space containing the application, if not already selected during login.
cf target org <organization name>
cf target space <space name>

# Display variables for the application
cf env <Application Name>

Überprüfen Sie die Variable VCAP_SERVICES auf Konfigurationseinstellungen von externen Diensten, die an die Anwendung gebunden sind. Weitere Informationen finden Sie in der Dokumentation zu TAS (Cloud Foundry).

Alle anderen externen Ressourcen

Es würde den Rahmen dieses Leitfadens sprengen, jede mögliche externe Abhängigkeit zu dokumentieren. Vergewissern Sie sich daher nach der Migration, dass alle externen Abhängigkeiten Ihrer Anwendung abgedeckt wurden.

Ermitteln des Bestands an Konfigurationsquellen und Geheimnissen

Ermitteln des Bestands an Kennwörtern und sicheren Zeichenfolgen

Überprüfen Sie alle Eigenschaften und Konfigurationsdateien sowie alle Umgebungsvariablen in den Produktionsbereitstellungen auf Geheimniszeichenfolgen und Kennwörter. Bei einer Spring Cloud-Anwendung befinden sich solche Zeichenfolgen in der Regel in der Datei application.properties oder application.yml individueller Dienste oder im Spring Cloud Config-Repository.

Inventarisieren von Zertifikaten

Dokumentieren Sie alle Zertifikate, die für öffentliche SSL-Endpunkte oder für die Kommunikation mit Back-End-Datenbanken und anderen Systemen verwendet werden. Sie können alle Zertifikate auf den Produktionsservern anzeigen, indem Sie den folgenden Befehl ausführen:

keytool -list -v -keystore <path to keystore>

Ermitteln, ob Spring Cloud Vault verwendet wird

Wenn Sie Spring Cloud Vault verwenden, um Geheimnisse zu speichern und darauf zuzugreifen, ermitteln Sie den zugrunde liegenden Geheimnisspeicher (HashiCorp Vault oder CredHub). Ermitteln Sie anschließend alle vom Anwendungscode verwendeten Geheimnisse.

Suchen der Konfigurationsserverquelle

Wenn Ihre Anwendung einen Spring Cloud Config-Server verwendet, ermitteln Sie den Speicherort der Konfiguration. Diese Einstellung befindet sich üblicherweise in der Datei bootstrap.yml oder bootstrap.properties, manchmal aber auch in der Datei application.yml oder application.properties. Die Einstellung sieht wie im folgenden Beispiel aus:

spring.cloud.config.server.git.uri: file://${user.home}/spring-cloud-config-repo

Als zugrunde liegender Datenspeicher von Spring Cloud Config wird zwar meist „git“ verwendet, es kann jedoch auch eines der anderen möglichen Back-Ends verwendet werden, wie weiter oben gezeigt. Informationen zu anderen Back-Ends wie relationale Datenbank (JDBC), SVN oder lokales Dateisystem finden Sie in der Dokumentation zu Spring Cloud Config.

Hinweis

Wenn Ihre Konfigurationsserverdaten lokal gespeichert werden, z. B. GitHub Enterprise, müssen Sie sie über ein Git-Repository für Azure Spring Apps verfügbar machen.

Untersuchen der Bereitstellungsarchitektur

Dokumentieren der Hardwareanforderungen für die einzelnen Dienste

Dokumentieren Sie für jeden der Spring Cloud-Dienste (mit Ausnahme des Konfigurationsservers, der Registrierung und des Gateways) die folgenden Informationen:

  • Anzahl ausgeführter Instanzen
  • Anzahl zugewiesener CPUs für die jeweilige Instanz
  • Zugewiesener Arbeitsspeicher für die jeweilige Instanz

Dokumentieren von Georeplikation/Verteilung

Ermitteln Sie, ob die Spring Cloud-Anwendungen derzeit auf mehrere Regionen oder Rechenzentren verteilt sind. Dokumentieren Sie die Betriebszeitanforderungen/SLA für die zu migrierenden Anwendungen.

Ermitteln von Clients, von denen die Dienstregistrierung umgangen wird

Ermitteln Sie alle Clientanwendungen, die einen der zu migrierenden Dienste aufrufen, ohne die Spring Cloud-Dienstregistrierung zu verwenden. Aufrufe dieser Art sind nach der Migration nicht mehr möglich. Aktualisieren Sie solche Clients vor der Migration für die Verwendung von Spring Cloud OpenFeign.

Migration

Entfernen eingeschränkter Konfigurationen

Suchen und entfernen Sie in den Diensten, die Sie migrieren, alle expliziten Zuordnungen der folgenden eingeschränkten Einstellungen. Diese Eigenschaften werden automatisch in Ihre Anwendungsumgebung eingefügt, um auf Config Server und Service Discovery zuzugreifen. Wenn sich diese Eigenschaften in Ihren Config Server-Anwendungsdateien befinden, treten möglicherweise Konflikte und unerwartetes Verhalten auf. Weitere Informationen finden Sie im Abschnitt "Einschränkung " des Abschnitts " Konfigurieren eines verwalteten Spring Cloud Config Server" in Azure Spring Apps

  • 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

Erstellen einer Azure Spring Apps-Instanz und -Apps

Stellen Sie eine Azure Spring Apps-Instanz in Ihrem Azure-Abonnement bereit. Stellen Sie dann für jeden zu migrierenden Dienst eine App bereit. Schließen Sie den Registrierungs- und den Konfigurationsserver von Spring Cloud nicht mit ein. Schließen Sie den Spring Cloud-Gatewaydienst ein. Anweisungen finden Sie in der Schnellstartanleitung: Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps.

Vorbereiten des Spring Cloud Config-Servers

Konfigurieren Sie den Konfigurationsserver in Ihrer Azure Spring Apps-Instanz. Weitere Informationen finden Sie unter Einrichten einer Spring Cloud-Konfigurationsserverinstanz für Ihren Dienst.

Hinweis

Wenn Sich Ihr aktuelles Spring Cloud Config-Repository im lokalen Dateisystem oder lokal befindet, müssen Sie zuerst Ihre Konfigurationsdateien in ein privates cloudbasiertes Repository migrieren oder replizieren, z. B. GitHub, Azure Repos oder BitBucket.

Sicherstellen der Konsolenprotokollierung und Konfigurieren von Diagnoseeinstellungen

Konfigurieren Sie Ihre Protokollierung so, dass alle Ausgaben nicht in Dateien, sondern an die Konsole weitergeleitet werden.

Nachdem eine Anwendung in Azure Spring Apps bereitgestellt wurde, fügen Sie eine Diagnoseeinstellung hinzu, um protokollierte Ereignisse für den Verbrauch verfügbar zu machen, z. B. über Azure Monitor Log Analytics.

LogStash/ELK-Stapel

Wenn Sie LogStash bzw. den ELK-Stapel für die Protokollaggregation verwenden, konfigurieren Sie die Diagnoseeinstellung so, dass die Konsolenausgabe an einen Azure Event Hub gestreamt wird. Verwenden Sie dann das Event Hub-Plug-In für LogStash, um protokollierte Ereignisse in LogStash zu erfassen.

Splunk

Wenn Sie Splunk für die Protokollaggregation verwenden, konfigurieren Sie die Diagnoseeinstellung so, dass die Konsolenausgabe an Azure Blob Storage gestreamt wird. Verwenden Sie dann das Splunk-Add-On für Microsoft Cloud Services, um protokollierte Ereignisse in Splunk zu erfassen.

Konfigurieren von persistentem Speicher

Wenn ein Teil Ihrer Anwendung aus dem lokalen Dateisystem liest oder in das lokale Dateisystem schreibt, müssen Sie beständigen Speicher konfigurieren, um das lokale Dateisystem zu ersetzen. Weitere Informationen finden Sie unter Verwenden des integrierten beständigen Speichers in Azure Spring Apps.

Temporäre Dateien sollten in das Verzeichnis /tmp geschrieben werden. Dieses Verzeichnis kann unabhängig vom Betriebssystem mithilfe von System.getProperty("java.io.tmpdir") abgerufen werden. Sie können temporäre Dateien auch mithilfe von java.nio.Files::createTempFile erstellen.

VMware Tanzu-Komponenten

In enterprise tier, Application Configuration Service for VMware Tanzu® is provided to support externalized configuration for your apps. Managed Spring Cloud Config Server ist auf Enterprise-Ebene nicht verfügbar und ist nur in der Standard- und Standardebene von Azure Spring Apps verfügbar.

Anwendungskonfigurationsdienst für Tanzu

Der Anwendungskonfigurationsdienst für Tanzu ist eine der kommerziellen VMware-Komponenten. Der Anwendungskonfigurationsdienst für Tanzu ist Kubernetes-native und unterscheidet sich von Spring Cloud Config Server. Der Anwendungskonfigurationsdienst für Tanzu ermöglicht die Verwaltung von Kubernetes-nativen ConfigMap-Ressourcen, die aus Eigenschaften mit Daten aufgefüllt werden, die in mindestens einem Git-Repository definiert sind.

Im Enterprise-Tarif gibt es keinen Spring Cloud Config Server, aber Sie können den Anwendungskonfigurationsdienst für Tanzu verwenden, um zentralisierte Konfigurationen zu verwalten. Weitere Informationen finden Sie unter Verwenden des Anwendungskonfigurationsdiensts für Tanzu.

Um den Anwendungskonfigurationsdienst für Tanzu zu verwenden, gehen Sie für jede Ihrer Apps wie folgt vor:

  1. Fügen Sie eine explizite App-Bindung hinzu, um zu deklarieren, dass Ihre App den Anwendungskonfigurationsdienst für Tanzu verwenden muss.

    Hinweis

    Wenn Sie den Bindungsstatus ändern, müssen Sie die App neu starten oder erneut bereitstellen, damit die Änderung wirksam wird.

  2. Legen Sie Konfigurationsmuster fest. Mit Konfigurationsdateimustern können Sie auswählen, welche Anwendung und welches Profil die App verwendet. Weitere Informationen finden Sie unter Verwenden des Anwendungskonfigurationsdiensts für Tanzu im Abschnitt Muster.

    Eine weitere Möglichkeit besteht darin, die Konfigurationsdateimuster gleichzeitig mit Ihrer App-Bereitstellung festzulegen, wie im folgenden Beispiel gezeigt:

    az spring app deploy \
        --name <app-name> \
        --artifact-path <path-to-your-JAR-file> \
        --config-file-pattern <config-file-pattern>
    

Der Anwendungskonfigurationsdienst für Tanzu wird auf Kubernetes ausgeführt. Um eine transparente lokale Entwicklungserfahrung zu ermöglichen, stellen wir die folgenden Vorschläge bereit.

  • Wenn Sie bereits über ein Git-Repository zum Speichern Ihrer externen Konfiguration verfügen, können Sie Spring Cloud Config Server lokal als zentrale Konfiguration für Ihre Anwendung einrichten. Nachdem Config Server gestartet wurde, klont es das Git-Repository und stellt den Repositoryinhalt über seinen Webcontroller bereit. Weitere Informationen finden Sie in der Spring Cloud Config in der Spring-Dokumentation. Dies spring-cloud-config-client ermöglicht es Ihrer Anwendung, die externe Konfiguration automatisch vom Konfigurationsserver aufzunehmen.

  • Wenn Sie nicht über ein Git-Repository verfügen oder konfigurationsserver nicht lokal einrichten möchten, können Sie die Konfigurationsdatei direkt in Ihrem Projekt verwenden. Es wird empfohlen, ein Profil zum Isolieren der Konfigurationsdatei zu verwenden, damit sie nur in Ihrer Entwicklungsumgebung verwendet wird. Verwenden Sie dev z. B. als Profil. Anschließend können Sie eine application-dev.yml Datei im Ordner "src/Standard/resource" erstellen, um die Konfiguration zu speichern. Um Ihre App für die Verwendung dieser Konfiguration zu verwenden, starten Sie die App lokal mit --spring.profiles.active=dev.

Tanzu Service Registry

VMware Tanzu® Service Registry ist eine der kommerziellen VMware Tanzu-Komponenten. Tanzu Service Registry stellt Ihre Enterprise-Tier-Apps mit einer Implementierung des Service Discovery-Musters bereit, einem der wichtigsten Tenets einer microservice-basierten Architektur. Ihre Apps können die Tanzu Service Registry verwenden, um registrierte Dienste dynamisch zu ermitteln und aufzurufen. Die Verwendung der Tanzu Service Registry ist vorzuziehen, um jeden Client eines Dienstes zu konfigurieren, der schwierig sein kann, oder eine Form der Zugriffskonvention zu übernehmen, die in der Produktion spröde sein kann. Weitere Informationen finden Sie unter Verwenden der Tanzu-Dienstregistrierung.

Migrieren von Spring Cloud Vault-Geheimnissen zu Azure Key Vault

Mithilfe von Spring Boot Starter für Azure Key Vault können Geheimnisse über Spring direkt in Anwendungen eingefügt werden. Weitere Informationen finden Sie unter Verwenden von Spring Boot Starter für Azure Key Vault.

Hinweis

Für die Migration müssen ggf. einige Geheimnisse umbenannt werden. Aktualisieren Sie Ihren Anwendungscode entsprechend.

Migrieren aller Zertifikate zu Key Vault

Azure Spring Apps bietet keinen Zugriff auf den JRE-Keystore. Daher müssen Sie Zertifikate zu Azure KeyVault migrieren und den Anwendungscode ändern, um auf Zertifikate in KeyVault zuzugreifen. Weitere Informationen finden Sie unter Erste Schritte mit Key Vault-Zertifikaten sowie unter Azure Key Vault-Zertifikat: Clientbibliothek für Java (Version 4.0.3).

Konfigurieren von APM-Integrationen (Application Performance Management)

Azure Spring Apps bietet die folgenden APM-Integrationen. Folgen Sie den Links, um das benötigte APM zu aktivieren:

Wenn Ihre Anwendung kein unterstütztes APM verwendet, sollten Sie stattdessen Application Insights verwenden. Azure Spring Apps bietet umfassende Integration in Application Insights für das Leistungsmanagement und die Echtzeitantwort auf Aberrationen.

Deaktivieren von Metrikclients und -endpunkten in Ihren Anwendungen

Entfernen Sie alle in Ihren Anwendungen verwendeten Metrikclients oder verfügbar gemachten Metrikendpunkte.

Bereitstellen der Dienste

Stellen Sie jede der migrierten Spring-Apps (nicht einschließlich der Spring Cloud Config- und Registrierungsserver) bereit, wie in der Schnellstartanleitung beschrieben: Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps.

Konfigurieren dienstspezifischer Geheimnisse und externalisierter Einstellungen

Dienstspezifische Konfigurationseinstellungen können den einzelnen Diensten als Umgebungsvariablen hinzugefügt werden. Führen Sie im Azure-Portal die folgenden Schritte aus:

  1. Navigieren Sie zur Azure Spring Apps-Instanz, und wählen Sie "Apps" aus.
  2. Wählen Sie den zu konfigurierenden Dienst aus.
  3. Wählen Sie Konfiguration aus.
  4. Geben Sie die zu konfigurierenden Variablen ein.
  5. Wählen Sie Speichern.

Spring Cloud App Configuration Settings

Migrieren und Aktivieren des Identitätsanbieters

Sollte für Spring Cloud-Anwendungen eine Authentifizierung oder Autorisierung erforderlich sein, stellen Sie sicher, dass sie für den Zugriff auf den Identitätsanbieter konfiguriert sind:

  • Wenn der Identitätsanbieter die Microsoft Entra-ID ist, sollten keine Änderungen erforderlich sein.
  • Wenn der Identitätsanbieter eine lokales Active Directory Gesamtstruktur ist, sollten Sie eine Hybrididentitätslösung mit Microsoft Entra ID implementieren. Entsprechende Informationen finden Sie in der Dokumentation zur Hybrididentität.
  • Wenn der Identitätsanbieter eine andere lokale Lösung ist, z. B. PingFederate, lesen Sie die benutzerdefinierte Installation von Microsoft Entra Verbinden Thema, um den Partnerverbund mit Microsoft Entra ID zu konfigurieren. Alternativ können Sie Spring Security nutzen, um Ihren Identitätsanbieter über OAuth2/OpenID Connect oder SAML zu verwenden.

Aktualisieren von Clientanwendungen

Aktualisieren Sie die Konfiguration aller Clientanwendungen, um die veröffentlichten Azure Spring Apps-Endpunkte für migrierte Anwendungen zu verwenden.

Nach der Migration

  • Fügen Sie ggf. eine Bereitstellungspipeline für automatische, konsistente Bereitstellungen hinzu. Eine entsprechende Anleitung steht für Azure Pipelines, für GitHub Actions und für Jenkins zur Verfügung.

  • Verwenden Sie ggf. Stagingbereitstellungen, um Codeänderungen in der Produktionsumgebung zu testen, bevor sie für einige oder alle Endbenutzer verfügbar werden. Weitere Informationen finden Sie unter Einrichten einer Stagingumgebung in Azure Spring Apps.

  • Fügen Sie ggf. Dienstbindungen hinzu, um Ihre Anwendung mit unterstützten Azure-Datenbanken zu verbinden. Bei Verwendung dieser Dienstbindungen müssten für Ihre Spring Cloud-Anwendungen keine Verbindungsinformationen mehr angegeben werden (auch keine Anmeldeinformationen).

  • Erwägen Sie die Verwendung Azure-App lication Insights, um die Leistung und Interaktionen Ihrer Anwendungen zu überwachen. Weitere Informationen finden Sie unter Application Insights: Java-In-Process-Agents in Azure Spring Apps.

  • Fügen Sie zur schnellen Erkennung und Behandlung von Anomalien ggf. Azure Monitor-Warnungsregeln und -Aktionsgruppen hinzu. Weitere Informationen finden Sie im Lernprogramm: Überwachen von Spring Cloud-Ressourcen mithilfe von Warnungen und Aktionsgruppen.

  • Erwägen Sie, die Azure Spring Apps-Bereitstellung in einer anderen Region für niedrigere Latenz und höhere Zuverlässigkeit und Fehlertoleranz zu replizieren. Verwenden Sie Azure Traffic Manager für den Lastenausgleich zwischen Bereitstellungen oder Azure Front Door, um SSL-Abladung und Web Application Firewall mit DDoS-Schutz hinzuzufügen.

  • Sollte keine Georeplikation benötigt werden, können Sie eine Azure Application Gateway-Instanz verwenden, um SSL-Abladung und Web Application Firewall mit DDoS-Schutz hinzuzufügen.

  • Falls von Ihren Anwendungen alte Spring Cloud-Netflix-Komponenten verwendet werden, empfiehlt es sich gegebenenfalls, diese durch aktuelle Alternativen zu ersetzen:

    Vorversion Aktuell
    Spring Cloud Eureka Spring Cloud Service Registry
    Spring Cloud Netflix Zuul Spring Cloud Gateway
    Spring Cloud Netflix Archaius Spring Cloud-Konfigurationsserver
    Spring Cloud Netflix Ribbon Spring Cloud Load Balancer (clientseitiger Lastenausgleich)
    Spring Cloud Hystrix Spring Cloud Circuit Breaker + Resilience4J
    Spring Cloud Netflix Turbine Micrometer + Prometheus