Freigeben über


Migrieren von Spring Cloudgateway für VMWare Tanzu zu einer selbstgehosteten Gatewayanwendung in Azure Container Apps

Hinweis

Die Pläne "Basic", "Standard" und "Enterprise" sind am 17. März 2025 in einen Ruhestandszeitraum eingetreten. Weitere Informationen finden Sie in der Ankündigung zur Ausmusterung von Azure Spring Apps.

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

In diesem Artikel erfahren Sie, wie Sie ein Spring Cloudgateway für VMWare Tanzu-Projekt, das im Azure Spring Apps Enterprise-Plan ausgeführt wird, zu einem selbstgehosteten Spring Cloudgateway-Projekt (Open Source Software, OSS) migrieren, das als Azure Container Apps-Anwendung ausgeführt wird.

Die auf dieser Seite erwähnte OSS-Version von Spring Cloudgateway ist als Referenzbeispiel bereitgestellt. Sie können je nach Ihren Anforderungen andere Distributionen von Spring Cloudgateway auswählen.

Hinweis

Die Funktionen, die Spring Cloudgateway für VMWare Tanzu bietet, sind umfangreicher als die Funktionen in der OSS-Version. Achten Sie darauf, die Unterschiede zu untersuchen und die Kompatibilität sicherzustellen, bevor Sie zur Produktion übergehen.

Voraussetzungen

Vorbereiten des Codes der selbstgehosteten Spring Cloudgateway-Anwendung

Führen Sie die folgenden Schritte aus, um den Code der Spring Cloudgateway-Anwendung abzurufen:

  1. Navigiere zu https://start.spring.io.
  2. Aktualisieren Sie die Projektmetadaten, indem Sie das Feld Gruppe auf den Namen Ihrer Organisation festlegen. Ändern Sie die Felder Artefakt und Name in Gateway.
  3. Fügen Sie die Abhängigkeiten Reaktives Gateway und Spring Boot Actuator hinzu.
  4. Behalten Sie für die anderen Eigenschaften die Standardwerte bei.
  5. Wählen Sie Generieren aus, um das Projekt herunterzuladen.
  6. Nachdem das Projekt heruntergeladen wurde, extrahieren Sie es.

Konfigurieren der Spring Cloudgateway-Anwendung

Nachdem Sie die Spring Cloudgateway-Anwendung heruntergeladen haben, konfigurieren Sie sie in den nächsten Abschnitten.

Konfigurieren der die Anwendungseigenschaftsdatei

