Dela via


Migrera Azure Spring Apps till Azure Kubernetes Service

Kommentar

Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.

Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.

Den här artikeln gäller för:✅ Basic/Standard ✅ Enterprise

Den här artikeln innehåller en översikt över migrering från Azure Spring Apps till Azure Kubernetes Service (AKS).

Azure Spring Apps är en PaaS-lösning (plattform som en tjänst) som är särskilt utformad för Spring Boot-program. Det gör det enklare att distribuera, köra och hantera dessa program. Azure Spring Apps tar hand om infrastruktur, skalning och övervakning, så att utvecklare kan fokusera på sin kod.

AKS är ett IaaS-erbjudande (infrastructure-as-a-service) som tillhandahåller en fullständigt hanterad Kubernetes-miljö. AKS ger dig mer kontroll över hur dina program distribueras och hanteras. Det stöder ett brett utbud av containerbaserade program och möjliggör anpassning för att uppfylla specifika behov.

Att migrera program från Azure Spring Apps till AKS innebär att du går från en hanterad miljö till en miljö som ger dig mer flexibilitet. Den här processen kräver nya verktyg och metoder för att uppnå samma resultat på AKS som du hade med Azure Spring Apps.

Konceptmappning

Eftersom Azure Spring Apps och AKS är olika typer av molntjänsterbjudanden är det inte helt korrekt att mappa Azure Spring Apps-begrepp direkt till AKS. Dessutom är Azure Spring Apps beroende av många interna komponenter när de används i produktionsmiljöer, som inte visas här. Följande diagram och tabell innehåller en enkel mappning av begrepp från Azure Spring Apps till AKS som hjälper dig att förstå grunderna. I en verklig produktionsmiljö bör du överväga säkrare och tillförlitligare lösningar.

Diagram över konceptmappningen mellan Azure Spring Apps och Azure Kubernetes Service.

Azure Spring Apps-tjänsten Azure Kubernetes Service
En tjänstinstans är värd för och skyddar en gräns för appar och andra resurser och stöder ett anpassat virtuellt nätverk. Ett kluster är den grundläggande distributionsenheten. I ett kluster är ett namnområde en virtuell underindelning som används för att organisera och isolera resurser. Den delar samma underliggande nätverksinfrastruktur som definieras av klustrets virtuella nätverk. Valet mellan ett dedikerat kluster eller ett delat kluster med namnområden beror på dina affärsbehov.
En app är en företagsapp som fungerar som en underordnad resurs i en tjänstinstans. En företagsapp är ett virtuellt begrepp i Azure Spring Apps och består av flera resurser i AKS. Ingress styr extern åtkomst till tjänster och anger regler för att dirigera trafik till olika tjänster. En tjänst abstraherar åtkomst till en uppsättning poddar. Du kan utföra en blågrön distributionsväxel genom att uppdatera en tjänst så att den pekar på en annan version av en distribution med hjälp av etiketter.
En distribution är versionen av en app. En app kan ha en produktionsdistribution och en mellanlagringsdistribution. En distribution hanterar distributionen och livscykeln för ett visst program eller en viss tjänst. Det möjliggör även löpande uppdateringar och återställningar, vilket möjliggör kontrollerade, sömlösa programändringar utan driftstopp.
En programinstans är den minsta körningsenhet som hanteras av tjänsten. En podd representerar en eller flera tätt kopplade containrar och är värd för en enda instans av ett program eller en arbetsbelastning som körs.

Nätverksöverväganden

Innan du etablerar ett AKS-kluster är det viktigt att noga överväga nätverksinställningarna. Dessa beslut kan avsevärt påverka prestanda, skalbarhet och säkerhet för dina program.

AKS förlitar sig på CNI-plugin-program (Container Networking Interface) för att hantera nätverk i dess kluster. Dessa plugin-program hanterar viktiga uppgifter som att tilldela IP-adresser till poddar, dirigera trafik mellan dem och aktivera kommunikation via Kubernetes Services. AKS stöder flera CNI-plugin-program som är skräddarsydda för olika nätverksbehov, vilket ger flexibilitet i klusterdesignen.

