Udostępnij za pośrednictwem


Migrowanie aplikacji Spring Cloud do usługi Azure Container Apps

W tym przewodniku opisano, co należy wiedzieć, kiedy chcesz przeprowadzić migrację istniejącej aplikacji Spring Cloud do uruchamiania w usłudze Azure Container Apps.

Przed migracją

Aby zapewnić pomyślną migrację, przed rozpoczęciem wykonaj kroki oceny i spisu opisane w poniższych sekcjach.

Jeśli nie możesz spełnić żadnego z tych wymagań przed migracją, zapoznaj się z następującymi przewodnikami po migracji towarzyszącej:

  • Migrowanie wykonywalnych aplikacji JAR do kontenerów w usłudze Azure Kubernetes Service (zaplanowane wskazówki)
  • Migrowanie wykonywalnych aplikacji JAR do usługi Azure Virtual Machines (zaplanowane wskazówki)

Sprawdzanie składników aplikacji

Określanie, czy i jak jest używany system plików

Znajdź wszystkie wystąpienia, w których usługi zapisują dane i/lub odczytują z lokalnego systemu plików. Określ, gdzie pliki krótkoterminowe/tymczasowe są zapisywane i odczytywane oraz gdzie pliki długoterminowe są zapisywane i odczytywane.

Usługa Azure Container Apps oferuje kilka typów magazynu. Magazyn efemeryczny może odczytywać i zapisywać dane tymczasowe i być dostępne dla uruchomionego kontenera lub repliki. Usługa Azure File zapewnia stały magazyn i może być współużytkowany w wielu kontenerach. Aby uzyskać więcej informacji, zobacz Używanie instalacji magazynu w usłudze Azure Container Apps.

Zawartość statyczna tylko do odczytu

Jeśli aplikacja aktualnie obsługuje zawartość statyczną, potrzebujesz dla niej alternatywnej lokalizacji. Warto rozważyć przeniesienie zawartości statycznej do usługi Azure Blob Storage i dodanie usługi Azure CDN w celu uzyskania błyskawicznych pobrań na całym świecie. Aby uzyskać więcej informacji, zobacz Hostowanie statycznej witryny internetowej w usłudze Azure Storage i Szybki start: integrowanie konta usługi Azure Storage z usługą Azure CDN.

Dynamicznie publikowana zawartość statyczna

Jeśli aplikacja obsługuje zawartość statyczną, niezależnie od tego, czy została przekazana, czy wygenerowana przez samą aplikację, pozostaje niezmieniona po jej utworzeniu, możesz zintegrować usługę Azure Blob Storage i usługę Azure CDN. Za pomocą funkcji platformy Azure można również zarządzać przekazywaniem i wyzwalać odświeżanie usługi CDN w razie potrzeby. Udostępniliśmy przykładową implementację do użycia w temacie Przekazywanie zawartości statycznej i jej wstępne ładowanie w usłudze CDN za pomocą usługi Azure Functions.

Ustal, czy którakolwiek z usług zawiera kod specyficzny dla systemu operacyjnego

Jeśli aplikacja zawiera jakikolwiek kod z zależnościami systemu operacyjnego hosta, należy go refaktoryzować, aby usunąć te zależności. Na przykład może być konieczne zastąpienie dowolnego użycia ścieżki / systemu plików lub \ w ścieżkach File.Separator systemu plików lub Paths.get jeśli aplikacja jest uruchomiona w systemie Windows.

Przełączanie na obsługiwaną platformę

Jeśli tworzysz plik Dockerfile ręcznie i wdrażasz konteneryzowaną aplikację w usłudze Azure Container Apps, przejmiesz pełną kontrolę nad wdrożeniem, w tym wersjami środowiska JRE/JDK.

W przypadku wdrażania z artefaktów usługa Azure Container Apps oferuje również określone wersje języka Java (8, 11, 17 i 21) oraz określone wersje składników Spring Boot i Spring Cloud. Aby zapewnić zgodność, najpierw przeprowadź migrację aplikacji do jednej z obsługiwanych wersji języka Java w bieżącym środowisku, a następnie wykonaj pozostałe kroki migracji. Pamiętaj, aby w pełni przetestować konfigurację wynikową. W tych testach użyj najnowszej stabilnej wersji dystrybucji systemu Linux.

Uwaga

