Freigeben über


Migrieren von Azure Spring Apps zu Azure Kubernetes Service

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für:✅ Basic/Standard ✅ Enterprise

Dieser Artikel enthält eine Übersicht über die Migration von Azure Spring Apps zu Azure Kubernetes Service (AKS).

Azure Spring Apps ist eine Plattform-as-a-Service-Lösung (PaaS), die speziell für Spring Boot-Anwendungen entwickelt wurde. Sie erleichtert die Bereitstellung, Ausführung und Verwaltung dieser Anwendungen. Azure Spring Apps kümmert sich um Infrastruktur, Skalierung und Überwachung, sodass Entwickler sich auf ihren Code konzentrieren können.

AKS ist ein Infrastructure-as-a-Service (IaaS)-Angebot, das eine vollständig verwaltete Kubernetes-Umgebung bereitstellt. AKS bietet Ihnen mehr Kontrolle darüber, wie Ihre Anwendungen bereitgestellt und verwaltet werden. Es unterstützt eine breite Palette von containerisierten Anwendungen und ermöglicht Anpassungen, um bestimmte Anforderungen zu erfüllen.

Das Migrieren von Anwendungen von Azure Spring Apps zu AKS bedeutet, von einer verwalteten Umgebung zu einer zu wechseln, die Ihnen mehr Flexibilität bietet. Dieser Prozess erfordert die Einführung neuer Tools und Methoden, um dieselben Ergebnisse auf AKS wie bei Azure Spring Apps zu erzielen.

Konzeptzuordnung

Da Azure Spring Apps und AKS unterschiedliche Arten von Clouddienstangeboten sind, ist es nicht ganz korrekt, Azure Spring Apps-Konzepte direkt AKS zuzuordnen. Außerdem hängt Azure Spring Apps von vielen internen Komponenten ab, die in Produktionsumgebungen verwendet werden, die hier nicht aufgeführt sind. Das folgende Diagramm und eine Tabelle bieten eine einfache Zuordnung von Konzepten von Azure Spring Apps zu AKS, die Ihnen helfen, die Grundlagen zu verstehen. In einer echten Produktionsumgebung sollten Sie sicherere und zuverlässigere Lösungen berücksichtigen.

Diagramm der Konzeptzuordnung zwischen Azure Spring Apps und Azure Kubernetes Service.

Azure Spring Apps-Dienst Azure Kubernetes Service (AKS)
Eine Dienstinstanz hostet und sichert eine Grenze für Apps und andere Ressourcen und unterstützt ein benutzerdefiniertes virtuelles Netzwerk. Ein Cluster ist die grundlegende Bereitstellungseinheit. Innerhalb eines Clusters ist ein Namespace eine virtuelle Unterteilung, die zum Organisieren und Isolieren von Ressourcen verwendet wird. Sie verwendet die gleiche zugrunde liegende Netzwerkinfrastruktur, die vom virtuellen Netzwerk des Clusters definiert wird. Die Auswahl zwischen einem dedizierten Cluster oder einem freigegebenen Cluster mit Namespaces hängt von Ihren geschäftlichen Anforderungen ab.
Eine App ist eine Geschäfts-App, die als untergeordnete Ressource innerhalb einer Dienstinstanz dient. Eine Geschäfts-App ist ein virtuelles Konzept in Azure Spring Apps und besteht aus mehreren Ressourcen in AKS. Ingress steuert den externen Zugriff auf Dienste und legt Regeln für das Routing des Datenverkehrs an verschiedene Dienste fest. Ein Dienst abstrahiert den Zugriff auf eine Gruppe von Pods. Sie können einen blau-grün-Bereitstellungswechsel ausführen, indem Sie einen Dienst aktualisieren, um auf eine andere Version einer Bereitstellung mithilfe von Bezeichnungen zu verweisen.
Eine Bereitstellung ist die Version einer App. Eine App kann über eine Produktionsbereitstellung und eine Stagingbereitstellung verfügen. Eine Bereitstellung verwaltet den Rollout und den Lebenszyklus einer bestimmten Anwendung oder eines bestimmten Diensts. Sie ermöglicht außerdem rollierende Updates und Rollbacks, wodurch kontrollierte, nahtlose Anwendungsänderungen ohne Ausfallzeiten möglich sind.
Eine Anwendungsinstanz ist die Mindestlaufzeiteinheit, die vom Dienst verwaltet wird. Ein Pod stellt einen oder mehrere eng gekoppelte Container dar und hostet eine einzelne Instanz einer ausgeführten Anwendung oder Workload.