AKS erbjuder två primära nätverksmodeller: överläggsnätverk och platta nätverk. Överläggsnätverk tilldelar privata IP-adresser till poddar, åtskilda från Azure Virtual Network-undernätet för AKS-noderna. Den här modellen är skalbar och sparar IP-adresser för virtuella nätverk men använder NAT (Network Address Translation) för trafik som lämnar klustret. Däremot tilldelar platta nätverk podd-IP-adresser direkt från samma Azure Virtual Network-undernät som noderna, vilket gör att externa tjänster kan komma åt poddar utan NAT. Även om platta nätverk möjliggör direkt poddkommunikation, kräver de mer omfattande IP-adressutrymme för virtuella nätverk.

Korrekt IP-planering är viktigt för en smidig AKS-åtgärd. Det är viktigt att se till att undernäten har tillräckligt med IP-adresser för alla resurser, undvika överlappande intervall och lämna utrymme för framtida tillväxt för att förhindra anslutningsproblem och störningar. Mer information finns i Azure Kubernetes Service CNI-nätverksöversikt.

Om du vill hantera inkommande trafik i AKS kan du använda lastbalanserare eller ingresskontrollanter. Lastbalanserare fungerar på Layer 4 och distribuerar trafik baserat på protokoll och portar, medan ingresskontrollanter fungerar på Layer 7 och erbjuder avancerade funktioner som URL-baserad routning och TLS/SSL-avslutning. Ingresskontrollanter minskar behovet av flera offentliga IP-adresser genom att hantera trafik till flera program via en enda IP-adress. För webbprogram föredras ingresskontrollanter eftersom de ger bättre trafikhantering och integrering med Kubernetes-resurser. Mer information finns i Hanterad NGINX-ingress med tillägget för programroutning.

För att skydda nätverkstrafik i AKS använder du Web Application Firewalls (WAF) som Azure Application Gateway för att skydda mot attacker som skript mellan webbplatser och cookieförgiftning, samtidigt som du hanterar trafikroutning och TLS/SSL-avslutning. Implementera dessutom nätverksprinciper för att styra podd-till-pod-kommunikation genom att definiera regler i YAML-manifest baserat på etiketter, namnområden eller portar. Dessa principer, som endast är tillgängliga för Linux-baserade noder, säkerställer bättre trafikkontroll och säkerhet i klustret. Mer information finns i Skydda trafik mellan poddar med hjälp av nätverksprinciper i AKS.

Reservera

Om du vill etablera ett AKS-kluster kan du använda mallarna Azure Portal, Azure CLI eller ARM. Processen innebär vanligtvis att välja önskad region, definiera nodpoolens storlek och typ och välja nätverksmodell – antingen Azure CNI eller Kubenet. Du måste också konfigurera autentiseringsalternativ, till exempel Microsoft Entra ID-integrering för användaråtkomstkontroll. För övervakning och skalning kan du aktivera Azure Monitor och konfigurera automatisk skalning baserat på resursanvändning. Efter etableringen kan du hantera klustret med hjälp av kubectl eller Azure CLI. Detaljerade anvisningar om hur du etablerar AKS finns i Skapa ett AKS-kluster.

Åtkomst och identitet

AKS erbjuder flera sätt att hantera autentisering, auktorisering och åtkomstkontroll för Kubernetes-kluster. Du kan använda Rollbaserad åtkomstkontroll i Kubernetes (RBAC) för att ge användare, grupper och tjänstkonton åtkomst endast till de resurser de behöver. Mer information finns i Använda RBAC-auktorisering. AKS stöder även Microsoft Entra ID och Azure RBAC för att förbättra säkerhet och kontroll, så att du kan tilldela och hantera behörigheter på ett mer effektivt sätt.

För bästa säkerhet rekommenderar vi att du integrerar AKS med Microsoft Entra-ID. Den här integreringen använder OpenID Connect- och OAuth 2.0-protokoll för autentisering. Användare autentiserar med Microsoft Entra-autentiseringsuppgifter när de interagerar med AKS-klustret, med deras åtkomstbehörigheter som styrs av klusteradministratören. Mer information finns i Aktivera Azure-hanterad identitetsautentisering för Kubernetes-kluster med kubelogin