Ta weryfikacja jest szczególnie ważna, jeśli bieżący serwer działa na nieobsługiwanym zestawie JDK (na przykład Oracle JDK lub IBM OpenJ9).

Aby uzyskać informacje na temat bieżącej wersji języka Java, zaloguj się na serwerze produkcyjnym i uruchom następujące polecenie:

java -version

Aby uzyskać obsługiwane wersje języków Java, Spring Boot i Spring Cloud, a także instrukcje dotyczące aktualizowania, zobacz Omówienie języka Java w usłudze Azure Container Apps.

Identyfikowanie wersji platformy Spring Boot

Sprawdź zależności każdej migrowanej aplikacji, aby określić jej wersję spring boot.

Maven

W projektach Maven wersja Spring Boot jest zwykle znajdowana w <parent> elemplecie pliku POM:

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

W projektach narzędzia Gradle wersja platformy Spring Boot będzie zwykle znajdowana w plugins sekcji jako wersja org.springframework.boot wtyczki:

plugins {
  id 'org.springframework.boot' version '3.3.3'
  id 'io.spring.dependency-management' version '1.1.6'
  id 'java'
}

W przypadku wszystkich aplikacji korzystających z wersji Spring Boot wcześniejszych niż 3.x postępuj zgodnie z przewodnikiem migracji spring boot 2.0 lub Przewodnik migracji spring Boot 3.0, aby zaktualizować je do obsługiwanej wersji spring boot. Aby uzyskać obsługiwane wersje, zobacz dokumentację platformy Spring Cloud .

Identyfikowanie wersji platformy Spring Cloud

Sprawdź zależności każdej migrowania aplikacji, aby określić wersję używanych składników platformy Spring Cloud.

Maven

W projektach Maven wersja platformy Spring Cloud jest zwykle ustawiana we spring-cloud.version właściwości :

  <properties>
    <spring-cloud.version>2023.0.2</spring-cloud.version>
  </properties>
Gradle

W projektach Gradle wersja spring Cloud jest zwykle ustawiana w bloku "dodatkowe właściwości":

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

Należy zaktualizować wszystkie aplikacje, aby korzystały z obsługiwanych wersji usługi Spring Cloud. Aby uzyskać obsługiwane wersje, zobacz dokumentację platformy Spring Cloud .

Identyfikowanie rozwiązań agregacji dzienników

Zidentyfikuj wszelkie rozwiązania agregacji dzienników używane przez migrowane aplikacje. Należy skonfigurować ustawienia diagnostyczne w migracji, aby umożliwić udostępnianie zarejestrowanych zdarzeń do użycia. Aby uzyskać więcej informacji, zobacz sekcję Zapewnianie rejestrowania konsoli i konfigurowania ustawień diagnostycznych.

Identyfikowanie agentów zarządzania wydajnością aplikacji (APM)

Zidentyfikuj wszystkich agentów zarządzania wydajnością aplikacji używanych przez aplikacje. Usługa Azure Containers Apps nie oferuje wbudowanej obsługi integracji APM. Musisz przygotować obraz kontenera lub zintegrować narzędzie APM bezpośrednio z kodem. Jeśli chcesz zmierzyć wydajność aplikacji, ale jeszcze nie zintegrować żadnej aplikacji APM, rozważ użycie aplikacja systemu Azure Insights. Aby uzyskać więcej informacji, zobacz sekcję Migracja.

Utworzenie spisu zasobów zewnętrznych

Zidentyfikuj zasoby zewnętrzne, takie jak źródła danych, brokery komunikatów JMS i adresy URL innych usług. W aplikacjach Spring Cloud zwykle można znaleźć konfigurację takich zasobów w jednej z następujących lokalizacji:

  • W folderze src/main/resources w pliku zwykle nazywanym application.properties lub application.yml.
  • W repozytorium Spring Cloud Config Server, które zidentyfikowano w poprzednim kroku.

Bazy danych

W przypadku aplikacji Spring Boot parametry połączenia zwykle pojawiają się w plikach konfiguracji, gdy zależy od zewnętrznej bazy danych. Oto przykład z pliku application.properties:

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

Oto przykład z pliku application.yaml:

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

Aby uzyskać więcej możliwych scenariuszy konfiguracji, zobacz dokumentację rozwiązania Spring Data:

