Udostępnij za pośrednictwem


Ogólne zagadnienia dotyczące architektury dotyczące wybierania usługi kontenera platformy Azure

Ten artykuł przeprowadzi Cię przez proces wybierania usługi kontenera platformy Azure. Zawiera omówienie zagadnień dotyczących poziomu funkcji, które są typowe i krytyczne dla niektórych obciążeń. Może to pomóc w podejmowaniu decyzji w celu zapewnienia, że obciążenie spełnia wymagania dotyczące niezawodności, bezpieczeństwa, optymalizacji kosztów, doskonałości operacyjnej i wydajności.

Notatka

Ten artykuł jest drugą częścią serii, która rozpoczyna się od Wybierz usługę kontenera platformy Azure. Zdecydowanie zalecamy przeczytanie tego artykułu z omówieniem, aby uzyskać kontekst dla tych zagadnień dotyczących architektury.

Przegląd

Zagadnienia opisane w tym artykule są podzielone na cztery kategorie:

zagadnienia dotyczące architektury i sieci

  • Obsługa systemu operacyjnego
  • Przestrzenie adresowe sieci
  • Informacje o przepływie ruchu
  • Planowanie podsieci
  • Liczba dostępnych adresów IP ruchu przychodzącego
  • Obsługa tras zdefiniowanych przez użytkownika i bramy NAT.
  • Integracja sieci prywatnej
  • Pokrycie protokołów
  • Równoważenie obciążenia
  • Odnajdywanie usług
  • Domeny niestandardowe i zarządzany protokół TLS
  • Wzajemne protokoły TLS
  • Pojęcia dotyczące sieci dla określonych usług platformy Azure

Zagadnienia dotyczące zabezpieczeń

  • Zapewnianie zabezpieczeń ruchu wewnątrz klastra przy użyciu zasad sieciowych
  • Sieciowe grupy zabezpieczeń
  • Integracja usługi Azure Key Vault
  • Obsługa tożsamości zarządzanej
  • Oceny zagrożeń i luk w zabezpieczeniach za pomocą usługi Defender for Containers
  • Punkty odniesienia zabezpieczeń
  • Azure Well-Architected Ramy dla Bezpieczeństwa

zagadnienia dotyczące działania

  • Aktualizacje i poprawki
  • Aktualizacje obrazu kontenera
  • Skalowalność infrastruktury pionowej
  • Skalowalność infrastruktury poziomej
  • Skalowalność aplikacji
  • Możliwość obserwowania
  • Well-Architected Ramy dla Doskonałości Operacyjnej

zagadnienia dotyczące niezawodności

  • Umowy dotyczące poziomu usług
  • Nadmiarowość za pośrednictwem stref dostępności
  • Kontrole kondycji i samonaprawiania
  • Wdrożenia aplikacji bez przestojów
  • Limity zasobów
  • Well-Architected Framework for Reliability (Struktura Well-Architected pod kątem niezawodności)

Należy pamiętać, że ten artykuł koncentruje się na podzestawie usług kontenerów platformy Azure, które oferują dojrzały zestaw funkcji dla aplikacji internetowych i interfejsów API, sieci, wglądu, narzędzi deweloperskich i operacji: Azure Kubernetes Service (AKS), AKS Automatic, Azure Container Apps i Web App for Containers. Aby uzyskać pełną listę wszystkich usług kontenerów platformy Azure, zobacz stronę kategorii produktów usług kontenerów.

Notatka

Niektóre sekcje odróżniają usługę AKS Standard od usługi AKS Automatic. Jeśli sekcja nie rozróżnia tych dwóch, zakłada się parzystość cech.

Zagadnienia dotyczące architektury

W tej sekcji opisano decyzje dotyczące architektury, które są trudne do odwrócenia lub naprawienia bez konieczności znaczącego przestoju lub ponownego wdrażania. Szczególnie ważne jest, aby wziąć pod uwagę podstawowe składniki, takie jak sieć i zabezpieczenia.

Te zagadnienia nie są specyficzne dla filarów Well-Architected Framework. Jednak zasługują na dodatkową kontrolę i ocenę wymagań firm podczas wybierania usługi kontenera platformy Azure.

Notatka

AKS Automatic to bardziej opiniowane rozwiązanie niż AKS Standard. Niektórych wbudowanych funkcji nie można wyłączyć. Ten przewodnik nie zawiera objaśnienie tych funkcji. Aby uzyskać aktualne informacje na temat tych ograniczeń i porównanie funkcji standardowych i automatycznych, zobacz: porównanie funkcji automatycznych i standardowych usługi AKS.

Obsługa systemu operacyjnego

Większość konteneryzowanych aplikacji działa w kontenerach systemu Linux, które są obsługiwane przez wszystkie usługi kontenerów platformy Azure. Opcje są bardziej ograniczone w przypadku składników obciążenia, które wymagają kontenerów systemu Windows.

Aplikacje kontenera AKS Automatyczne usługi AKS Aplikacja internetowa dla kontenerów
obsługa systemu Linux
Wsparcie dla systemu Windows
obsługa mieszanego systemu operacyjnego ❌*

*Obsługa mieszanego systemu operacyjnego dla funkcji Web App for Containers wymaga oddzielnych planów usługi Azure App Service dla systemów Windows i Linux.

Zagadnienia dotyczące sieci

Ważne jest, aby zrozumieć projekt sieci na wczesnym etapie procesów planowania ze względu na ograniczenia zabezpieczeń i zgodności oraz nałożone wytyczne. Ogólnie rzecz biorąc, główne różnice między usługami platformy Azure omówione w tym przewodniku zależą od preferencji:

  • Container Apps to oferta PaaS, która udostępnia wiele funkcji sieci zarządzanych przez platformę Azure, takich jak odnajdywanie usług, wewnętrzne domeny zarządzane i kontrolki sieci wirtualnej.
  • AKS jest najbardziej konfigurowalny z trzech usług i zapewnia największą kontrolę nad przepływem sieci. Na przykład zapewnia niestandardowe kontrolery ruchu przychodzącego i kontrolę ruchu wewnątrz klastra za pośrednictwem zasad sieciowych platformy Kubernetes. Zespoły ds. obciążeń mogą korzystać z różnych dodatków sieciowych zarządzanych platformy Azure, a także instalować i obsługiwać wszelkie dodatki z szerszego ekosystemu Kubernetes.
  • Web App for Containers jest funkcjonalnością App Service. W związku z tym koncepcje dotyczące sieci, zwłaszcza integracji sieci prywatnych, są bardzo specyficzne dla usługi App Service. Ta usługa będzie znana zespołom ds. obciążeń, które już korzystają z usługi App Service. Zespoły, które nie mają doświadczenia z usługą App Service i chcą bardziej znanej integracji z siecią wirtualną platformy Azure, są zachęcane do rozważenia usługi Container Apps.

Należy pamiętać, że sieć jest podstawową warstwą infrastruktury. Często trudno jest wprowadzać zmiany w projekcie bez ponownego wdrażania obciążenia, co może prowadzić do przestojów. W związku z tym, jeśli obciążenie ma określone wymagania dotyczące sieci, dokładnie zapoznaj się z tą sekcją przed zawężeniem wyboru usługi kontenera platformy Azure.

Przestrzenie adresowe sieci

Gdy integrujesz aplikacje z sieciami wirtualnymi, musisz zaplanować adresy IP, aby upewnić się, że dostępnych jest wystarczająco dużo adresów IP dla wystąpień kontenerów. Podczas tego procesu zaplanuj dodatkowe adresy na potrzeby aktualizacji, wdrożeń niebiesko-zielonych oraz podobnych sytuacji, w których wdrażane są dodatkowe wystąpienia, co powoduje zużycie dodatkowych adresów IP.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
dedykowane podsieci Plan zużycia: opcjonalnie
Dedykowany plan: wymagany
Wymagane Fakultatywny
wymagania dotyczące adresów IP Plan zużycia: zobacz środowisko tylko do użycia.
Plan dedykowany: zobacz środowisko profilów obciążeń .
Zobacz sieci wirtualne Azure dla AKS. Zobacz wymagania dotyczące podsieci usługi App Service .