Microsoft Entra Workload ID integrerar Kubernetes interna funktioner med externa identitetsprovidrar via OpenID Connect-federation (OIDC). Den använder volymprojektion för tjänstkontotoken för att tilldela Kubernetes-identiteter till poddar via kommenterade tjänstkonton. Med dessa token kan Kubernetes-program autentisera och komma åt Azure-resurser på ett säkert sätt med hjälp av Microsoft Entra-ID. Den här konfigurationen fungerar sömlöst med bibliotek som Azure Identity-klientbibliotek (Azure.Identity) eller Microsoft Authentication Library (MSAL) för att effektivisera autentiseringen för dina arbetsbelastningar. Information om hur du konfigurerar ett kluster och konfigurerar programpodden med arbetsbelastningar finns i Distribuera och konfigurera arbetsbelastningsidentitet.

Containerisera program

Containerinkapsning av program i containeravbildningar är viktigt för distribution på AKS. Det säkerställer att distributionerna är konsekventa, portabla och skalbara. Att använda containeravbildningar ger flexibilitet när det gäller att hantera olika versioner av program. Det gör uppdateringar och återställningar enklare och förbättrar resurseffektiviteten genom att flera containrar kan köras på en enda värd.

Azure Spring Apps hjälper användare att skapa containeravbildningar och distribuera program på olika sätt. Du kan distribuera från källkod, från byggda artefakter som JAR- eller WAR-filer eller direkt från en containeravbildning. Information om hur du distribuerar från en JAR- eller WAR-fil finns i Skapa en containeravbildning från en JAR eller WAR. Information om hur du distribuerar från källkod finns i Containerize an application by using Paketo Buildpacks (Containerize an application by using Paketo Buildpacks).

Om du vill övervaka prestanda för program som distribueras på AKS kan du integrera APM-agenten (Application Performance Monitoring) under containerinkapsningsprocessen. Mer information finns i Integrera övervakning av programprestanda i containeravbildningar.

Distribuera program och Spring Cloud-komponenter

Om du vill distribuera program till AKS kan du använda Distributioner, som används av Azure Spring Apps eller StatefulSets, beroende på programmets behov. För tillståndslösa program, till exempel mikrotjänster, använder du vanligtvis en distribution, som hanterar repliker av ditt program och ser till att de körs smidigt. Den här typen används av Azure Spring Apps. Å andra sidan är StatefulSets idealiska för program som kräver beständig lagring eller stabila identiteter, till exempel databaser eller tjänster med tillståndskänsliga behov.

Vid sidan av programdistributionen måste du också definiera en tjänst för att exponera dina serverdelspoddar. En tjänst är en abstraktion som gör att du kan definiera en logisk uppsättning poddar och aktivera nätverksåtkomst till dem. Den här funktionen är avgörande för belastningsutjämning och kommunikation mellan poddar.

När du distribuerar Spring Cloud-komponenter, till exempel Spring Cloud Config eller Spring Cloud Gateway, använder du vanligtvis Distributioner för tillståndslösa tjänster. För serverdelstjänster som behöver stabil lagring eller tillstånd kan du välja StatefulSets.

Följande länkar innehåller referensexempel på containeravbildningar och manifestfiler för Spring Cloud-komponenter:

Monitor

Övervakning är en viktig del av hanteringen av program som distribueras på AKS. AKS innehåller en rad verktyg för att spåra och analysera status för ditt kluster och dina arbetsbelastningar, inklusive integrerade lösningar som Azure Monitor, Azure Log Analytics och Prometheus. Mer information finns i följande artiklar:

Förutom Azure Monitor och Prometheus kan du även använda andra övervakningslösningar som Datadog, New Relic eller Elastic Stack (ELK). Du kan integrera dessa verktyg i AKS för att samla in loggar, mått och spårningar, vilket ger olika insikter om klusterprestanda.

Självstudie

Vi tillhandahåller en självstudie för att demonstrera upplevelsen från slutpunkt till slutpunkt för att köra ACME Fitness Store-programmet på AKS. Mer information finns i acme-fitness-store/azure-kubernetes-service. Den här självstudien ger praktisk vägledning och är avsedd som referens. AKS är mycket flexibelt, så du måste välja konfigurationer och anpassningar baserat på dina specifika krav.