Brokerzy komunikatów JMS

Zidentyfikuj używany broker lub brokerów, wyszukując w manifeście kompilacji (zazwyczaj plik pom.xml lub build.gradle ) dla odpowiednich zależności.

Na przykład aplikacja Spring Boot korzystająca z usługi ActiveMQ zwykle zawiera tę zależność w pliku pom.xml :

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

Aplikacje Spring Boot korzystające z brokerów komercyjnych zwykle zawierają zależności bezpośrednio od bibliotek sterowników JMS brokera. Oto przykład z pliku build.gradle:

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

Po zidentyfikowaniu używanego brokera lub brokera znajdź odpowiednie ustawienia. W aplikacjach Spring Cloud zazwyczaj można je znaleźć w plikach application.properties i application.yml w katalogu aplikacji lub w repozytorium Spring Cloud Config Server.

Uwaga

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze, taki jak bazy danych, pamięci podręczne, komunikaty lub usługi sztucznej inteligencji, wymaga bardzo wysokiego stopnia zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Użyj tego przepływu tylko wtedy, gdy bardziej bezpieczne opcje, takie jak tożsamości zarządzane dla połączeń bez hasła lub bez kluczy, nie są opłacalne. W przypadku operacji maszyny lokalnej preferuj tożsamości użytkowników dla połączeń bez hasła lub bez klucza.

Oto przykład activeMQ z pliku application.properties :

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

Aby uzyskać więcej informacji na temat konfiguracji usługi ActiveMQ, zobacz dokumentację obsługi komunikatów spring boot.

Oto przykład ibm MQ z pliku application.yaml :

ibm:
  mq:
    queueManager: qm1
    channel: dev.ORDERS
    connName: localhost(14)
    user: admin
    password: <password>

Aby uzyskać więcej informacji na temat konfiguracji ibm MQ, zobacz dokumentację składników ibm MQ Spring.

Identyfikowanie zewnętrznych pamięci podręcznych

Zidentyfikuj używane zewnętrzne pamięci podręczne. Często usługa Redis jest używana za pośrednictwem usługi Spring Data Redis. Informacje o konfiguracji można znaleźć w dokumentacji usługi Spring Data Redis .

Ustal, czy dane sesji są buforowane za pośrednictwem sesji Spring, wyszukując odpowiednią konfigurację (w języku Java lub XML).

Dostawcy tożsamości

Zidentyfikuj wszystkich dostawców tożsamości i wszystkie aplikacje Spring Cloud, które wymagają uwierzytelniania i/lub autoryzacji. Aby uzyskać informacje na temat sposobu konfigurowania dostawców tożsamości, zobacz następujące zasoby:

  • Aby uzyskać informacje o konfiguracji protokołu OAuth2, zobacz przewodnik Szybki start dotyczący usługi Spring Cloud Security.
  • Aby uzyskać informacje na temat konfiguracji Auth0 Spring Security, zobacz dokumentację Auth0 Spring Security.
  • Aby uzyskać informacje o konfiguracji usługi PingFederate Spring Security, zobacz instrukcje Auth0 PingFederate.

Zasoby skonfigurowane za pomocą usługi VMware Tanzu Application Service (TAS) (dawniej Pivotal Cloud Foundry)

W przypadku aplikacji zarządzanych za pomocą usługi TAS zasoby zewnętrzne, w tym opisane wcześniej zasoby, są często konfigurowane za pośrednictwem powiązań usługi TAS. Aby sprawdzić konfigurację takich zasobów, użyj interfejsu wiersza polecenia TAS (Cloud Foundry), aby wyświetlić zmienną VCAP_SERVICES dla aplikacji.

# 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>

Sprawdź zmienną VCAP_SERVICES ustawień konfiguracji usług zewnętrznych powiązanych z aplikacją. Aby uzyskać więcej informacji, zobacz dokumentację usługi TAS (Cloud Foundry).

Wszystkie inne zasoby zewnętrzne

W tym przewodniku nie można udokumentować każdej możliwej zależności zewnętrznej. Po zakończeniu migracji należy sprawdzić, czy można spełnić wszystkie zależności zewnętrzne aplikacji.

Spis źródeł konfiguracji i wpisów tajnych

Hasła spisu i bezpieczne ciągi