Należy pamiętać, że wymagania usługi AKS zależą od wybranej wtyczki sieciowej. Niektóre wtyczki sieciowe dla usługi AKS wymagają szerszych rezerwacji adresów IP. Szczegóły wykraczają poza zakres tego artykułu. Aby uzyskać więcej informacji, zobacz Koncepcje sieciowe dla AKS.

Informacje o przepływie ruchu

Typy przepływu ruchu wymaganego dla rozwiązania mogą mieć wpływ na projekt sieci.

Poniższe sekcje zawierają informacje o różnych ograniczeniach sieci. Te ograniczenia wpływają na potrzebę wdrożenia dodatkowych podsieci w zależności od tego, czy są wymagane:

  • Wiele obciążeń kolokowanych.
  • Prywatny i/lub publiczny dostęp.
  • Kontrolowany dostęp do przepływu ruchu wschodnio-zachodniego w klastrze (dla Container Apps i AKS) lub w sieci wirtualnej (dla wszystkich usług kontenerowych platformy Azure).

Planowanie podsieci

Upewnienie się, że masz podsieć, która jest wystarczająco duża, aby uwzględnić wystąpienia aplikacji obsługujących obciążenie, nie jest jedynym czynnikiem, który określa zasięg sieciowy, w którym te aplikacje są wdrażane.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
obsługa obciążeń kolokowanych na podsieci* ❌* N/A*

*Opisuje to najlepsze rozwiązanie, a nie ograniczenie techniczne.

W przypadku usługi Container Apps integracja podsieci dotyczy tylko jednego środowiska usługi Container Apps. Każde środowisko usługi Container Apps jest ograniczone do pojedynczego adresu IP ruchu przychodzącego, publicznego lub prywatnego.

Każde środowisko usługi Container Apps jest przeznaczone tylko dla pojedynczego obciążenia, w którym są współlokowane aplikacje zależne. W związku z tym należy wprowadzić dodatkowe urządzenia sieciowe platformy Azure do równoważenia obciążenia ruchu przychodzącego, jeśli potrzebujesz zarówno publicznego, jak i prywatnego ruchu przychodzącego. Przykłady obejmują usługę Azure Application Gateway i usługę Azure Front Door. Ponadto, jeśli masz wiele obciążeń, które muszą być segregowane, konieczne są dodatkowe środowiska Container Apps, więc dla każdego z nich trzeba przydzielić dodatkową podsieć.

Usługa AKS zapewnia szczegółową kontrolę przepływu sieci wschód-zachód w klastrze w postaci zasad sieci platformy Kubernetes. Ta kontrola przepływu umożliwia segmentowanie wielu obciążeń z różnymi granicami zabezpieczeń sieci w tym samym klastrze.

W przypadku usługi Web App for Containers nie ma ograniczeń dotyczących liczby aplikacji, które można zintegrować z jedną podsiecią, o ile podsieć jest wystarczająco duża. Nie ma najlepszych rozwiązań dotyczących kontroli dostępu między aplikacjami internetowymi w tej samej sieci wirtualnej. Każda aplikacja internetowa samodzielnie zarządza kontrolą dostępu do ruchu w kierunku wschód-zachód lub północ-południe, odpowiednio z sieci wirtualnej lub Internetu.

Notatka

Nie można zmienić rozmiaru podsieci, które mają wdrożone zasoby. Podczas planowania sieci należy zachować szczególną ostrożność, aby uniknąć konieczności ponownego wdrażania całych składników obciążenia, co może prowadzić do przestojów.

Liczba dostępnych adresów IP ruchu przychodzącego

W poniższej tabeli przedstawiono poprzednią sekcję planowania podsieci w celu zdefiniowania liczby adresów IP, które mogą być uwidocznione dla dowolnej liczby aplikacji hostowanych w jednym wdrożeniu usługi kontenera platformy Azure.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Liczba adresów IP ruchu przychodzącego Jeden Dużo App Service Environment: Jeden
Brak środowiska usługi App Service: wiele

Usługa Container Apps umożliwia korzystanie z jednego adresu IP na środowisko, publiczne lub prywatne. Usługa AKS zezwala na dowolną liczbę adresów IP, publicznych lub prywatnych. Usługa Web App for Containers, poza środowiskiem App Service Environment, umożliwia korzystanie z jednego publicznego adresu IP dla wszystkich aplikacji w ramach planu usługi App Service i wielu prywatnych adresów IP korzystających z prywatnych punktów końcowych platformy Azure.

Należy pamiętać, że aplikacje internetowe zintegrowane ze środowiskiem App Service Environment odbierają ruch tylko za pośrednictwem pojedynczego adresu IP ruchu przychodzącego skojarzonego ze środowiskiem App Service Environment, niezależnie od tego, czy jest to publiczny, czy prywatny.

Obsługa tras zdefiniowanych przez użytkownika i bramy NAT.

Jeśli obciążenie wymaga tras zdefiniowanych przez użytkownika i funkcji bramy NAT do szczegółowej kontroli sieci, Container Apps wymaga użycia profilów obciążeń . Zgodność trasy zdefiniowanej przez użytkownika (UDR) i bramy NAT nie jest dostępna w planie tylko do konsumpcji dla usługi ACA.

Usługi AKS i Web App for Containers implementują te dwie funkcje sieciowe za pomocą standardowych funkcji sieci wirtualnej lub integracji sieci wirtualnej. Aby wyjaśnić, pule węzłów AKS i funkcja Web App for Containers w środowisku App Service Environment są już bezpośrednimi zasobami sieci wirtualnej. Aplikacja internetowa dla kontenerów, która nie znajduje się w środowisku App Service Environment, obsługuje trasy zdefiniowane przez użytkownika i bramę NAT poprzez integrację sieci wirtualnej. W przypadku integracji z siecią wirtualną zasób technicznie nie znajduje się bezpośrednio w sieci wirtualnej, ale cały jego ruch wychodzący przechodzi przez sieć wirtualną, a skojarzone reguły sieci wpływają na ruch zgodnie z oczekiwaniami.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
obsługa UDR Plan wyłącznie do konsumpcji: ❌
Plan profilu obciążenia: ✅
Obsługa bramy NAT Plan wyłącznie do konsumpcji: ❌
Plan profilu obciążenia: ✅

Integracja sieci prywatnej

W przypadku obciążeń wymagających ścisłej sieci prywatnej warstwy 4 zarówno dla ruchu przychodzącego i wychodzącego, należy rozważyć użycie usług Container Apps, AKS oraz wersji środowiska App Service Environment z jedną dzierżawą, w której obciążenia są wdrażane w sieci wirtualnej zarządzanej przez użytkownika, zapewniając zwyczajowe szczegółowe mechanizmy zarządzania siecią prywatną.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Prywatne wejście do sieci wirtualnej Za pośrednictwem prywatnego punktu końcowego
prywatne wyjście z sieci wirtualnej Poprzez integrację wirtualnej sieci z
całkowicie zablokowany publiczny punkt końcowy App Service Environment tylko
Prywatne sieciowanie z wykorzystaniem aplikacji Web App for Containers

Usługa Web App for Containers udostępnia dodatkowe funkcje sieciowe, które nie są udostępniane w ten sam sposób przez inne usługi platformy Azure opisane w tym artykule. Aby zaimplementować ścisłe wymagania dotyczące sieci prywatnej, zespoły ds. obciążeń muszą zapoznać się z tymi pojęciami dotyczącymi sieci. Dokładnie przejrzyj następujące funkcje sieciowe:

Jeśli potrzebujesz rozwiązania PaaS i preferujesz pojęcia dotyczące sieci, które są współużytkowane w wielu rozwiązaniach platformy Azure, rozważ użycie usługi Container Apps.

Pokrycie protokołów