Überlegungen zu Netzwerken

Vor der Bereitstellung eines AKS-Clusters ist es wichtig, die Netzwerkeinstellungen sorgfältig zu berücksichtigen. Diese Entscheidungen können sich erheblich auf die Leistung, Skalierbarkeit und Sicherheit Ihrer Anwendungen auswirken.

AKS basiert auf CNI-Plug-Ins (Container Networking Interface), um Netzwerke in seinen Clustern zu verwalten. Diese Plug-Ins verarbeiten wichtige Aufgaben wie das Zuweisen von IP-Adressen zu Pods, das Routing des Datenverkehrs zwischen ihnen und die Aktivierung der Kommunikation über Kubernetes Services. AKS unterstützt mehrere CNI-Plug-Ins, die auf unterschiedliche Netzwerkanforderungen zugeschnitten sind und Flexibilität im Clusterdesign bieten.

AKS bietet zwei primäre Netzwerkmodelle: Überlagerungsnetzwerke und flache Netzwerke. Überlagerungsnetzwerke weisen Pods private IP-Adressen zu, getrennt vom Azure Virtual Network-Subnetz der AKS-Knoten. Dieses Modell ist skalierbar und spart IP-Adressen für virtuelle Netzwerke, verwendet aber Netzwerkadressenübersetzung (Network Address Translation, NAT) für Datenverkehr, der das Cluster verlässt. Im Gegensatz dazu weisen flache Netzwerke Pod-IP-Adressen direkt aus demselben virtuellen Azure-Netzwerk-Subnetz wie die Knoten zu, sodass externe Dienste ohne NAT auf Pods zugreifen können. Während flache Netzwerke die direkte Pod-Kommunikation ermöglichen, benötigen sie einen umfangreicheren IP-Adressraum für virtuelle Netzwerke.

Eine ordnungsgemäße IP-Planung ist für einen reibungslosen AKS-Betrieb unerlässlich. Es ist wichtig, sicherzustellen, dass Subnetze über genügend IP-Adressen für alle Ressourcen verfügen, überlappende Bereiche vermeiden und Platz für zukünftiges Wachstum schaffen, um Konnektivitätsprobleme und Unterbrechungen zu verhindern. Weitere Informationen finden Sie unter Azure Kubernetes Service CNI-Netzwerkübersicht.

Um eingehenden Datenverkehr in AKS zu verarbeiten, können Sie Lastenausgleichsgeräte oder Eingangscontroller verwenden. Lastenausgleichsgeräte arbeiten auf Layer 4 und verteilen Datenverkehr basierend auf Protokollen und Ports, während Eingangscontroller bei Layer 7 arbeiten und erweiterte Features wie URL-basiertes Routing und TLS/SSL-Beendigung bieten. Eingangscontroller reduzieren den Bedarf an mehreren öffentlichen IPs, indem der Datenverkehr für mehrere Anwendungen über eine einzelne IP verwaltet wird. Bei Webanwendungen werden Eingangscontroller bevorzugt, da sie eine bessere Datenverkehrsverwaltung und Integration in Kubernetes-Ressourcen bieten. Weitere Informationen finden Sie unter Verwalten von NGINX-Eingang mit dem Anwendungsrouting-Add-On.