Sprawdź wszystkie właściwości i pliki konfiguracji oraz wszystkie zmienne środowiskowe we wdrożeniach produkcyjnych pod kątem dowolnych ciągów tajnych i haseł. W aplikacji Spring Cloud zazwyczaj można znaleźć takie ciągi w pliku application.properties lub application.yml w poszczególnych usługach lub w repozytorium Spring Cloud Config Server.

Certyfikaty spisu

Udokumentuj wszystkie certyfikaty używane w przypadku publicznych punktów końcowych protokołu SSL lub komunikacji z bazami danych zaplecza i innymi systemami. Wszystkie certyfikaty na serwerach produkcyjnych można wyświetlić, uruchamiając następujące polecenie:

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

Określanie, czy jest używana usługa Spring Cloud Vault

Jeśli używasz usługi Spring Cloud Vault do przechowywania sekretów i uzyskiwania do nich dostępu, zidentyfikuj magazyn tajemnic zapewniający dostęp – na przykład HashiCorp Vault lub CredHub. Następnie zidentyfikuj wszystkie wpisy tajne używane przez kod aplikacji.

Lokalizowanie źródła serwera konfiguracji

Jeśli aplikacja używa serwera konfiguracji Spring Cloud, zidentyfikuj miejsce przechowywania konfiguracji. To ustawienie zazwyczaj można znaleźć w pliku bootstrap.yml lub bootstrap.properties , a czasami w pliku application.yml lub application.properties . Ustawienie wygląda jak w poniższym przykładzie:

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

Chociaż usługa Git jest najczęściej używana jako magazyn danych zapasowych serwera Spring Cloud Config Server, jak pokazano wcześniej, może być używana jedna z innych możliwych zapleczy. Zapoznaj się z dokumentacją serwera Spring Cloud Config Server, aby uzyskać informacje na temat innych zapleczy, takich jak Relacyjna baza danych (JDBC), SVN i lokalny system plików.

Sprawdzanie architektury wdrażania

Dokumentowanie wymagań sprzętowych dla każdej usługi

Dla każdej usługi Spring Cloud (nie w tym serwera konfiguracji, rejestru lub bramy) należy udokumentować następujące informacje:

  • Liczba uruchomionych wystąpień.
  • Liczba procesorów CPU przydzielonych do każdego wystąpienia.
  • Ilość pamięci RAM przydzielonej do każdego wystąpienia.

Dokument dotyczący replikacji geograficznej/dystrybucji

Ustal, czy aplikacje Spring Cloud są obecnie dystrybuowane między kilkoma regionami lub centrami danych. Udokumentowanie wymagań dotyczących czasu pracy/umowy SLA dla migrujących aplikacji.

Identyfikowanie klientów, którzy pomijają rejestr usług

Zidentyfikuj wszystkie aplikacje klienckie, które wywołują dowolną z usług, które mają zostać zmigrowane bez korzystania z rejestru Spring Cloud Service Registry. Po migracji takie wywołania nie będą już możliwe. Zaktualizuj takich klientów, aby używali rozwiązania Spring Cloud OpenFeign przed migracją.

Migracja

Usuwanie konfiguracji z ograniczeniami

Środowisko usługi Azure Container Apps oferuje zarządzany serwer Eureka, serwer Spring Cloud Config Server i administrator. Gdy aplikacja jest powiązana ze składnikiem Java, usługa Azure Container Apps wprowadza powiązane właściwości jako zmienne środowiskowe systemu. Zgodnie z projektem Spring Boot Externalized Configuration właściwości aplikacji zdefiniowane w kodzie lub spakowane w artefaktach są zastępowane przez systemowe zmienne środowiskowe.

Jeśli ustawisz jedną z następujących właściwości za pomocą argumentu wiersza polecenia, właściwości systemu Java lub zmiennej środowiskowej kontenera, musisz go usunąć, aby uniknąć konfliktów i nieoczekiwanego zachowania:

  • SPRING_CLOUD_CONFIG_COMPONENT_URI
  • SPRING_CLOUD_CONFIG_URI
  • SPRING_CONFIG_IMPORT
  • eureka.client.fetch-registry
  • eureka.client.service-url.defaultZone
  • eureka.instance.prefer-ip-address
  • eureka.client.register-with-eureka
  • SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP
  • SPRING_BOOT_ADMIN_CLIENT_URL