Ważną kwestią dla platformy hostingu są protokoły sieciowe obsługiwane dla przychodzących żądań aplikacji (przychodzących). Usługa Web App for Containers jest najbardziej rygorystyczną opcją, która obsługuje tylko protokół HTTP i HTTPS. Usługa Container Apps dodatkowo zezwala na przychodzące połączenia TCP. Usługa AKS jest najbardziej elastyczna, obsługując nieograniczone użycie protokołów TCP i UDP na wybranych samodzielnie portach.

Aplikacje kontenerowe AKS Aplikacja internetowa dla kontenerów
Obsługa protokołu i portów HTTP (port 80)*
HTTPS (port 443)*
TCP (porty 1–65535, z wyjątkiem 80 i 443)
TCP (dowolny port)
UDP (dowolny port)
HTTP (port 80)
HTTPS (port 443)
obsługa protokołu WebSocket
obsługa protokołu HTTP/2

W środowisku usługi Container Apps HTTP/S można uwidocznić na dowolnym porcie do komunikacji wewnątrz klastra. W tym scenariuszu wbudowane funkcje HTTP usługi Container Apps, takie jak CORS i koligacja sesji, nie mają zastosowania.

Zarówno aplikacje kontenerowe, jak i usługa Web App for Containers obsługują protokół TLS 1.2 dla wbudowanego wejścia HTTPS.

Równoważenie obciążenia

Dzięki usłudze Container Apps i Web App for Containers platforma Azure w pełni wyodrębnia moduły równoważenia obciążenia warstwy 4 i warstwy 7.

W przeciwieństwie, AKS używa modelu wspólnej odpowiedzialności, w którym Azure zarządza podstawową infrastrukturą, którą zespół odpowiedzialny za obciążenia konfiguruje poprzez interfejs API Kubernetes. W przypadku równoważenia obciążenia warstwy 7 w usłudze AKS można wybrać opcje zarządzane przez Azure, na przykład dodatek do routingu aplikacji zarządzanych przez usługi AKS lub Application Gateway for Containers, albo wdrożyć wybrany kontroler ruchu przychodzącego i zarządzać nim samodzielnie.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
równoważnik obciążenia warstwy 4 Zarządzane przez platformę Azure Wspólna odpowiedzialność Zarządzane przez platformę Azure
równoważnik obciążenia warstwy 7 Zarządzane przez platformę Azure Współdzielony lub samodzielny Zarządzane przez platformę Azure

Odnajdywanie usług

W architekturach chmury środowiska uruchomieniowe można usuwać i ponownie tworzyć w dowolnym momencie w celu ponownego zrównoważenia zasobów, dlatego adresy IP wystąpień regularnie zmieniają się. Te architektury używają w pełni kwalifikowanych nazw domen (FQDN) do niezawodnej i spójnej komunikacji.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Odnajdywanie usługi FQDN zarządzany przez Azure Konfigurowalne rozwiązanie Kubernetes FQDN zarządzany przez Azure

Usługa Web Apps for Containers domyślnie udostępnia publiczne FQDN dla komunikacji przychodzącej (komunikacja north-south). Nie jest wymagana żadna dodatkowa konfiguracja DNS. Nie ma jednak wbudowanego mechanizmu ułatwiania lub ograniczania ruchu między innymi aplikacjami (komunikacja wschodnio-zachodnia).

Usługa Container Apps udostępnia również publiczne nazwy FQDN ruchu przychodzącego. Jednak usługa Container Apps idzie dalej, umożliwiając uwidocznienie nazwy FQDN aplikacji i ograniczenie ruchu wyłącznie do środowiska. Ta funkcja ułatwia zarządzanie komunikacją wschodnio-zachodnią i włączanie składników, takich jak Dapr.

Wdrożenia platformy Kubernetes nie są początkowo wykrywalne w ramach klastra lub spoza niego. Należy utworzyć usługi Kubernetes zdefiniowane przez interfejs API Kubernetes, który następnie uwidacznia aplikacje w sieci w sposób adresowalny.

Ważny

Tylko usługi Container Apps i AKS zapewniają odnajdywanie usług za pośrednictwem wewnętrznych schematów DNS w odpowiednich środowiskach. Ta funkcja może uprościć konfiguracje DNS w środowiskach deweloperskich/testowych i produkcyjnych. Można na przykład utworzyć te środowiska z dowolnymi nazwami usług, które muszą być unikatowe tylko w środowisku lub klastrze, dzięki czemu mogą być takie same w środowisku deweloperskim/testowym i produkcyjnym. W przypadku usługi Web App for Containers nazwy usług muszą być unikatowe w różnych środowiskach, aby uniknąć konfliktów z usługą Azure DNS.

Domeny niestandardowe i zarządzany protokół TLS

Zarówno usługa Container Apps, jak i usługa Web App for Containers udostępniają gotowe rozwiązania do zarządzania domenami niestandardowymi i certyfikatami.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Konfigurowanie domen niestandardowych Nieszablonowe myślenie BYO Nieszablonowe myślenie
Zarządzany TLS dla FQDN platformy Azure Nieszablonowe myślenie N/A Nieszablonowe myślenie
zarządzany protokół TLS dla domen niestandardowych w wersji zapoznawczej BYO Gotowe do użycia lub BYO

Użytkownicy usługi AKS są odpowiedzialni za zarządzanie systemami DNS, konfiguracjami klastra i certyfikatami TLS dla swoich domen niestandardowych. Mimo że usługa AKS nie oferuje zarządzanego protokołu TLS, klienci mogą korzystać z oprogramowania z ekosystemu Kubernetes, na przykład popularnego menedżera certyfikatów do zarządzania certyfikatami TLS.

Wzajemne protokoły TLS

Inną alternatywą dla ograniczania ruchu przychodzącego jest wzajemne protokoły TLS (mTLS). Protokół TLS jest protokołem zabezpieczeń, który gwarantuje, że zarówno klient, jak i serwer w komunikacji są uwierzytelniane. Aby przeprowadzić uwierzytelnianie, obie strony wymieniają i weryfikują certyfikaty przed przesłaniem jakichkolwiek danych.

Usługa Web App for Containers ma wbudowaną obsługę mTLS dla przychodzących połączeń klienckich. Jednak aplikacja musi zweryfikować certyfikat przez uzyskiwanie dostępu do nagłówka HTTP X-ARR-ClientCert, który jest przekazywany przez platformę App Service.

Usługa Container Apps ma również wbudowaną obsługę mTLS. Przekazuje certyfikat klienta do aplikacji w nagłówku HTTP X-Forwarded-Client-Cert. Można również łatwo włączyć automatyczne mTLS do komunikacji wewnętrznej między aplikacjami w jednym środowisku.

Wzajemne protokoły TLS w usłudze AKS można zaimplementować za pośrednictwem siatki usług opartej na Istio jako zarządzanego dodatku, który obejmuje funkcje mTLS dla przychodzących połączeń klienckich i komunikacji wewnątrz klastra między usługami. Zespoły ds. obciążeń mogą również zdecydować się na zainstalowanie innej oferty siatki usług i zarządzanie nią z ekosystemu Kubernetes. Te opcje sprawiają, że implementacja mTLS na platformie Kubernetes jest najbardziej elastyczna.

Pojęcia dotyczące sieci specyficzne dla usługi

W poprzednich sekcjach opisano niektóre z najczęstszych zagadnień, które należy wziąć pod uwagę. Aby uzyskać więcej informacji i dowiedzieć się więcej na temat funkcji sieciowych specyficznych dla poszczególnych usług kontenerów platformy Azure, zobacz następujące artykuły:

Powyższe sekcje koncentrują się na projektowaniu sieci. Przejdź do następnej sekcji, aby dowiedzieć się więcej na temat zabezpieczeń sieci i zabezpieczania ruchu sieciowego.

Zagadnienia dotyczące zabezpieczeń

