Udostępnij przez


Migrowanie usługi Spring Cloud Gateway for VMWare Tanzu do aplikacji bramy hostowanej samodzielnie w usłudze Azure Container Apps

Uwaga

Plany Podstawowy, Standardowy i Enterprise weszły w okres wycofania 17 marca 2025 r. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.

Ten artykuł dotyczy: ❎ Podstawowa/Standardowa ✅ Enterprise

W tym artykule pokazano, jak przeprowadzić migrację projektu Spring Cloud Gateway for VMWare Tanzu działającego w ramach planu usługi Azure Spring Apps Enterprise do własnego projektu oprogramowania typu open source (OSS) Spring Cloud Gateway działającego jako aplikacja usługi Azure Container Apps.

Wersja systemu operacyjnego Spring Cloud Gateway wymieniona na tej stronie jest udostępniana jako przykład do celów referencyjnych. Możesz wybrać inne dystrybucje usługi Spring Cloud Gateway na podstawie Twoich wymagań.

Uwaga

Funkcje oferowane przez Spring Cloud Gateway for VMWare Tanzu są bardziej rozbudowane niż funkcje w wersji OSS. Przed przejściem do środowiska produkcyjnego należy sprawdzić różnice i zapewnić zgodność.

Wymagania wstępne

Przygotowywanie kodu własnej aplikacji Spring Cloud Gateway

Aby uzyskać kod aplikacji Spring Cloud Gateway, wykonaj następujące kroki:

  1. Przejdź do strony https://start.spring.io.
  2. Zaktualizuj metadane projektu, ustawiając pole Grupa na nazwę organizacji. Zmień pola Artefakt i Nazwa na bramę.
  3. Dodaj zależności Reactive Gateway i Spring Boot Actuator.
  4. Pozostaw wartości domyślne pozostałych właściwości.
  5. Wybierz pozycję Generuj , aby pobrać projekt.
  6. Po pobraniu projektu wyodrębnij go.

Konfigurowanie aplikacji Spring Cloud Gateway

Po pobraniu aplikacji Spring Cloud Gateway skonfigurujesz ją w następnych sekcjach.

Konfigurowanie pliku właściwości aplikacji

Aby skonfigurować plik właściwości aplikacji, wykonaj następujące kroki:

  1. Przejdź do katalogu gateway/src/main/resources projektu.

  2. Zmień nazwę pliku application.properties na application.yml.

  3. Edytuj plik application.yml . Typowy jest następujący plik application.yml :

    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
    

Konfiguracja mechanizmu CORS

Aby przeprowadzić migrację konfiguracji współdzielenia zasobów między źródłami (CORS) w projekcie Spring Cloud Gateway dla VMWare Tanzu, zobacz Konfiguracja CORS dla globalnej konfiguracji CORS oraz konfiguracji tras CORS.

Skala

Podczas migracji do aplikacji Spring Cloud Gateway w usłudze Azure Container Apps zachowanie skalowania powinno być zgodne z modelem usługi Azure Container Apps. Liczba wystąpień w Spring Cloud Gateway for VMWare Tanzu jest odwzorowywana na min-replica i max-replica w usłudze Azure Container Apps. Automatyczne skalowanie aplikacji bramy można skonfigurować, definiując reguły skalowania. Aby uzyskać więcej informacji, zobacz Ustawianie reguł skalowania w usłudze Azure Container Apps.

Kombinacje procesora CPU i pamięci dostępne w usłudze Azure Spring Apps różnią się od kombinacji dostępnych w usłudze Azure Container Apps. Podczas mapowania alokacji zasobów upewnij się, że wybrane konfiguracje procesora CPU i pamięci w usłudze Azure Container Apps odpowiadają potrzebom wydajności i obsługiwanym opcjom.

Domeny niestandardowe i certyfikaty

Usługa Azure Container Apps obsługuje domeny niestandardowe i certyfikaty. Aby uzyskać więcej informacji na temat migrowania domen niestandardowych skonfigurowanych w usłudze Spring Cloud Gateway for VMWare Tanzu, zobacz Certyfikaty w usłudze Azure Container Apps.

Trasy

Można migrować trasy ze Spring Cloud Gateway for Tanzu do Spring Cloud Gateway, jak pokazano w przykładzie application.yml. Poniższa lista opisuje relację mapowania między trasami Spring Cloud Gateway for VMWare Tanzu a trasami Spring Cloud Gateway:

  • Właściwość name trasy jest mapowana na id.
  • Właściwości appName i protocol są mapowane na identyfikator URI trasy, który powinien być identyfikatorem URI dostępnym dla wystąpienia usługi Azure Container Apps. Upewnij się, że aplikacje usługi Azure Container Apps włączają ruch przychodzący.
  • Predykaty i filtry Spring Cloud Gateway for VMWare Tanzu są mapowane na predykaty i filtry Spring Cloud Gateway. Komercyjne predykaty i filtry nie są obsługiwane. Aby uzyskać więcej informacji, zobacz Filtry tras komercyjnych w usłudze Spring Cloud Gateway dla K8s.