Tworzenie zarządzanego środowiska i aplikacji usługi Azure Container Apps

Aprowizuj aplikację usługi Azure Container Apps w ramach subskrypcji platformy Azure w istniejącym środowisku zarządzanym lub utwórz nową aplikację dla każdej migrowania usługi. Nie musisz tworzyć aplikacji działających jako serwery rejestru Spring Cloud i konfiguracji. Aby uzyskać więcej informacji, zobacz temat Szybki start: Wdrażanie pierwszej aplikacji kontenera przy użyciu witryny Azure Portal.

Przygotowywanie serwera konfiguracji Spring Cloud

Skonfiguruj serwer konfiguracji w składniku Azure Container Apps for Spring. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień dla składnika Config Server for Spring w usłudze Azure Container Apps.

Uwaga

Jeśli bieżące repozytorium Spring Cloud Config znajduje się w lokalnym systemie plików lub lokalnie, musisz najpierw przeprowadzić migrację lub zreplikować pliki konfiguracji do repozytorium opartego na chmurze, takiego jak GitHub, Azure Repos lub BitBucket.

Upewnij się, że rejestrowanie konsoli i konfigurowanie ustawień diagnostycznych

Skonfiguruj rejestrowanie, aby upewnić się, że wszystkie dane wyjściowe są kierowane do konsoli, a nie do plików.

Po wdrożeniu aplikacji w usłudze Azure Container Apps można skonfigurować opcje rejestrowania w środowisku usługi Container Apps w celu zdefiniowania co najmniej jednego miejsca docelowego dzienników. Te miejsca docelowe mogą obejmować usługę Azure Monitor Log Analytics, centrum zdarzeń platformy Azure, a nawet inne rozwiązania do monitorowania innych firm. Istnieje również możliwość wyłączenia danych dziennika i wyświetlania dzienników tylko w czasie wykonywania. Aby uzyskać szczegółową instrukcję konfiguracji, zobacz Opcje magazynu dzienników i monitorowania w usłudze Azure Container Apps.

Konfigurowanie magazynu trwałego

Jeśli jakakolwiek część aplikacji odczytuje lub zapisuje w lokalnym systemie plików, musisz skonfigurować magazyn trwały w celu zastąpienia lokalnego systemu plików. Możesz określić ścieżkę do zainstalowania w kontenerze za pomocą ustawień aplikacji i dopasować ją do ścieżki używanej przez aplikację. Aby uzyskać więcej informacji, zobacz Używanie instalacji magazynu w usłudze Azure Container Apps.

Migrowanie wpisów tajnych usługi Spring Cloud Vault do usługi Azure KeyVault

Wpisy tajne można wprowadzać bezpośrednio do aplikacji za pośrednictwem platformy Spring przy użyciu szablonu startowego Spring Boot usługi Azure KeyVault. Aby uzyskać więcej informacji, zobacz How to use the Spring Boot Starter for Azure Key Vault (Jak używać szablonu startowego Spring Boot dla usługi Azure Key Vault).

Uwaga

Migracja może wymagać zmiany nazwy niektórych wpisów tajnych. Odpowiednio zaktualizuj kod aplikacji.

Migrowanie wszystkich certyfikatów do usługi KeyVault

Usługa Azure Containers Apps obsługuje bezpieczną komunikację między aplikacjami. Aplikacja nie musi zarządzać procesem ustanawiania bezpiecznej komunikacji. Możesz przekazać certyfikat prywatny do usługi Azure Container Apps lub użyć bezpłatnego certyfikatu zarządzanego dostarczonego przez usługę Azure Container Apps. Używanie usługi Azure Key Vault do zarządzania certyfikatami jest zalecane. Aby uzyskać więcej informacji, zobacz Certyfikaty w usłudze Azure Container Apps.

Konfigurowanie integracji zarządzania wydajnością aplikacji (APM)

Jeśli w kontenerze skonfigurowano już zmienne związane z usługą APM, wystarczy upewnić się, że można ustanowić połączenie z docelową platformą APM. Jeśli konfiguracja APM odwołuje się do zmiennych środowiskowych z kontenera, należy odpowiednio ustawić zmienne środowiskowe środowiska uruchomieniowego w usłudze Azure Container Apps. Informacje poufne, takie jak parametry połączenia, powinny być bezpiecznie obsługiwane. Możesz określić go jako wpis tajny lub odwołać się do wpisu tajnego przechowywanego w usłudze Azure Key Vault.