Niepowodzenie rozwiązywania problemów z zagrożeniami bezpieczeństwa może prowadzić do nieautoryzowanego dostępu, naruszeń danych lub wycieków poufnych informacji. Kontenery oferują hermetyzowane środowisko dla aplikacji. Systemy hostingu i bazowe nakładki sieciowe wymagają jednak dodatkowych barier zabezpieczających. Wybór usługi kontenera platformy Azure musi obsługiwać określone wymagania dotyczące zabezpieczania poszczególnych aplikacji indywidualnie i zapewnić odpowiednie środki bezpieczeństwa, aby zapobiec nieautoryzowanemu dostępowi i ograniczyć ryzyko ataków.

Omówienie porównania zabezpieczeń

Większość usług platformy Azure, w tym usługi Container Apps, AKS i Web App for Containers, integruje się z ofertami zabezpieczeń kluczy, w tym z usługą Key Vault i tożsamościami zarządzanymi.

W przypadku usług w tym przewodniku usługa AKS oferuje największą konfigurowalność i rozszerzalność, częściowo poprzez uwidocznienie podstawowych składników, które często można zabezpieczyć za pośrednictwem opcji konfiguracji. Na przykład klienci mogą wyłączyć konta lokalne na serwerze interfejsu API Kubernetes lub włączyć automatyczne aktualizacje węzłów bazowych za pomocą opcji konfiguracji.

Klastry AKS Automatic mają wzmocnioną konfigurację domyślną, z wieloma ustawieniami zabezpieczeń dla klastrów, aplikacji i sieci włączonymi domyślnie. Te początkowe konfiguracje nie tylko skracają czas wdrażania, ale także zapewniają użytkownikom ustandaryzowaną konfigurację, która jest wstępnie weryfikowana, a tym samym zapewnia użytkownikom solidną podstawę do wykonywania 2 dni obowiązków operacyjnych. Fundacja ta pomaga skrócić krzywą uczenia się związaną z długoterminowym zarządzaniem klastrami dla zespołów, które dopiero zaczynają korzystać z tej technologii.

Aby zapoznać się ze szczegółowym porównaniem, dokładnie zapoznaj się z poniższymi zagadnieniami, aby upewnić się, że można spełnić wymagania dotyczące zabezpieczeń obciążenia.

Bezpieczeństwo płaszczyzny sterowania Kubernetes

Usługa AKS oferuje największą elastyczność trzech opcji rozważanych w tym artykule, zapewniając pełny dostęp do interfejsu API Kubernetes, dzięki czemu można dostosować aranżację kontenerów. Ten dostęp do interfejsu API Kubernetes stanowi jednak również znaczną powierzchnię ataków i musisz go zabezpieczyć.

Ważny

Należy pamiętać, że ta sekcja nie jest odpowiednia dla usługi Web App for Containers, która używa interfejsu API usługi Azure Resource Manager jako płaszczyzny sterowania.

Zabezpieczenia oparte na tożsamościach

Klienci są odpowiedzialni za ochronę dostępu do interfejsu API opartego na tożsamości. Platforma Kubernetes oferuje własny system zarządzania uwierzytelnianiem i autoryzacją, który również musi być zabezpieczony za pomocą kontroli dostępu.

Aby skorzystać z pojedynczej płaszczyzny szkła do zarządzania tożsamościami i dostępem na platformie Azure, najlepszym rozwiązaniem jest wyłączenie kont lokalnych specyficznych dla platformy Kubernetes, a zamiast tego zaimplementować integrację usługi Microsoft Entra zarządzaną przez usługę AKS razem z Azure RBAC dla platformy Kubernetes. Jeśli zaimplementujesz to najlepsze rozwiązanie, administratorzy nie muszą wykonywać zarządzania tożsamościami i dostępem na wielu platformach.

Aplikacje kontenera AKS
kontrole dostępu API Kubernetes Brak dostępu Pełny dostęp

Klienci korzystający z usługi Container Apps nie mają dostępu do interfejsu API platformy Kubernetes. Firma Microsoft zapewnia zabezpieczenia dla tego interfejsu API.

Zabezpieczenia oparte na sieci

Jeśli chcesz ograniczyć dostęp sieciowy do płaszczyzny sterowania platformy Kubernetes, musisz użyć usługi AKS, która udostępnia dwie opcje. Pierwszą opcją jest użycie prywatnych klastrów usługi AKS, które używają usługi Azure Private Link między siecią prywatną serwera interfejsu API a siecią prywatną klastra usługi AKS. Drugą opcją jest integracja z siecią wirtualną serwera API Server (wersja zapoznawcza), gdzie serwer interfejsu API jest zintegrowany z podsiecią delegowaną. Zapoznaj się z dokumentacją, aby dowiedzieć się więcej.

Istnieją konsekwencje implementacji dostępu z ograniczeniami sieci do interfejsu API platformy Kubernetes. W szczególności zarządzanie można wykonywać tylko z poziomu sieci prywatnej. Zazwyczaj oznacza to, że musisz wdrożyć własnych agentów dla usługi Azure DevOps lub GitHub Actions. Aby dowiedzieć się więcej o innych ograniczeniach, zobacz dokumentację specyficzną dla produktu.

Aplikacje kontenera AKS
zabezpieczenia sieciowe interfejsu API platformy Kubernetes Nie można skonfigurować w usłudze PaaS Możliwe do skonfigurowania: publiczny adres IP lub prywatny adres IP

Te zagadnienia nie mają zastosowania do usługi Container Apps. Ponieważ jest to rozwiązanie PaaS, firma Microsoft abstrahuje od podstawowej infrastruktury.

Ochrona sieci warstwy danych

Poniższe funkcje sieciowe mogą służyć do kontrolowania dostępu do, z i wewnątrz obciążenia.

Korzystanie z zasad sieciowych w celu zapewnienia zabezpieczeń ruchu wewnątrz klastra

Niektóre konfiguracje zabezpieczeń wymagają segregacji ruchu sieciowego w środowisku, na przykład w przypadku korzystania ze środowisk wielodostępnych do hostowania wielu lub wielowarstwowych aplikacji. W tych scenariuszach należy wybrać usługę AKS i zaimplementować zasady sieci , natywną dla chmury technologię umożliwiającą szczegółową konfigurację sieci warstwy 4 w klastrach Kubernetes.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
zasady sieci Plan zużycia: ❌
Plan dedykowany: ❌

Spośród trzech usług platformy Azure opisanych w tym artykule usługa AKS jest jedyną usługą, która obsługuje dalszą izolację obciążeń w klastrze. Zasady sieciowe nie są obsługiwane ani w aplikacjach kontenerowych (Container Apps), ani w aplikacji sieciowej dla kontenerów (Web App for Containers).

Sieciowe grupy zabezpieczeń

We wszystkich scenariuszach można regulować komunikację sieciową w szerszej sieci wirtualnej przy użyciu sieciowych grup zabezpieczeń, co umożliwia korzystanie z reguł ruchu warstwy 4, które regulują ruch przychodzący i wychodzący na poziomie sieci wirtualnej.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Grupy zabezpieczeń sieci Plan zużycia: ✅
Plan dedykowany: ✅
✅ Aplikacje zintegrowane z VNet: tylko ruch wychodzący

Wbudowane ograniczenia adresów IP dla ruchu przychodzącego

Aplikacje Kontenerowe i Aplikacja Web dla Kontenerów zapewniają wbudowane ograniczenia adresów IP dla ruchu przychodzącego dla poszczególnych aplikacji. Usługa AKS może osiągnąć tę samą funkcjonalność, ale wymaga natywnej funkcjonalności platformy Kubernetes za pośrednictwem api-resource usługi Kubernetes Service, w której można ustawić wartości dla loadBalancerSourceRanges.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Wbudowane ograniczenia IP dla ruchu przychodzącego ❌*
użycie zasobów - Zużywa zasoby klastra -

Notatka

Usługa AKS oferuje ograniczenia adresów IP ruchu przychodzącego, ale jest to funkcja natywna platformy Kubernetes, a nie natywna dla platformy Azure, podobnie jak inne usługi.

Zabezpieczenia na poziomie aplikacji

