Migrowanie usługi Azure Spring Apps do usługi Azure Kubernetes Service
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy:✅ Podstawowa/Standardowa ✅ Enterprise
Ten artykuł zawiera omówienie migracji z usługi Azure Spring Apps do usługi Azure Kubernetes Service (AKS).
Azure Spring Apps to rozwiązanie typu "platforma jako usługa" (PaaS) zaprojektowane specjalnie dla aplikacji Spring Boot. Ułatwia wdrażanie, uruchamianie i zarządzanie tymi aplikacjami. Usługa Azure Spring Apps zajmuje się infrastrukturą, skalowaniem i monitorowaniem, dzięki czemu deweloperzy mogą skupić się na swoim kodzie.
Usługa AKS to oferta typu infrastruktura jako usługa (IaaS), która zapewnia w pełni zarządzane środowisko Kubernetes. Usługa AKS zapewnia większą kontrolę nad sposobem wdrażania i zarządzania aplikacjami. Obsługuje ona szeroką gamę konteneryzowanych aplikacji i umożliwia dostosowywanie w celu spełnienia określonych potrzeb.
Migrowanie aplikacji z usługi Azure Spring Apps do usługi AKS oznacza przejście ze środowiska zarządzanego na taki, który zapewnia większą elastyczność. Ten proces wymaga wdrożenia nowych narzędzi i praktyk w celu osiągnięcia tych samych wyników w usłudze AKS, co w przypadku usługi Azure Spring Apps.
Mapowanie koncepcji
Ponieważ usługi Azure Spring Apps i AKS są różnymi typami ofert usług w chmurze, nie jest całkowicie dokładne mapowanie pojęć związanych z usługą Azure Spring Apps bezpośrednio do usługi AKS. Ponadto usługa Azure Spring Apps zależy od wielu składników wewnętrznych w przypadku użycia w środowiskach produkcyjnych, które nie są wymienione tutaj. Poniższy diagram i tabela zawierają proste mapowanie pojęć z usługi Azure Spring Apps na usługę AKS, aby ułatwić zrozumienie podstaw. W rzeczywistym środowisku produkcyjnym należy rozważyć bezpieczniejsze i niezawodne rozwiązania.
Usługa Azure Spring Apps | Azure Kubernetes Service |
---|---|
Wystąpienie usługi hostuje i zabezpiecza granicę dla aplikacji i innych zasobów oraz obsługuje niestandardową sieć wirtualną. | Klaster to podstawowa jednostka wdrożenia. W ramach klastra przestrzeń nazw to wirtualna poddzielona używana do organizowania i izolowania zasobów. Współudzieli tę samą podstawową infrastrukturę sieci zdefiniowaną przez sieć wirtualną klastra. Wybór między dedykowanym klastrem lub udostępnionym klastrem z przestrzeniami nazw zależy od potrzeb biznesowych. |
Aplikacja to jedna aplikacja biznesowa, która służy jako zasób podrzędny w ramach wystąpienia usługi. | Aplikacja biznesowa to pojęcie wirtualne w usłudze Azure Spring Apps i składa się z wielu zasobów w usłudze AKS. Ruch przychodzący kontroluje zewnętrzny dostęp do usług i ustawia reguły routingu ruchu do różnych usług. Usługa abstrakcji dostępu do zestawu zasobników. Możesz wykonać niebieski zielony przełącznik wdrażania, aktualizując usługę tak, aby wskazywała inną wersję wdrożenia przy użyciu etykiet. |
Wdrożenie to wersja aplikacji. Aplikacja może mieć jedno wdrożenie produkcyjne i jedno wdrożenie przejściowe. | Wdrożenie zarządza wdrożeniem i cyklem życia określonej aplikacji lub usługi. Umożliwia również aktualizacje stopniowe i wycofywanie, umożliwiając kontrolowane, bezproblemowe zmiany aplikacji bez przestojów. |
Wystąpienie aplikacji to minimalna jednostka środowiska uruchomieniowego zarządzana przez usługę. | Zasobnik reprezentuje jeden lub więcej ściśle powiązanych kontenerów i hostuje pojedyncze wystąpienie uruchomionej aplikacji lub obciążenia. |
Kwestie dotyczące sieci
Przed zainicjowaniem obsługi administracyjnej klastra usługi AKS należy dokładnie rozważyć ustawienia sieciowe. Te decyzje mogą znacząco wpłynąć na wydajność, skalowalność i bezpieczeństwo aplikacji.
Usługa AKS korzysta z wtyczek interfejsu CNI (Container Networking Interface) do zarządzania siecią w swoich klastrach. Te wtyczki obsługują krytyczne zadania, takie jak przypisywanie adresów IP do zasobników, kierowanie ruchu między nimi i włączanie komunikacji za pośrednictwem usług Kubernetes Services. Usługa AKS obsługuje wiele wtyczek CNI dostosowanych do różnych potrzeb sieciowych, zapewniając elastyczność projektowania klastra.
Usługa AKS oferuje dwa podstawowe modele sieci: nakładanie sieci i sieci płaskie. Sieci nakładki przypisują prywatne adresy IP do zasobników, niezależnie od podsieci usługi Azure Virtual Network węzłów usługi AKS. Ten model jest skalowalny i oszczędza adresy IP sieci wirtualnej, ale używa translatora adresów sieciowych (NAT) do ruchu opuszczającego klaster. Natomiast sieci płaskie przypisują adresy IP zasobników bezpośrednio z tej samej podsieci usługi Azure Virtual Network co węzły, umożliwiając usługom zewnętrznym dostęp do zasobników bez translatora adresów sieciowych. Chociaż sieci płaskie umożliwiają bezpośrednią komunikację zasobników, wymagają one bardziej rozbudowanej przestrzeni adresowej IP sieci wirtualnej.
Prawidłowe planowanie adresów IP jest niezbędne w przypadku bezproblemowej operacji usługi AKS. Ważne jest, aby zapewnić, że podsieci mają wystarczającą liczbę adresów IP dla wszystkich zasobów, unikaj nakładających się zakresów i pozostawiają miejsce na przyszły wzrost, aby zapobiec problemom z łącznością i zakłóceniami. Aby uzyskać więcej informacji, zobacz Omówienie sieci CNI usługi Azure Kubernetes Service.
Aby obsługiwać ruch przychodzący w usłudze AKS, można użyć modułów równoważenia obciążenia lub kontrolerów ruchu przychodzącego. Moduły równoważenia obciążenia działają w warstwie 4, dystrybuując ruch na podstawie protokołów i portów, podczas gdy kontrolery ruchu przychodzącego działają w warstwie 7, oferując zaawansowane funkcje, takie jak routing oparty na adresach URL i kończenie żądań TLS/SSL. Kontrolery ruchu przychodzącego zmniejszają potrzebę wielu publicznych adresów IP, zarządzając ruchem do wielu aplikacji za pośrednictwem jednego adresu IP. W przypadku aplikacji internetowych preferowane są kontrolery ruchu przychodzącego, ponieważ zapewniają lepsze zarządzanie ruchem i integrację z zasobami Kubernetes. Aby uzyskać więcej informacji, zobacz Managed NGINX ingress with the application routing add-on (Zarządzana ruch przychodzący NGINX z dodatkiem routingu aplikacji).
Aby zabezpieczyć ruch sieciowy w usłudze AKS, użyj zapór aplikacji internetowych(WAF), takich jak aplikacja systemu Azure Gateway, aby chronić przed atakami, takimi jak skrypty między witrynami i zatrucie plików cookie, podczas zarządzania routingiem ruchu i kończeniem żądań PROTOKOŁU TLS/SSL. Ponadto zaimplementuj zasady sieciowe w celu kontrolowania komunikacji między zasobnikami, definiując reguły w manifestach YAML na podstawie etykiet, przestrzeni nazw lub portów. Te zasady, które są dostępne tylko dla węzłów opartych na systemie Linux, zapewniają lepszą kontrolę ruchu i zabezpieczenia w klastrze. Aby uzyskać więcej informacji, zobacz Zabezpieczanie ruchu między zasobnikami przy użyciu zasad sieciowych w usłudze AKS.
Inicjowanie
Aby aprowizować klaster usługi AKS, możesz użyć witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub szablonów usługi ARM. Proces zwykle polega na wybraniu żądanego regionu, zdefiniowaniu rozmiaru i typu puli węzłów oraz wybraniu modelu sieciowego — azure CNI lub Kubenet. Należy również skonfigurować opcje uwierzytelniania, takie jak integracja identyfikatora Entra firmy Microsoft na potrzeby kontroli dostępu użytkowników. Na potrzeby monitorowania i skalowania można włączyć usługę Azure Monitor i skonfigurować skalowanie automatyczne na podstawie użycia zasobów. Po aprowizacji można zarządzać klastrem przy użyciu narzędzia kubectl lub interfejsu wiersza polecenia platformy Azure. Aby uzyskać szczegółowe instrukcje dotyczące aprowizacji usługi AKS, odwiedź stronę Tworzenie klastra usługi AKS.
Dostęp i tożsamość
Usługa AKS oferuje kilka sposobów zarządzania uwierzytelnianiem, autoryzacją i kontrolą dostępu dla klastrów Kubernetes. Możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Kubernetes, aby zapewnić użytkownikom, grupom i kontom usług dostęp tylko do potrzebnych zasobów. Aby uzyskać więcej informacji, zobacz Używanie autoryzacji RBAC. Usługa AKS obsługuje również funkcję Microsoft Entra ID i RBAC platformy Azure w celu zwiększenia bezpieczeństwa i kontroli, umożliwiając przypisywanie uprawnień i zarządzanie nimi w bardziej usprawniony sposób.
Aby uzyskać najlepsze zabezpieczenia, zalecamy zintegrowanie usługi AKS z identyfikatorem Entra firmy Microsoft. Ta integracja używa protokołów OpenID Connect i OAuth 2.0 do uwierzytelniania. Użytkownicy uwierzytelniają się przy użyciu poświadczeń usługi Microsoft Entra podczas interakcji z klastrem usługi AKS z uprawnieniami dostępu podlegającymi administratorowi klastra. Aby uzyskać więcej informacji, zobacz Włączanie uwierzytelniania tożsamości zarządzanej platformy Azure dla klastrów Kubernetes za pomocą rozwiązania kubelogin
Tożsamość obciążeń Microsoft Entra integruje funkcje natywne platformy Kubernetes z zewnętrznymi dostawcami tożsamości za pośrednictwem federacji OpenID Connect (OIDC). Używa projekcji woluminu tokenu konta usługi do przypisywania tożsamości Kubernetes do zasobników za pośrednictwem kont usługi z adnotacjami. Dzięki tym tokenom aplikacje Kubernetes mogą bezpiecznie uwierzytelniać zasoby platformy Azure i uzyskiwać do nich dostęp przy użyciu identyfikatora Entra firmy Microsoft. Ta konfiguracja bezproblemowo współpracuje z bibliotekami, takimi jak biblioteki klienta tożsamości platformy Azure (Azure.Identity
) lub biblioteka Microsoft Authentication Library (MSAL), aby usprawnić uwierzytelnianie obciążeń. Aby dowiedzieć się, jak skonfigurować klaster i skonfigurować zasobnik aplikacji z zidentyfikowanymi obciążeniami, zobacz Wdrażanie i konfigurowanie tożsamości obciążenia.
Konteneryzowanie aplikacji
Konteneryzowanie aplikacji do obrazów kontenerów jest niezbędne do wdrożenia w usłudze AKS. Gwarantuje to, że wdrożenia są spójne, przenośne i skalowalne. Korzystanie z obrazów kontenerów zapewnia elastyczność zarządzania różnymi wersjami aplikacji. Ułatwia ona aktualizowanie i wycofywanie oraz poprawia wydajność zasobów, umożliwiając uruchamianie wielu kontenerów na jednym hoście.
Usługa Azure Spring Apps ułatwia użytkownikom tworzenie obrazów kontenerów i wdrażanie aplikacji na różne sposoby. Możesz wdrożyć z kodu źródłowego, z utworzonych artefaktów, takich jak pliki JAR lub WAR, lub bezpośrednio z obrazu kontenera. Aby dowiedzieć się, jak wdrażać z pliku JAR lub WAR, zobacz Tworzenie obrazu kontenera z pliku JAR lub WAR. Aby dowiedzieć się, jak wdrażać z kodu źródłowego, zobacz Containerize an application by using Paketo Buildpacks (Konteneryzowanie aplikacji przy użyciu pakietu Buildpack Paketo).
Aby monitorować wydajność aplikacji wdrożonych w usłudze AKS, możesz zintegrować agenta application monitor wydajności ing (APM) podczas procesu konteneryzacji. Aby uzyskać więcej informacji, zobacz Integrowanie monitorowania wydajności aplikacji z obrazami kontenerów.
Wdrażanie aplikacji i składników platformy Spring Cloud
Aby wdrożyć aplikacje w usłudze AKS, możesz użyć wdrożeń, które są używane przez usługę Azure Spring Apps lub StatefulSets, w zależności od potrzeb aplikacji. W przypadku aplikacji bezstanowych, takich jak mikrousługi, zazwyczaj używa się wdrożenia, które zarządza replikami aplikacji i zapewnia bezproblemowe działanie. Ten typ jest używany przez usługę Azure Spring Apps. Z drugiej strony zestawy StatefulSet są idealne dla aplikacji wymagających trwałego magazynu lub stabilnych tożsamości, takich jak bazy danych lub usługi z potrzebami stanowymi.
Oprócz wdrożenia aplikacji należy również zdefiniować usługę, aby uwidocznić zasobniki zaplecza. Usługa to abstrakcja, która umożliwia definiowanie logicznego zestawu zasobników i umożliwia dostęp do nich w sieci. Ta funkcja ma kluczowe znaczenie dla równoważenia obciążenia i komunikacji między zasobnikami.
Podczas wdrażania składników platformy Spring Cloud, takich jak Spring Cloud Config lub Spring Cloud Gateway, zazwyczaj używa się wdrożeń dla usług bezstanowych. W przypadku usług zaplecza, które wymagają stabilnego magazynu lub stanu, możesz wybrać opcję StatefulSets.
Poniższe linki zawierają przykłady obrazów kontenerów i plików manifestu dla składników platformy Spring Cloud:
Monitor
Monitorowanie jest kluczową częścią zarządzania aplikacjami wdrożonym w usłudze AKS. Usługa AKS udostępnia szereg narzędzi do śledzenia i analizowania stanu klastra i obciążeń, w tym zintegrowanych rozwiązań, takich jak Azure Monitor, Azure Log Analytics i Prometheus. Aby uzyskać więcej informacji, zobacz następujące artykuły:
- Zarządzany prometheus dla kolekcji metryk.
- Szczegółowe informacje o kontenerze na potrzeby zbierania dzienników
- Usługa Azure Managed Grafana do wizualizacji.
Oprócz usług Azure Monitor i Prometheus można również używać innych rozwiązań monitorowania, takich jak Datadog, New Relic lub Elastic Stack (ELK). Te narzędzia można zintegrować z usługą AKS, aby zbierać dzienniki, metryki i ślady, oferując różne szczegółowe informacje o wydajności klastra.
Samouczek
Udostępniamy samouczek przedstawiający kompleksowe środowisko uruchamiania aplikacji sklepu ACME Fitness w usłudze AKS. Aby uzyskać więcej informacji, zobacz acme-fitness-store/azure-kubernetes-service. Ten samouczek zawiera praktyczne wskazówki i jest przeznaczony do celów referencyjnych. Usługa AKS jest wysoce elastyczna, dlatego należy wybrać konfiguracje i dostosowania na podstawie określonych wymagań.