Führen Sie die folgenden Schritte aus, um die Datei mit den Anwendungseigenschaften zu konfigurieren:

  1. Navigieren Sie zum Verzeichnis gateway/src/main/resources des Projekts.

  2. Benennen Sie die Datei application.properties in application.yml um.

  3. Bearbeiten Sie die application.yml Datei. Die folgende application.yml Datei ist typisch:

    spring:
      application:
        name: gateway
      cloud:
        gateway:
          globalcors:
            corsConfigurations:
              '[/**]':
                allowedOriginPatterns: "*"
                allowedMethods:
                - GET
                - POST
                - PUT
                - DELETE
                allowedHeaders:
                - "*"
                allowCredentials: true
                maxAge: 3600
          routes:
          - id: front
            uri: http://front-app
            predicates:
            - Path=/**
            - Method=GET
            order: 1000
            filters:
            - StripPrefix=0
            tags:
            - front
    

CORS-Konfiguration

Informationen zum Migrieren der CORS-Konfiguration (Cross-Origin Resource Sharing) Ihres Spring Cloudgateway für VMWare Tanzu-Projekts finden Sie unter CORS-Konfiguration für die globale CORS-Konfiguration und Routen-CORS-Konfiguration.

Maßstab

Wenn Sie zu einer Spring Cloudgateway-Anwendung in Azure Container Apps migrieren, sollte das Skalierungsverhalten mit dem Azure Container Apps-Modell übereinstimmen. Die Instanzanzahl von Spring Cloudgateway für VMWare Tanzu wird Azure Container Apps min-replicaundmax-replica in Azure Container Apps zugeordnet. Sie können die automatische Skalierung für die Gatewayanwendung konfigurieren, indem Sie Skalierungsregeln definieren. Weitere Informationen finden Sie unter Festlegen von Skalierungsregeln in Azure Container Apps.

Die in Azure Spring Apps verfügbaren CPU- und Arbeitsspeicherkombinationen unterscheiden sich von den in Azure Container Apps verfügbaren Kombinationen. Stellen Sie beim Zuordnen von Ressourcenzuordnungen sicher, dass die ausgewählten CPU- und Arbeitsspeicherkonfigurationen in Azure Container Apps sowohl Ihren Leistungsanforderungen als auch den unterstützten Optionen entsprechen.

Benutzerdefinierte Domänen & Zertifikate

Azure Container Apps unterstützt benutzerdefinierte Domänen & Zertifikate. Weitere Informationen zum Migrieren von benutzerdefinierten Domänen, die auf Spring Cloudgateway für VMWare Tanzu konfiguriert sind, finden Sie unter Zertifikate in Azure Container Apps.

Routen

Sie können die Routen in Spring Cloudgateway for Tanzu zu Spring Cloudgateway migrieren, wie das application.yml Beispiel zeigt. In der folgenden Liste wird die Zuordnungsbeziehung zwischen den Routen von Spring Cloudgateway für VMWare Tanzu und den Routen von Spring Cloudgateway beschrieben:

  • Die name Eigenschaft der Route wird auf idabgebildet.
  • Die appName und protocol Eigenschaften werden dem URI der Route zugeordnet, bei dem es sich um den barrierefreien URI für die Azure Container Apps-Instanz handeln sollte. Stellen Sie sicher, dass die Azure Container Apps-Anwendungen den Eingang aktivieren.
  • Prädikate und Filter von Spring Cloudgateway für VMWare Tanzu werden Prädikaten und Filtern von Spring Cloudgateway zugeordnet. Kommerzielle Prädikate und Filter werden nicht unterstützt. Weitere Informationen finden Sie unter Kommerzielle Routenfilter in Spring Cloudgateway für K8s.

Betrachten Sie als Beispiel die folgende JSON-Datei für die Routenkonfiguration, test-api.json, die die test-api Route in Spring Cloudgateway für VMWare Tanzu für die test App definiert:

{
  "protocol": "HTTP",
  "routes": [
    {
      "title": "Test API",
      "predicates": [
        "Path=/test/api/healthcheck",
        "Method=GET"
      ],
      "filters": [
        "AddRequestHeader=X-Request-red, blue"
      ]
    }
  ]
}

Anschließend zeigt die folgende YAML-Datei die entsprechende Routenkonfiguration für die Spring Cloudgateway-Anwendung an:

spring:
  cloud:
    gateway:
      routes:
      - id: test-api
        uri: http://test
        predicates:
        - Path=/test/api/healthcheck
        - Method=GET
        filters:
        - AddRequestHeader=X-Request-red, blue
        - StripPrefix=1

Spring Cloudgateway für VMWare Tanzu setzt StripPrefix=1 standardmäßig auf jeder Route fest. Um zu Spring Cloudgateway zu migrieren, müssen Sie StripPrefix=1 in der Filterkonfiguration explizit festlegen.

Damit Ihre Spring Cloudgateway-Anwendung über den App-Namen auf andere Anwendungen zugreifen kann, müssen Sie den Eingang für Ihre Azure Container App-Anwendungen aktivieren. Sie können auch den zugänglichen vollqualifizierten Domänennamen (FQDN) der Azure Container Apps-Anwendung als URI der Route festlegen, indem Sie dem Format https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io folgen.

Hinweis

Es gibt einige kommerzielle Prädikate und kommerzielle Filter, die von Spring Cloudgateway nicht unterstützt werden.

Antwortcache

Wenn Sie den Antwort-Cache global in Spring Cloudgateway für VMWare Tanzu aktivieren, verwenden Sie die folgende Konfiguration in Spring Cloudgateway. Weitere Informationen finden Sie unter Der lokale Antwortcachefilter.

spring:
  cloud:
    gateway:
      filter:
        local-response-cache:
          enabled: true
          time-to-live: <response-cache-ttl>
          size: <response-cache-size>

Wenn Sie den Antwortcache für die Route aktivieren, können Sie den LocalResponseCache Filter in der Routingregelkonfiguration des verwalteten Gateways für Spring verwenden, indem Sie das folgende Beispiel verwenden:

spring:
  cloud:
    gateway:
      routes:
      - id: test-api
        uri: http://test
        predicates:
        - Path=/resource
        filters:
        - LocalResponseCache=30m,500MB

Integrieren mit APM

Sie können die Anwendungsleistungsüberwachung (Application Performance Monitoring, APM) für Ihre Spring Cloudgateway-Anwendung aktivieren. Weitere Informationen finden Sie unter Integrieren der Anwendungsleistungsüberwachung in Containerimages.

Bereitstellen von Azure Container Apps

Nachdem die Spring Cloudgateway-Konfiguration bereit ist, erstellen Sie das Image mit Azure Container Registry, und stellen Sie es in Azure Container Apps bereit.

Erstellen und Pushen des Docker-Images

Führen Sie die folgenden Schritte aus, um das Docker-Image zu erstellen und zu pushen:

  1. Erstellen Sie im Spring Cloudgateway-Projektverzeichnis eine Dockerfile mit folgendem Inhalt:

    Hinweis

    Alternativ können Sie die Dockerfile-Stichprobendatei für den ACME Fitness Store verwenden.

    FROM mcr.microsoft.com/openjdk/jdk:17-mariner as build
    WORKDIR /staging
    # Install gradle
    RUN tdnf install -y wget unzip
    
    RUN wget https://services.gradle.org/distributions/gradle-8.8-bin.zip && \
        unzip -d /opt/gradle gradle-8.8-bin.zip && \
        chmod +x /opt/gradle/gradle-8.8/bin/gradle
    
    ENV GRADLE_HOME=/opt/gradle/gradle-8.8
    ENV PATH=$PATH:$GRADLE_HOME/bin
    
    COPY . .
    
    # Compile with gradle
    RUN gradle build -x test
    
    FROM mcr.microsoft.com/openjdk/jdk:17-mariner as runtime
    
    WORKDIR /app
    
    COPY --from=build /staging/build/libs/gateway-0.0.1-SNAPSHOT.jar .
    
    ENTRYPOINT ["java", "-jar", "gateway-0.0.1-SNAPSHOT.jar"]
    
  2. Führen Sie die folgenden Befehle zum Erstellen des Images aus:

    az acr login --name <azure-container-registry-name>
    az acr build \
        --resource-group <resource-group-name> \
        --image gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT \
        --registry <azure-container-registry-name> \
        --file Dockerfile .
    
  3. Stellen Sie sicher, dass das Gateway-Image erstellt wurde, und rufen Sie das Image-Tag ab, das das folgende Format <azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOTverwendet:.

Bereitstellen des Images in Azure Container Apps

Nachdem Ihr Gatewayanwendungsimage bereit ist, stellen Sie es mit dem folgenden Befehl als Azure Container Apps-Anwendung bereit. Ersetzen Sie den <container-image-of-gateway> Platzhalter durch das Image-Tag, das Sie im vorherigen Schritt abgerufen haben.

az containerapp up \
    --resource-group <resource-group-name> \
    --name gateway \
    --environment <azure-container-app-environment-name> \
    --image <container-image-of-gateway> \
    --target-port 8080 \
    --ingress external

Greifen Sie auf den FQDN der Spring Cloudgateway-Anwendung zu, um zu überprüfen, ob sie ausgeführt wird.

Problembehandlung

Wenn beim Ausführen der Spring Cloudgateway-Anwendung Probleme auftreten, können Sie Echtzeit- und Verlaufsprotokolle der gateway Anwendung in Azure Container Apps anzeigen. Weitere Informationen finden Sie unter Anwendungsprotokollierung in Azure-Container-Apps.

Sie können auch die Metriken einer Gateway-Anwendung überwachen. Weitere Informationen finden Sie unter Überwachen von Azure Container Apps-Metriken.

Bekannte Einschränkung

Das OSS Spring Cloudgateway unterstützt die folgenden kommerziellen Funktionen nicht nativ:

  • Metadaten, die zum Generieren von OpenAPI-Dokumentation verwendet werden.
  • Single Sign-On-Funktionalität (SSO).

Wenn Sie diese Funktionen benötigen, müssen Sie möglicherweise andere kommerzielle Lösungen in Betracht ziehen, z. B. Spring Cloudgateway für VMWare Tanzu.