Należy zabezpieczyć obciążenia nie tylko na poziomie sieci i infrastruktury, ale także na poziomie obciążenia i aplikacji. Rozwiązania kontenerów platformy Azure integrują się z ofertami zabezpieczeń platformy Azure, aby ułatwić standaryzację implementacji zabezpieczeń i mechanizmów kontroli aplikacji.

Integracja z usługą Key Vault

Najlepszym rozwiązaniem jest przechowywanie wpisów tajnych, kluczy i certyfikatów oraz zarządzanie nimi w rozwiązaniu do zarządzania kluczami, takimi jak Key Vault, które zapewnia zwiększone bezpieczeństwo tych składników. Zamiast przechowywać i konfigurować wpisy tajne w kodzie lub w usłudze obliczeniowej platformy Azure, wszystkie aplikacje powinny być zintegrowane z usługą Key Vault.

Integracja z usługą Key Vault umożliwia deweloperom aplikacji skoncentrowanie się na kodzie aplikacji. Wszystkie trzy usługi kontenerów platformy Azure opisane w tym artykule mogą automatycznie synchronizować wpisy tajne z usługi Key Vault i udostępniać je aplikacji, zazwyczaj jako zmienne środowiskowe lub zainstalowane pliki.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Integracja Key Vault

Aby uzyskać więcej informacji, zobacz:

Obsługa tożsamości zarządzanej

Tożsamość zarządzana może być używana przez aplikacje do uwierzytelniania w usługach chronionych przez Microsoft Entra ID bez konieczności używania kluczy lub tajemnic. Usługa Container Apps i aplikacja internetowa dla kontenera oferują wbudowaną natywną obsługę platformy Azure dla tożsamości zarządzanej na poziomie aplikacji. Obsługa tożsamości zarządzanej na poziomie aplikacji dla usługi AKS jest realizowana za pomocą Identyfikatora Obciążenia Entra. Usługa AKS wymaga również tożsamości zarządzanej powiązanej z infrastrukturą, aby umożliwić operacje klastra dla platformy Kubelet, płaszczyzny sterowania i różnych dodatków usługi AKS.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
obsługa tożsamości zarządzanej dla infrastruktury N/A N/A
obsługa tożsamości zarządzanej container-pull
obsługa tożsamości zarządzanej aplikacji

Aby uzyskać więcej informacji, zobacz:

Oceny zagrożeń i luk w zabezpieczeniach za pomocą usługi Defender for Containers

Ochrona przed lukami w zabezpieczeniach jest również ważna. Najlepszym rozwiązaniem jest użycie usługi Defender for Containers. Oceny luk w zabezpieczeniach są obsługiwane w rejestrach kontenerów platformy Azure, dzięki czemu mogą być używane przez dowolną usługę kontenera platformy Azure, a nie tylko te opisane w tym artykule. Ochrona środowiska uruchomieniowego usługi Defender for Containers jest jednak dostępna tylko dla usługi AKS.

Ponieważ usługa AKS uwidacznia natywny interfejs API kubernetes, zabezpieczenia klastra można również ocenić za pomocą narzędzi zabezpieczeń specyficznych dla platformy Kubernetes z ekosystemu Kubernetes.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Ochrona przed zagrożeniami w czasie działania

Aby uzyskać więcej informacji, zobacz macierz obsługi kontenerów w usłudze Defender for Cloud.

Należy pamiętać, że oceny podatności obrazów kontenerów nie są skanowaniem w czasie rzeczywistym. Rejestr kontenerów platformy Azure jest skanowany w regularnych odstępach czasu.

Punkty odniesienia zabezpieczeń

Ogólnie rzecz biorąc, większość usług kontenerów platformy Azure integruje oferty zabezpieczeń platformy Azure. Ogólnie rzecz biorąc, należy pamiętać, że zestaw funkcji zabezpieczeń jest tylko niewielką częścią implementowania zabezpieczeń w chmurze. Aby uzyskać więcej informacji na temat implementowania zabezpieczeń dla usług kontenerów, zobacz następujące punkty odniesienia zabezpieczeń specyficzne dla usługi:

Notatka

Klastry usługi AKS są automatycznie konfigurowane przy użyciu określonych ustawień zabezpieczeń. Upewnij się, że są one dostosowane do potrzeb związanych z obciążeniem.

Well-Architected Ramy dla Bezpieczeństwa

Ten artykuł koncentruje się na głównych różnicach między funkcjami usług kontenerów opisanymi tutaj.

Aby uzyskać bardziej szczegółowe wskazówki dotyczące zabezpieczeń usługi AKS, zobacz przegląd Well-Architected Framework - AKS.

Zagadnienia operacyjne

Aby pomyślnie uruchomić obciążenie w środowisku produkcyjnym, zespoły muszą wdrożyć praktyki doskonałości operacyjnej, w tym scentralizowane rejestrowanie, monitorowanie, skalowalność, regularne aktualizacje i stosowanie poprawek oraz zarządzanie obrazami.

Aktualizacje i poprawki

Ważne jest, aby podstawowy system operacyjny aplikacji był aktualizowany i regularnie poprawiany. Należy jednak pamiętać, że w przypadku każdej aktualizacji istnieje ryzyko awarii. W tej sekcji i w następnej opisano główne zagadnienia dotyczące trzech usług kontenerów w odniesieniu do wspólnej odpowiedzialności między klientem a platformą.

Jako zarządzana usługa Kubernetes usługa AKS udostępnia zaktualizowane obrazy dla składników systemu operacyjnego węzła i płaszczyzny sterowania. Zespoły obciążeń są jednak odpowiedzialne za stosowanie aktualizacji do swoich klastrów. Aktualizacje można wyzwalać ręcznie lub korzystać z kanałów automatycznego uaktualniania klastra , aby upewnić się, że klastry są aktualne. Zapoznaj się z przewodnikiem obsługi usługi AKS day-2, aby dowiedzieć się więcej na temat stosowania poprawek i uaktualniania klastrów usługi AKS.

Aplikacje kontenerowe i aplikacja internetowa dla kontenerów to rozwiązania PaaS. Platforma Azure jest odpowiedzialna za zarządzanie aktualizacjami i poprawkami, dzięki czemu klienci mogą uniknąć złożoności zarządzania uaktualnieniami usługi AKS.

Aplikacje kontenera AKS Automatyczne usługi AKS Aplikacja internetowa dla kontenerów
aktualizacje płaszczyzny sterowania Platforma klienta Platforma Platforma
Aktualizacje i poprawki hosta Platforma klienta Platforma Platforma
aktualizacje i poprawki obrazu kontenera Klient Klient Klient Klient

Aktualizacje obrazu kontenera

Bez względu na rozwiązanie kontenerowe Azure, klienci są zawsze odpowiedzialni za własne wizerunki kontenerów. Jeśli istnieją poprawki zabezpieczeń dla obrazów bazowych kontenerów, twoim zadaniem jest ponowne kompilowanie obrazów. Aby uzyskać alerty dotyczące tych luk w zabezpieczeniach, użyj usługi Defender for Containers dla kontenerów hostowanych w usłudze Container Registry.

Skalowalność

Skalowanie służy do dostosowywania pojemności zasobów w celu spełnienia wymagań, dodając większą pojemność w celu zapewnienia wydajności i usuwania nieużywanej pojemności w celu zaoszczędzenia pieniędzy. Po wybraniu rozwiązania kontenera należy wziąć pod uwagę ograniczenia infrastruktury i strategie skalowania.

Skalowalność infrastruktury pionowej

skalowanie w pionie odnosi się do możliwości zwiększenia lub zmniejszenia istniejącej infrastruktury, czyli procesora i pamięci obliczeniowej. Różne obciążenia wymagają różnych ilości zasobów obliczeniowych. Wybierając rozwiązanie kontenerowe Azure, należy zwrócić uwagę na dostępne oferty sprzętowe SKU dla konkretnej usługi Azure. Różnią się one i mogą nakładać dodatkowe ograniczenia.