Um den Netzwerkdatenverkehr in AKS zu sichern, verwenden Sie Webanwendungsfirewalls (WAF) wie Azure Application Gateway, um vor Angriffen wie websiteübergreifendem Skripting und Cookie-Vergiftungen zu schützen, während Datenverkehrsrouting und TLS/SSL-Beendigung verwaltet werden. Implementieren Sie darüber hinaus Netzwerkrichtlinien zum Steuern der Pod-zu-Pod-Kommunikation, indem Sie Regeln in YAML-Manifesten basierend auf Bezeichnungen, Namespaces oder Ports definieren. Diese Richtlinien, die nur für Linux-basierte Knoten verfügbar sind, sorgen für eine bessere Datenverkehrskontrolle und -sicherheit innerhalb des Clusters. Weitere Informationen finden Sie unter Sicherer Datenverkehr zwischen Pods durch Netzwerkrichtlinien in AKS.

Bereitstellen

Um ein AKS-Cluster bereitzustellen, können Sie das Azure-Portal, die Azure CLI oder ARM-Vorlagen verwenden. Der Prozess umfasst in der Regel die Auswahl der gewünschten Region, das Definieren der Größe und des Typs des Knotenpools und die Auswahl des Netzwerkmodells – entweder Azure CNI oder Kubenet. Sie müssen auch Authentifizierungsoptionen konfigurieren, z. B. die Integration der Microsoft Entra ID für die Benutzerzugriffskontrolle. Zur Überwachung und Skalierung können Sie Azure Monitor aktivieren und die automatische Skalierung basierend auf der Ressourcennutzung konfigurieren. Nach der Bereitstellung können Sie das Cluster mithilfe von Kubectl oder der Azure CLI verwalten. Ausführliche Anweisungen zur Bereitstellung von AKS finden Sie unter Erstellen eines AKS-Clusters.

Zugriff und Identität

AKS bietet verschiedene Möglichkeiten zum Verwalten von Authentifizierung, Autorisierung und Zugriffssteuerung für Kubernetes-Cluster. Sie können die rollenbasierte Zugriffssteuerung von Kubernetes (RBAC) verwenden, um Benutzern, Gruppen und Dienstkonten nur Zugriff auf die benötigten Ressourcen zu gewähren. Weitere Informationen finden Sie unter Verwenden von RBAC-Autorisierung. AKS unterstützt außerdem Microsoft Entra ID und Azure RBAC zur Verbesserung der Sicherheit und Kontrolle, sodass Sie Berechtigungen auf optimierte Weise zuweisen und verwalten können.

Für die beste Sicherheit empfehlen wir die Integration von AKS mit Microsoft Entra ID. Diese Integration verwendet OpenID Connect- und OAuth 2.0-Protokolle für die Authentifizierung. Benutzer authentifizieren sich mithilfe von Microsoft Entra-Anmeldeinformationen bei der Interaktion mit dem AKS-Cluster mit ihren Zugriffsberechtigungen, die vom Clusteradministrator gesteuert werden. Weitere Informationen finden Sie unter Aktivieren der verwalteten Azure-Identitätsauthentifizierung für Kubernetes-Cluster mit kubelogin

Die Microsoft Entra Workload-ID integriert die systemeigenen Features von Kubernetes in externe Identitätsanbieter über den OpenID Connect (OIDC)-Partnerverbund. Sie verwendet die Volumenprojektion des Dienstkontotokens, um Kubernetes-Identitäten über kommentierte Dienstkonten zu Pods zuzuweisen. Mit diesen Token können Kubernetes-Anwendungen Azure-Ressourcen mithilfe der Microsoft Entra-ID sicher authentifizieren und darauf zugreifen. Dieses Setup funktioniert nahtlos mit Bibliotheken wie Azure Identity-Clientbibliotheken (Azure.Identity) oder der Microsoft-Authentifizierungsbibliothek (MSAL), um die Authentifizierung für Ihre Workloads zu optimieren. Informationen zum Einrichten eines Clusters und zum Konfigurieren Ihres Anwendungspods mit identifizierenden Workloads finden Sie unter Bereitstellen und Konfigurieren der Workloadidentität.

Containerisieren von Anwendungen

Die Containerisierung von Anwendungen in Containerimages ist für die Bereitstellung auf AKS unerlässlich. Dadurch wird sichergestellt, dass Bereitstellungen konsistent, portierbar und skalierbar sind. Die Verwendung von Containerimages bietet Flexibilität beim Verwalten verschiedener Versionen von Anwendungen. Es erleichtert Updates und Rollbacks und verbessert die Ressourceneffizienz, indem mehrere Container auf einem einzelnen Host ausgeführt werden können.