Rozważmy na przykład następujący plik JSON konfiguracji trasy test-api.json, który definiuje test-api trasę w usłudze Spring Cloud Gateway dla VMWare Tanzu dla test aplikacji.

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

Następnie poniższy plik YAML przedstawia odpowiednią konfigurację trasy dla aplikacji Spring Cloud Gateway:

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

Usługa Spring Cloud Gateway dla programu VMWare Tanzu ustawia StripPrefix=1 domyślnie na każdej trasie. Aby przeprowadzić migrację do usługi Spring Cloud Gateway, należy jawnie ustawić StripPrefix=1 w konfiguracji filtru.

Aby umożliwić aplikacji Spring Cloud Gateway dostęp do innych aplikacji za pośrednictwem nazwy aplikacji, musisz włączyć ingres dla aplikacji w Azure Container App. Można również ustawić dostępną w pełni kwalifikowaną nazwę domeny (FQDN) aplikacji Azure Container Apps na identyfikator URI trasy, zgodnie z formatem https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.

Uwaga

Istnieją pewne komercyjne predykaty i filtry komercyjne, które nie są obsługiwane w usłudze Spring Cloud Gateway.

Pamięć podręczna odpowiedzi

Jeśli chcesz włączyć globalną pamięć podręczną odpowiedzi w Spring Cloud Gateway dla VMware Tanzu, użyj następującej konfiguracji w Spring Cloud Gateway. Aby uzyskać więcej informacji, zobacz Filtr lokalnej pamięci podręcznej odpowiedzi.

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

Jeśli włączysz pamięć podręczną odpowiedzi dla trasy, możesz użyć filtru LocalResponseCache w konfiguracji reguły routingu w zarządzanej bramie dla platformy Spring, korzystając z następującego przykładu:

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

Integracja z APM

Możesz włączyć monitorowanie wydajności aplikacji (APM) dla aplikacji Spring Cloud Gateway. Aby uzyskać więcej informacji, zobacz Integrowanie monitorowania wydajności aplikacji z obrazami kontenerów.

Wdrażanie w usłudze Azure Container Apps

Po zakończeniu konfiguracji usługi Spring Cloud Gateway skompiluj obraz przy użyciu usługi Azure Container Registry i wdróż go w usłudze Azure Container Apps.

Kompilowanie i wypychanie obrazu platformy Docker

Aby zbudować i wypchnąć obraz Docker, wykonaj następujące kroki:

  1. W katalogu projektu Spring Cloud Gateway utwórz plik Dockerfile z następującą zawartością:

    Uwaga

    Alternatywnie, użyj przykładowego pliku Dockerfile dla sklepu ACME Fitness.

    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. Użyj następujących poleceń, aby skompilować obraz bramy:

    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. Upewnij się, że obraz bramy został utworzony i pobierz tag obrazu, który używa następującego formatu: <azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT.

Wdrażanie obrazu w usłudze Azure Container Apps

Gdy obraz aplikacji bramy będzie gotowy, wdróż go jako aplikację usługi Azure Container Apps przy użyciu następującego polecenia. <container-image-of-gateway> Zastąp symbol zastępczy tagiem obrazu pobranym w poprzednim kroku.

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

Uzyskaj dostęp do FQDN aplikacji Spring Cloud Gateway, aby sprawdzić, czy działa.

Rozwiązywanie problemów

Jeśli wystąpią problemy podczas uruchamiania aplikacji Spring Cloud Gateway, możesz wyświetlać dzienniki aplikacji w czasie rzeczywistym oraz ich historię w usłudze Azure Container Apps. Aby uzyskać więcej informacji, zobacz Rejestrowanie aplikacji w usłudze Azure Container Apps.

Możesz również monitorować metryki aplikacji bramowej. Aby uzyskać więcej informacji, zobacz Monitorowanie metryk usługi Azure Container Apps.

Znane ograniczenie

Usługa OSS Spring Cloud Gateway nie obsługuje natywnie następujących funkcji komercyjnych:

  • Metadane używane do generowania dokumentacji interfejsu OpenAPI.
  • Funkcje logowania jednokrotnego.

Jeśli potrzebujesz tych funkcji, może być konieczne rozważenie innych rozwiązań komercyjnych, takich jak Spring Cloud Gateway for VMWare Tanzu.