W przypadku usługi AKS przejrzyj rozmiary maszyn wirtualnych w dokumentacji usługi Azure oraz ograniczenia usługi AKS dla regionu.

Te artykuły zawierają szczegółowe informacje o ofertach jednostek SKU dla pozostałych dwóch usług:

Skalowalność infrastruktury poziomej

Horizontal scaling odnosi się do zdolności rozszerzania lub redukcji pojemności za pomocą nowej infrastruktury, takiej jak węzły VM. Podczas skalowania w górę lub w dół, warstwa zużycia Container Apps abstrahuje podstawowe maszyny wirtualne. W przypadku pozostałych usług kontenerów platformy Azure można zarządzać strategią skalowania w poziomie przy użyciu standardowego interfejsu API usługi Azure Resource Manager.

Należy pamiętać, że skalowanie w poziomie i w pionie obejmuje ponowne zrównoważenie instancji, więc stwarza również ryzyko przestoju. Ryzyko jest mniejsze niż odpowiednie ryzyko przy skalowaniu w pionie. Niemniej jednak zespoły obciążeń są zawsze odpowiedzialne za zapewnienie, że ich aplikacje mogą obsługiwać awarie i implementować bezproblemowe uruchamianie i zamykanie aplikacji, aby uniknąć przestojów.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
skalowanie infrastruktury w górę i w dół Plan zużycia: Nie dotyczy
Dedykowany plan: konfigurowalny
Konfigurowalne Konfigurowalne
elastyczne aprowizowanie sprzętu Plan zużycia: Nie dotyczy
Plan dedykowany: abstrakcja z profilami obciążeń
Dowolna jednostka SKU maszyny wirtualnej Wyabstrahowany. Zobacz plan usługi App Service.

Ważny

Opcje aprowizacji sprzętu dostępne za pośrednictwem dedykowanych planów usługi Container Apps (profilów obciążeń) i usługi Web App for Containers (plany usługi App Service) nie są tak elastyczne, jak usługa AKS. Musisz zapoznać się z jednostkami SKU dostępnymi w każdej usłudze, aby upewnić się, że twoje potrzeby są spełnione.

Skalowalność aplikacji

Typową miarą wyzwalającą skalowanie infrastruktury i aplikacji jest użycie zasobów: procesor i pamięć. Niektóre rozwiązania kontenerowe mogą skalować liczbę instancji kontenerów na podstawie metryk związanych z kontekstem specyficznym dla aplikacji, na przykład żądań HTTP. Na przykład usługi AKS i Container Apps mogą skalować wystąpienia kontenerów na podstawie kolejek komunikatów za pośrednictwem usługi KEDA i wielu innych metryk za pośrednictwem skalowania. Te możliwości zapewniają elastyczność podczas wybierania strategii skalowalności aplikacji. Usługa Web App for Containers korzysta z opcji skalowalności udostępnianych przez platformę Azure. (Zobacz poniższą tabelę). Usługa Web App for Containers nie obsługuje niestandardowych konfiguracji skalowania, takich jak KEDA.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
Skalowanie kontenerów w poziomie oparte na protokole HTTP, TCP lub metrykach (procesor CPU, pamięć, sterowane zdarzeniami). oparte na metrykach (CPU, pamięć lub niestandardowe). ręczne, oparte na metrykachlub automatyczne (wersja zapoznawcza).
skalowalność sterowana zdarzeniami Tak. Natywny dla chmury. Tak. Natywny dla chmury. Wymagana jest dodatkowa konfiguracja. Tak. Specyficzne dla zasobów platformy Azure.

Usługa AKS Automatic umożliwia automatyczne skalowanie zasobników w poziomie, automatyczne skalowanie oparte na zdarzeniach Kubernetes (KEDA) i pionowe narzędzie do automatycznego skalowania zasobników (VPA) domyślnie.

Możliwość obserwowania

Monitorowanie obciążenia

Zbieranie metryk dla złożonych lub wielowarstwowych aplikacji może być trudne. Aby uzyskać metryki, możesz zintegrować konteneryzowane obciążenia z usługą Azure Monitor na dwa sposoby:

  • Instrumentacja automatyczna. Nie są wymagane żadne zmiany kodu.
  • Instrumentacja ręczna. Minimalne zmiany kodu wymagane do zintegrowania i skonfigurowania zestawu SDK i/lub klienta.
Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
automatyczna instrumentacja za pośrednictwem platformy Częściowa obsługa*
Automatyczna instrumentacja za pomocą agenta Częściowa obsługa* N/A
ręczna instrumentacja Za pomocą zestawu SDK lub interfejsu OpenTelemetry Za pomocą zestawu SDK lub interfejsu OpenTelemetry Za pomocą zestawu SDK lub interfejsu OpenTelemetry

*Usługi AKS i Web App for Containers obsługują automatyczną instrumentację niektórych konfiguracji obciążeń systemów Linux i Windows w zależności od języka aplikacji. Aby uzyskać więcej informacji, zobacz następujące artykuły:

Instrumentacja w kodzie aplikacji jest obowiązkiem deweloperów aplikacji, dlatego jest niezależna od dowolnego rozwiązania kontenera platformy Azure. Twoje obciążenie może używać rozwiązań, takich jak:

Dzienniki i metryki

Wszystkie usługi kontenerów platformy Azure zapewniają funkcje dzienników i metryk aplikacji i platformy. Dzienniki aplikacji to dzienniki konsoli generowane przez obciążenie. Dzienniki platformy przechwytują zdarzenia występujące na poziomie platformy poza zakresem aplikacji, takie jak skalowanie i wdrożenia. Metryki to wartości liczbowe, które opisują jakiś aspekt systemu w danym momencie, co umożliwia monitorowanie i zgłaszanie alertów dotyczących wydajności i kondycji systemu.

Usługa Azure Monitor to główna usługa rejestrowania i metryk na platformie Azure, która integruje się z tymi usługami. Usługa Azure Monitor używa dzienników zasobów do rozdzielania dzienników z różnych źródeł na kategorie i zbiera metryki w celu uzyskania wglądu w wydajność zasobów. Jednym ze sposobów określenia, które dzienniki i metryki są dostępne w każdej usłudze platformy Azure, jest zapoznanie się z kategoriami dzienników zasobów i dostępnymi metrykami dla każdej z usług.

Aplikacje kontenera AKS Automatyczne usługi AKS Aplikacja internetowa dla kontenerów
obsługa przesyłania strumieniowego dzienników
obsługa dla usługi Azure Monitor
dzienniki zasobów Azure Monitor konsoli i System serwer API Kubernetes, audyt, planista, autoskalowanie klastra i inne Tak samo jak AKS ConsoleLogs, HTTPLogs, EnvironmentPlatformLogs i nie tylko
zbieranie metryk i monitorowanie Metryki za pośrednictwem usługi Azure Monitor; metryki niestandardowe za pośrednictwem metryk Dapr Metryki za pośrednictwem usługi Azure Monitor; metryki niestandardowe za pośrednictwem rozwiązania Prometheus (wymaga ręcznej konfiguracji) Wstępnie skonfigurowany Zarządzany Prometheus do gromadzenia metryk i Zarządzana Grafana do wizualizacji; metryki za pośrednictwem Azure Monitor. Metryki za pośrednictwem usługi Azure Monitor
Wstępnie skonfigurowane Prometheus i Grafana Wymaga ręcznej konfiguracji ✅ Zarządzane Prometheus i Zarządzane Grafana są domyślnie skonfigurowane.

Container Apps abstrahuje wszystkie swoje wewnętrzne dzienniki Kubernetes w dwóch kategoriach: dzienniki konsoli, które zawierają dzienniki kontenerów roboczych, i dzienniki systemowe, które zawierają wszystkie dzienniki związane z platformą. W przypadku metryk usługa Container Apps integruje się z usługą Azure Monitor, aby zbierać standardowe metryki i obsługiwać metryki niestandardowe za pośrednictwem integracji języka Dapr w przypadku zaawansowanych scenariuszy.