Azure Spring Apps hilft Benutzern, Containerimages zu erstellen und Anwendungen auf unterschiedliche Weise bereitzustellen. Sie können aus Quellcode, aus integrierten Artefakten wie JAR- oder WAR-Dateien oder direkt aus einem Containerimage bereitstellen. Informationen zum Bereitstellen aus einer JAR- oder WAR-Datei finden Sie unter Erstellen eines Containerimages aus einem JAR oder WAR. Informationen zum Bereitstellen aus dem Quellcode finden Sie unter Containerisieren einer Anwendung mithilfe von Paketo Buildpacks.

Um die Leistung von Anwendungen zu überwachen, die auf AKS bereitgestellt werden, können Sie den APM-Agent (Application Performance Monitoring) während des Containerisierungsprozesses integrieren. Weitere Informationen finden Sie unter Integrieren der Anwendungsleistungsüberwachung in Containerimages.

Bereitstellen von Anwendungen und Spring Cloud-Komponenten

Um Anwendungen in AKS bereitzustellen, können Sie Bereitstellungen verwenden, die von Azure Spring Apps oder StatefulSets abhängig von den Anforderungen Ihrer Anwendung verwendet werden. Bei zustandslosen Anwendungen wie Microservices würden Sie in der Regel eine Bereitstellung verwenden, die Replikate Ihrer Anwendung verwaltet und sicherstellt, dass sie reibungslos ausgeführt werden. Dieser Typ wird von Azure Spring Apps verwendet. Andererseits eignen sich StatefulSets ideal für Anwendungen, die beständigen Speicher oder stabile Identitäten erfordern, z. B. Datenbanken oder Dienste mit zustandsbehafteten Anforderungen.

Neben der Anwendungsbereitstellung müssen Sie auch einen Dienst definieren, um Ihre Back-End-Pods verfügbar zu machen. Ein Dienst ist eine Abstraktion, die es Ihnen ermöglicht, einen logischen Satz von Pods zu definieren und den Netzwerkzugriff darauf zu ermöglichen. Diese Funktion ist entscheidend für den Lastenausgleich und die Kommunikation zwischen Pods.

Bei der Bereitstellung von Spring Cloud-Komponenten wie Spring Cloud Config oder Spring Cloud Gateway würden Sie in der Regel Bereitstellungen für zustandslose Dienste verwenden. Für Back-End-Dienste, die einen stabilen Speicher oder Zustand benötigen, können Sie StatefulSets auswählen.

Die folgenden Links enthalten Referenzbeispiele für Containerimages und Manifestdateien für Spring Cloud Components:

Monitor

Die Überwachung ist ein wichtiger Bestandteil der Verwaltung von Anwendungen, die auf AKS bereitgestellt werden. AKS bietet eine Reihe von Tools zum Nachverfolgen und Analysieren des Status Ihres Clusters und Ihrer Workloads, einschließlich integrierter Lösungen wie Azure Monitor, Azure Log Analytics und Prometheus. Weitere Informationen finden Sie in den folgenden Artikeln:

Zusätzlich zu Azure Monitor und Prometheus können Sie auch andere Überwachungslösungen wie Datadog, New Relic oder Elastic Stack (ELK) verwenden. Sie können diese Tools in AKS integrieren, um Protokolle, Metriken und Ablaufverfolgungen zu sammeln, die verschiedene Einblicke in die Clusterleistung bieten.

Tutorial

Wir bieten ein Tutorial zur Veranschaulichung der End-to-End-Erfahrung beim Ausführen der ACME Fitness Store-Anwendung auf AKS. Weitere Informationen finden Sie unter acme-fitness-store/azure-kubernetes-service. Dieses Tutorial bietet praktische Anleitungen und ist als Referenz vorgesehen. AKS ist sehr flexibel, daher müssen Sie Konfigurationen und Anpassungen basierend auf Ihren spezifischen Anforderungen auswählen.