Konfigurowanie wpisów tajnych dla usługi i ustawień zewnętrznych

Ustawienia konfiguracji można wstrzyknąć do każdego kontenera jako zmienne środowiskowe. Wszelkie zmiany w zmiennych tworzą nową poprawkę dla istniejącej aplikacji. Wpisy tajne są parami klucz-wartość i pozostają prawidłowe we wszystkich poprawkach.

Migrowanie i włączanie dostawcy tożsamości

Jeśli którakolwiek z aplikacji Spring Cloud wymaga uwierzytelniania lub autoryzacji, skorzystaj z poniższych wskazówek, aby upewnić się, że są skonfigurowane do uzyskiwania dostępu do dostawcy tożsamości:

  • Jeśli dostawca tożsamości jest identyfikatorem Entra firmy Microsoft, nie należy wprowadzać żadnych zmian.
  • Jeśli dostawca tożsamości jest lasem lokalna usługa Active Directory, rozważ zaimplementowanie rozwiązania tożsamości hybrydowej przy użyciu identyfikatora Entra firmy Microsoft. Aby uzyskać wskazówki, zobacz dokumentację tożsamości hybrydowej.
  • Jeśli dostawca tożsamości jest innym rozwiązaniem lokalnym, takim jak PingFederate, zapoznaj się z tematem Niestandardowa instalacja programu Microsoft Entra Connect w celu skonfigurowania federacji z identyfikatorem Entra firmy Microsoft. Alternatywnie rozważ użycie rozwiązania Spring Security do korzystania z dostawcy tożsamości za pośrednictwem protokołu OAuth2/OpenID Connect lub SAML.

Aktualizowanie aplikacji klienckich

Zaktualizuj konfigurację wszystkich aplikacji klienckich, aby korzystały z opublikowanych punktów końcowych usługi Azure Container Apps dla migrowanych aplikacji.

Po migracji