AKS zapewnia dzienniki związane z platformą Kubernetes i szczegółową kontrolę nad tym, co jest rejestrowane. Usługa AKS utrzymuje pełną zgodność z narzędziami klienta Kubernetes do strumieniowego przesyłania logów, takimi jak kubectl. W przypadku metryk usługa AKS integruje się z usługą Azure Monitor w celu zbierania metryk klastra i węzła. Zbieranie metryk niestandardowych przy użyciu rozwiązania Prometheus i wizualizacji z narzędziem Grafana jest możliwe, ale wymaga ręcznej konfiguracji i konfiguracji.

usługa AKS Automatic jest wstępnie skonfigurowana przy użyciu określonych narzędzi do monitorowania. Używa ona zarządzanego rozwiązania Prometheus do zbierania metryk i zarządzanej aplikacji Grafana na potrzeby wizualizacji. Metryki klastra i aplikacji są zbierane automatycznie i można je wizualizować. Usługa AKS Automatic integruje się również z usługą Azure Monitor na potrzeby zbierania dzienników i metryk.

Web App for Containers udostępnia kilka kategorii dzienników zasobów, ponieważ jej platforma (App Service) nie jest wyłącznie dla obciążeń kontenerów. W przypadku operacji specyficznych dla kontenera, które zarządzają wewnętrzną platformą Docker, udostępnia kategorię dziennika AppServicePlatformLogs. Inną ważną kategorią jest AppServiceEnvironmentPlatformLogs, która rejestruje zdarzenia, takie jak skalowanie i zmiany konfiguracji. Metryki są zbierane za pośrednictwem usługi Azure Monitor, co umożliwia monitorowanie wydajności aplikacji i wykorzystania zasobów.

Well-Architected Ramy dla Doskonałości Operacyjnej

Ten artykuł koncentruje się na głównych różnicach między funkcjami usług kontenerów opisanymi tutaj. Zapoznaj się z tymi artykułami, aby zapoznać się z pełnymi wskazówkami dotyczącymi doskonałości operacyjnej dla następujących usług:

Niezawodność

niezawodność odnosi się do możliwości systemu reagowania na awarie i pozostania w pełni funkcjonalne. Na poziomie oprogramowania aplikacyjnego obciążenia powinny wdrażać najlepsze praktyki, takie jak buforowanie, ponawianie prób, wzorce wyłącznika obwodu i sprawdzanie kondycji. Na poziomie infrastruktury platforma Azure jest odpowiedzialna za obsługę awarii fizycznych, takich jak awarie sprzętowe i awarie zasilania, w centrach danych. Nadal mogą wystąpić błędy. Zespoły odpowiedzialne za obciążenie powinny wybrać odpowiednią warstwę usługi Azure i zastosować niezbędne konfiguracje minimalnej liczby instancji w celu zaimplementowania automatycznych przełączeń w przypadku awarii między strefami dostępności.

Aby wybrać odpowiednią warstwę usług, musisz zrozumieć, jak działają umowy dotyczące poziomu usług (SLA) i strefy dostępności.

Umowy dotyczące poziomu usług

Niezawodność jest często mierzona przez metryki oparte na firmie, takie jak umowy SLA lub metryki odzyskiwania, takie jak cele czasu odzyskiwania (RTO).

Platforma Azure ma wiele umów SLA dla określonych usług. Nie ma czegoś takiego jak poziom usług 100%, ponieważ awarie mogą zawsze występować w oprogramowaniu i sprzęcie, a także w naturze, na przykład podczas burz i trzęsień ziemi. Umowa SLA nie jest gwarancją, ale raczej finansowo wspieraną umową dotyczącą dostępności usług.

Aby uzyskać najnowsze umowy SLA i szczegółowe informacje, pobrać najnowszą umowę SLA dla usług Microsoft Online Services z witryny internetowej licencjonowania firmy Microsoft.

Poziomy bezpłatne versus płatne

Ogólnie rzecz biorąc, warstwy bezpłatne usług platformy Azure nie oferują umowy SLA, co sprawia, że są one opłacalne dla środowisk nieprodukcyjnych. Jednak w przypadku środowisk produkcyjnych najlepszym rozwiązaniem jest wybranie warstwy płatnej, która ma umowę SLA.

Dodatkowe czynniki dla usługi AKS

Usługa AKS ma różne umowy dotyczące poziomu usług (SLA) dla różnych składników i konfiguracji.

  • płaszczyzna sterowania. Serwer interfejsu API Kubernetes ma oddzielną umowę SLA.
  • płaszczyzna danych. Pule węzłów używają bazowych umów SLA jednostek SKU maszyn wirtualnych.
  • strefy dostępności. Istnieją różne umowy SLA dla dwóch płaszczyzn, w zależności od tego, czy klaster AKS ma włączone strefy dostępności. i działają z wieloma instancjami w różnych strefach dostępności.

Należy pamiętać, że w przypadku korzystania z wielu usług platformy Azure złożone cele SLO mogą się różnić od indywidualnych SLA dla usług i być niższe.

Redundancja w strefach dostępności

strefy dostępności to odrębne centra danych, które mają niezależne zasilanie elektryczne, chłodzenie itd. w obrębie jednego regionu. Wynikowa nadmiarowość zwiększa tolerancję awarii bez konieczności implementowania architektur obejmujących wiele regionów.

Platforma Azure ma strefy dostępności w każdym kraju/regionie, w którym platforma Azure obsługuje region centrum danych. Aby umożliwić wielu wystąpieniom kontenerów przemieszczać się między strefami dostępności, należy wybrać jednostki SKU, warstwy usług i regiony, które obsługują strefy dostępności.

Funkcja Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
obsługa strefy dostępności Pełny Pełny Pełny

Na przykład aplikacja lub infrastruktura skonfigurowana do uruchamiania pojedynczej instancji stanie się niedostępna, jeśli wystąpi problem w strefie dostępności, w której hostowany jest sprzęt. Aby w pełni korzystać z obsługi strefy dostępności, należy uruchomić obciążenia z minimalną konfiguracją trzech wystąpień kontenera rozmieszczonych w strefach.

Kontrole kondycji i samonaprawiania

Punkty końcowe sprawdzania kondycji mają kluczowe znaczenie dla niezawodnego działania. Jednak tworzenie tych punktów końcowych jest tylko połową rozwiązania. Druga połowa kontroluje, co robi platforma hostingu i jak, gdy występują błędy.

Aby lepiej odróżnić typy sond kondycji, przyjrzyj się wbudowanym typom sond z platformy Kubernetes:

  • uruchamiania. Sprawdza, czy aplikacja została pomyślnie uruchomiona.
  • gotowość. Sprawdza, czy aplikacja jest gotowa do obsługi żądań przychodzących.
  • Żywotność. Sprawdza, czy aplikacja jest nadal uruchomiona i odpowiada.

Innym ważnym zagadnieniem jest częstotliwość żądań kontroli kondycji z aplikacji (stopień szczegółowości wewnętrznej). Jeśli masz długi interwał między tymi żądaniami, możesz kontynuować obsługę ruchu, dopóki instancja nie zostanie uznana za niezdrową.

Większość aplikacji obsługuje kontrole kondycji za pośrednictwem protokołu HTTP(S). Jednak niektóre mogą wymagać innych protokołów, takich jak TCP lub gRPC, aby wykonać te kontrole. Należy pamiętać o tym podczas projektowania systemu kontroli kondycji.

Aplikacje kontenerowe AKS Aplikacja internetowa dla kontenerów
sondy uruchamiania Częściowa obsługa
sondy gotowości
sondy żywotności
stopień szczegółowości interwału Sekund Sekund 1 minuta
Obsługa protokołu HTTP(S)
TCP
HTTP(S)
TCP
gRPC
HTTP(S)

