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:
- Informationen zur OAuth2-Konfiguration finden Sie in der Schnellstartanleitung für Spring Cloud Security.
- Informationen zur Auth0-Spring Security-Konfiguration finden Sie in der Auth0-Spring Security-Dokumentation.
- Informationen zur PingFederate-Spring Security-Konfiguration finden Sie in der Auth0-PingFederate-Anleitung.
Ü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:
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.
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:
- Application Insights Java In-Process-Agent
- Elastic APM Java Agent
- Dynatrace Java OneAgent
- AppDynamics-Java-Agent
- New Relic Java-Agent
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:
- Navigieren Sie zur Azure Spring Apps-Instanz, und wählen Sie "Apps" aus.
- Wählen Sie den zu konfigurierenden Dienst aus.
- Wählen Sie Konfiguration aus.
- Geben Sie die zu konfigurierenden Variablen ein.
- Wählen Sie Speichern.
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