Po zakończeniu migracji sprawdź, czy aplikacja działa zgodnie z oczekiwaniami. Następnie możesz sprawić, że aplikacja będzie bardziej natywna dla chmury, korzystając z poniższych zaleceń.

  • Rozważ włączenie aplikacji do pracy z usługą Spring Cloud Registry. Ten składnik umożliwia dynamiczne odnajdywanie aplikacji przez inne wdrożone aplikacje Spring i klientów. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień składnika Eureka Server for Spring w usłudze Azure Container Apps. Następnie zmodyfikuj wszystkich klientów aplikacji, aby używali modułu równoważenia obciążenia klienta spring. Moduł równoważenia obciążenia klienta spring umożliwia klientowi uzyskanie adresów wszystkich uruchomionych wystąpień aplikacji i znalezienie wystąpienia, które działa, jeśli inne wystąpienie zostanie uszkodzone lub nie odpowiada. Aby uzyskać więcej informacji, zobacz Spring Tips: Spring Cloud Load Balancer w blogu Spring.

  • Zamiast upublicznić aplikację , rozważ dodanie wystąpienia usługi Spring Cloud Gateway . Usługa Spring Cloud Gateway udostępnia pojedynczy punkt końcowy dla wszystkich aplikacji wdrożonych w środowisku usługi Azure Container Apps. Jeśli brama Spring Cloud Gateway jest już wdrożona, upewnij się, że reguła routingu jest skonfigurowana do kierowania ruchu do nowo wdrożonej aplikacji.

  • Rozważ dodanie serwera Spring Cloud Config Server, aby centralnie zarządzać konfiguracją kontroli wersji i zarządzać nią dla wszystkich aplikacji Spring Cloud. Najpierw utwórz repozytorium Git, aby pomieścić konfigurację i skonfigurować wystąpienie aplikacji do użycia. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień dla składnika Config Server for Spring w usłudze Azure Container Apps. Następnie przeprowadź migrację konfiguracji, wykonując następujące kroki:

    1. W katalogu src/main/resources aplikacji utwórz plik bootstrap.yml o następującej zawartości:

        spring:
          application:
            name: <your-application-name>
      
    2. W repozytorium Git konfiguracji utwórz <plik your-application-name>.yml gdzie your-application-name jest taki sam jak w poprzednim kroku. Przenieś ustawienia z pliku application.yml w pliku src/main/resources do nowo utworzonego pliku. Jeśli ustawienia były wcześniej w pliku properties , najpierw przekonwertowano je na YAML. Aby wykonać tę konwersję, możesz znaleźć narzędzia online lub wtyczki IntelliJ.

    3. Utwórz plik application.yml w powyższym katalogu. Ten plik służy do definiowania ustawień i zasobów, które są współużytkowane przez wszystkie aplikacje w środowisku usługi Azure Container Apps. Takie ustawienia zazwyczaj obejmują źródła danych, ustawienia rejestrowania, konfigurację siłownika Spring Boot i inne.

    4. Zatwierdź i wypchnij te zmiany do repozytorium Git.

    5. Usuń plik application.properties lub application.yml z aplikacji.

  • Rozważ dodanie składnika zarządzanego Admin for Spring w celu włączenia interfejsu administracyjnego dla aplikacji internetowych Spring Boot, które uwidaczniają punkty końcowe siłownika. Aby uzyskać więcej informacji, zobacz Configure the Spring Boot Admin component in Azure Container Apps (Konfigurowanie składnika Administratora spring boot w usłudze Azure Container Apps).

  • Rozważ dodanie potoku wdrażania dla wdrożeń automatycznych, spójnych. Instrukcje są dostępne dla usługi Azure Pipelines i funkcji GitHub Actions.

  • Rozważ użycie poprawek aplikacji kontenera, etykiet poprawek i wag ruchu przychodzącego, aby umożliwić wdrożenie niebiesko-zielone, co umożliwia testowanie zmian kodu w środowisku produkcyjnym przed udostępnieniem ich niektórym lub wszystkim użytkownikom końcowym. Aby uzyskać więcej informacji, zobacz Blue-Green Deployment in Azure Container Apps (Wdrażanie blue-green w usłudze Azure Container Apps).

  • Rozważ dodanie powiązań usługi w celu połączenia aplikacji z obsługiwanymi bazami danych platformy Azure. Te powiązania usług wyeliminowałyby konieczność dostarczania informacji o połączeniu, w tym poświadczeń, aplikacjom Spring Cloud.

  • Rozważ włączenie stosu deweloperów Języka Java w celu zbierania podstawowych metryk JVM dla aplikacji. Aby uzyskać więcej informacji, zobacz Java metrics for Java apps in Azure Container Apps (Metryki języka Java dla aplikacji Java w usłudze Azure Container Apps).

  • Rozważ dodanie reguł alertów i grup akcji usługi Azure Monitor, aby szybko wykrywać i rozwiązywać problemy z warunkami aberrant. Aby uzyskać więcej informacji, zobacz Konfigurowanie alertów w usłudze Azure Container Apps.

  • Rozważ replikowanie aplikacji w różnych strefach w regionie, włączając nadmiarowość strefy usługi Azure Container Apps. Ruch jest zrównoważony i automatycznie kierowany do replik, jeśli wystąpi awaria strefy. Aby uzyskać więcej informacji na temat ustawień nadmiarowych, zobacz Niezawodność w usłudze Azure Container Apps.

  • Rozważ ochronę usługi Azure Container Apps przed typowymi programami wykorzystującymi luki w zabezpieczeniach i lukami w zabezpieczeniach przy użyciu zapory aplikacji internetowej w usłudze Application Gateway. Aby uzyskać więcej informacji, zobacz Ochrona usługi Azure Container Apps za pomocą zapory aplikacji internetowej w usłudze Application Gateway.

  • Jeśli aplikacje korzystają ze starszych składników platformy Spring Cloud Netflix, rozważ zastąpienie ich bieżącymi alternatywami, jak pokazano w poniższej tabeli:

    Starsza wersja Bieżąca
    Spring Cloud Eureka Spring Cloud Service Registry
    Spring Cloud Netflix Zuul Spring Cloud Gateway
    Spring Cloud Netflix Archaius Spring Cloud Config Server
    Wstążka Spring Cloud Netflix Spring Cloud Load Balancer (moduł równoważenia obciążenia po stronie klienta)
    Spring Cloud Hystrix Wyłącznik Spring Cloud + Odporność4J
    Turbina Spring Cloud Netflix Mikrometr + Prometheus