Testy kondycji najłatwiej zaimplementować w usłudze Web App for Containers. Istnieją pewne ważne zagadnienia:

  • Jego sondy startowe są wbudowane i nie można ich zmieniać. Wysyła żądanie HTTP do portu początkowego kontenera. Każda reakcja z aplikacji jest uznawana za pomyślne rozpoczęcie.
  • Nie obsługuje sond gotowości. Jeśli sonda uruchamiania zakończy się pomyślnie, wystąpienie kontenera zostanie dodane do puli zdrowych wystąpień.
  • Wysyła kontrolę kondycji co minutę. Nie można zmienić interwału.
  • Minimalny próg, który można ustawić dla instancji w złej kondycji, która ma zostać usunięta z wewnętrznego mechanizmu równoważenia obciążenia, wynosi dwie minuty. Uszkodzona instancja przyjmuje ruch przez co najmniej dwie minuty po nieudanym sprawdzeniu kondycji. Wartość domyślna tego ustawienia to 10 minut.

Z drugiej strony usługi Container Apps i AKS są znacznie bardziej elastyczne i oferują podobne opcje. Jeśli chodzi o konkretne różnice, usługa AKS udostępnia następujące opcje przeprowadzania kontroli kondycji, które nie są dostępne w usłudze Container Apps:

Autonaprawa

Aby zidentyfikować problematyczne wystąpienie kontenera i przestać wysyłać do niego ruch, to dopiero początek. Następnym krokiem jest zaimplementowanie automatycznego naprawiania. automatyczne naprawianie to proces ponownego uruchamiania aplikacji w celu odzyskania sprawności po stanie złej kondycji. Poniżej przedstawiono porównanie trzech usług kontenerów:

  • W usłudze Web App for Containers nie ma możliwości ponownego uruchomienia wystąpienia kontenera natychmiast po tym, jak sprawdzanie kondycji kończy się niepowodzeniem. Jeśli wystąpienie nadal kończy się niepowodzeniem przez jedną godzinę, zostanie zastąpione przez nowe wystąpienie. Istnieje inna funkcja o nazwie autonaprawiania, która monitoruje i uruchamia ponownie wystąpienia. Nie jest to bezpośrednio związane z kontrolami kondycji. Używa różnych metryk aplikacji, takich jak limity pamięci, czas trwania żądania HTTP i kody stanu.
  • Usługa Container Apps i usługa AKS automatycznie próbują ponownie uruchomić wystąpienie kontenera, jeśli sonda liveness osiągnie zdefiniowany próg niepowodzenia.

Wdrożenia aplikacji bez przestojów

Możliwość wdrażania i zastępowania aplikacji bez powodowania przestojów dla użytkowników ma kluczowe znaczenie dla niezawodnego obciążenia. Wszystkie trzy usługi kontenerów opisane w tym artykule obsługują wdrożenia bez przestojów, ale na różne sposoby.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
strategia bez przestojów Aktualizacja ciągła Rolling update oraz wszystkie inne strategie Kubernetes miejsca wdrożenia

Należy pamiętać, że architektury aplikacji muszą również obsługiwać wdrożenie bez przestojów. Aby uzyskać wskazówki, zobacz Azure Well-Architected Framework.

Limity zasobów

Innym ważnym składnikiem niezawodnego środowiska udostępnionego jest kontrola nad użyciem zasobów (na przykład procesora CPU lub pamięci) kontenerów. Należy unikać scenariuszy, w których jedna aplikacja pobiera wszystkie zasoby i pozostawia inne aplikacje w złym stanie.

Aplikacje kontenera AKS Aplikacja internetowa dla kontenerów
limity zasobów (CPU lub pamięć) Na aplikację/kontener Na aplikację/kontener
Na przestrzeń nazw
Według planu App Service
  • Web App for Containers: możesz hostować wiele aplikacji (kontenerów) w jednym planie usługi App Service. Można na przykład przydzielić plan z dwoma rdzeniami procesora CPU i 4 GiB pamięci RAM, w którym można uruchamiać wiele aplikacji internetowych w kontenerach. Nie można jednak ograniczyć jednej z aplikacji do określonej ilości procesora CPU lub pamięci. Wszyscy konkurują o te same zasoby planu usługi App Service. Jeśli chcesz odizolować zasoby aplikacji, musisz utworzyć dodatkowe plany usługi App Service.
  • Container Apps: W środowisku można ustawić limity CPU i pamięci na każdą aplikację. Jesteś jednak ograniczony do zestawu dozwolonych kombinacji procesora i pamięci. Na przykład nie można skonfigurować jednego procesora wirtualnego i 1 GiB pamięci, ale można skonfigurować jedną procesor wirtualny i 2 GiB pamięci. Środowisko usługi Container Apps jest analogiczne do przestrzeni nazw platformy Kubernetes.
  • AKS: możesz wybrać dowolną kombinację procesorów wirtualnych i pamięci, o ile węzły mają sprzęt do obsługi. Możesz również ograniczyć zasoby na poziomie przestrzeni nazw, jeśli chcesz podzielić klaster w ten sposób.

Well-Architected Framework for Reliability (Struktura Well-Architected pod kątem niezawodności)

Ten artykuł koncentruje się na głównych różnicach między funkcjami usług kontenerów na platformie Azure. Jeśli chcesz przejrzeć pełne wskazówki dotyczące niezawodności dla określonej usługi, zobacz następujące artykuły:

Konkluzja

Dobrze zaprojektowane rozwiązania stanowią podstawę dla efektywnych zadań. Mimo że architektury mogą być dostosowywane w miarę zwiększania się obciążenia, a zespoły postępują w swoich podróżach w chmurze, niektóre decyzje, szczególnie w przypadku sieci, są trudne do odwrócenia bez znaczących przestojów lub ponownego wdrożenia.

Ogólnie rzecz biorąc, podczas porównywania usług kontenerów platformy Azure pojawia się motyw: usługa AKS udostępnia najbardziej podstawową infrastrukturę, oferując w ten sposób największą kontrolę i możliwość konfigurowania, a usługa AKS Automatic zapewnia równowagę między kontrolą a prostotą, automatyzując wiele zadań operacyjnych.

Ilość obciążeń operacyjnych i złożoność jest bardzo zmienna dla obciążeń usługi AKS. Niektóre zespoły mogą znacznie zmniejszyć obciążenie operacyjne przy użyciu dodatków i rozszerzeń zarządzanych przez firmę Microsoft, a także funkcji automatycznego uaktualniania. Inni klienci mogą preferować pełną kontrolę nad klastrem w celu wykorzystania pełnej rozszerzalności platformy Kubernetes i ekosystemu CNCF. Na przykład, chociaż firma Microsoft oferuje rozwiązanie Flux jako zarządzane rozszerzenie GitOps, wiele zespołów decyduje się zamiast tego samodzielnie skonfigurować i obsługiwać usługę ArgoCD.

Zespoły obciążeń, które na przykład nie wymagają aplikacji CNCF, mają mniej doświadczenia w operacjach lub wolą skupić się na funkcjach aplikacji, mogą preferować ofertę PaaS. Zalecamy, aby najpierw rozważyli usługę Container Apps.

Mimo że usługi Container Apps i Web App for Containers to oferty PaaS, które zapewniają podobne poziomy infrastruktury zarządzanej przez firmę Microsoft, kluczową różnicą jest to, że usługa Container Apps jest bliżej platformy Kubernetes i zapewnia dodatkowe natywne funkcje chmury na potrzeby odnajdywania usług, automatycznego skalowania opartego na zdarzeniach, integracji dapr i nie tylko. Jednak zespoły, które nie potrzebują tych możliwości i znają modele sieci i wdrażania usługi App Service, mogą preferować usługę Web App for Containers.

Uogólnienia mogą ułatwić zawężenie listy usług kontenerów platformy Azure do rozważenia. Należy jednak pamiętać, że musisz również zweryfikować wybór, sprawdzając szczegółowo poszczególne wymagania i dopasowując je do funkcji specyficznych dla usług.

Współpracownicy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Główni autorzy:

Inni współautorzy:

Aby wyświetlić niepubliczne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki