Udostępnij przez


Omówienie zarządzanych przestrzeni nazw w usłudze Azure Kubernetes Service (AKS)

Dotyczy: ✔️ AKS Automatic AKS Standard ✔️

Podczas zarządzania klastrami w usłudze Azure Kubernetes Service (AKS) często trzeba odizolować zespoły i obciążenia. Dzięki logicznej izolacji można używać jednego klastra AKS do obsługi wielu obciążeń, zespołów czy środowisk. Przestrzenie nazw platformy Kubernetes tworzą granicę izolacji logicznej dla obciążeń i zasobów. Wykonywanie izolacji logicznej obejmuje implementowanie skryptów i procesów w celu tworzenia przestrzeni nazw, ustawiania limitów zasobów, stosowania zasad sieciowych i udzielania zespołowi dostępu za pośrednictwem kontroli dostępu opartej na rolach. Dowiedz się, jak używać zarządzanych przestrzeni nazw w usłudze Azure Kubernetes Service (AKS), aby uprościć zarządzanie przestrzeniami nazw, wielodostępność klastra i izolację zasobów.

Logiczne rozdzielenie klastrów zwykle zapewnia większą gęstość zasobników niż klastry odizolowane fizycznie, przy mniejszej liczbie nadmiarowej mocy obliczeniowej pozostającej nieużywaną w klastrze. Można skalować liczbę węzłów w górę lub w dół, aby spełnić wymagania, w połączeniu z funkcją automatycznego skalowania klastra lub funkcją automatycznego aprowizowania węzłów. To najlepsze rozwiązanie minimalizuje koszty, uruchamiając tylko wymaganą liczbę węzłów.

Zasady sieciowe

Zasady sieciowe to zasoby platformy Kubernetes, których można użyć do kontrolowania przepływu ruchu między zasobnikami, przestrzeniami nazw i zewnętrznymi punktami końcowymi. Zasady sieciowe umożliwiają definiowanie reguł ruchu przychodzącego (przychodzącego) i wychodzącego (wychodzącego), zapewniając, że dozwolona jest tylko autoryzowana komunikacja. Stosując zasady sieciowe, można zwiększyć bezpieczeństwo i izolację obciążeń w klastrze.

Uwaga / Notatka

Domyślna reguła zasad sieciowych ruchu przychodzącego Zezwalaj na tę samą przestrzeń nazw wybiera ustawienie bezpieczne domyślnie. Jeśli potrzebujesz, aby Twoje Usługi Kubernetes, Ingresy lub bramy były dostępne spoza przestrzeni nazw, w której zostały wdrożone, na przykład z kontrolera Ingress wdrożonego w oddzielnej przestrzeni nazw, musisz wybrać opcję Zezwalaj na wszystko. Następnie możesz zastosować własne zasady sieciowe, aby ograniczyć ruch przychodzący tylko z tej przestrzeni nazw.

Zarządzane przestrzenie nazw są wyposażone w zestaw wbudowanych zasad.

  • Zezwalaj na wszystko: zezwala na cały ruch sieciowy.
  • Zezwalaj na tę samą przestrzeń nazw: zezwala na cały ruch sieciowy w tej samej przestrzeni nazw.
  • Odmów wszystkie: odrzuca cały ruch sieciowy.

Można zastosować dowolne wbudowane zasady zarówno dla reguł ruchu przychodzącego , jak i ruchu wychodzącego , a także mają następujące wartości domyślne.

Policy Wartość domyślna
Wejście Zezwalaj na tę samą przestrzeń nazw
Wyjście Zezwalaj na wszystkie

Uwaga / Notatka

Użytkownicy z akcją Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/write, taką jak Azure Kubernetes Service RBAC Writer, w roli Microsoft Entra ID, do której są przypisani, mogą dodawać więcej zasad sieci za pośrednictwem interfejsu API Kubernetes.

Jeśli na przykład administrator stosuje Deny All zasady dla ruchu przychodzącego/wychodzącego, a użytkownik stosuje Allow zasady dla przestrzeni nazw za pośrednictwem interfejsu API Kubernetes, Allow zasady mają priorytet nad Deny All zasadami, a ruch może przepływać dla przestrzeni nazw.

Limity przydziałów zasobów

Przydziały zasobów to zasoby platformy Kubernetes używane do zarządzania i ograniczania zużycia zasobów w przestrzeniach nazw w obrębie klastra. Umożliwiają administratorom definiowanie ograniczeń dotyczących ilości procesora, pamięci, pamięci masowej lub innych zasobów używanych przez obciążenia w przestrzeni nazw. Stosując limity przydziałów zasobów, można zapewnić uczciwą dystrybucję zasobów, zapobiec nadmiernemu użyciu zasobów i zachować stabilność klastra.

Zarządzane przestrzenie nazw można utworzyć przy użyciu następujących przydziałów zasobów:

  • Żądania i limity procesora CPU: zdefiniuj minimalną i maksymalną ilość zasobów procesora CPU, które obciążenia w przestrzeni nazw mogą żądać lub zużywać. Przydział zapewnia, że obciążenia mają wystarczające zasoby CPU do działania, jednocześnie zapobiegając nadmiernemu użyciu wpływającemu na inne przestrzenie nazw. Limit przydziału jest definiowany w formularzu milliCPU.
  • Żądania i limity pamięci: określ minimalną i maksymalną ilość zasobów pamięci, które obciążenia w przestrzeni nazw mogą żądać lub zużywać. Limit przydziału pomaga zachować stabilność, unikając nadmiernego przydziału pamięci i zapewniając uczciwą alokację zasobów w przestrzeniach nazw. Limit przydziału jest definiowany w postaci potęg dwójki, takich jak Ei,Pi, Ti, Gi, Mi, Ki.

Etykiety i adnotacje

Etykiety i adnotacje Kubernetes to metadane dołączone do obiektów Kubernetes, takich jak przestrzenie nazw, które dostarczają dodatkowych informacji. Etykiety to pary klucz-wartość używane do organizowania i wybierania zasobów, co umożliwia wydajne grupowanie i wykonywanie zapytań. Adnotacje przechowują niezidentyfikowane metadane, takie jak szczegóły konfiguracji lub instrukcje operacyjne, które są używane przez narzędzia lub systemy.

Opcjonalnie możesz ustawić etykiety Kubernetes i adnotacje, które mają być stosowane w ramach przestrzeni nazw.

Polityka adopcji

Zasady wdrażania określają sposób obsługi istniejącej przestrzeni nazw na platformie Kubernetes podczas tworzenia zarządzanej przestrzeni nazw.

Ostrzeżenie

Dołączanie istniejącej przestrzeni nazw do zarządzania może spowodować zakłócenia. Jeśli zastosowany limit przydziału zasobów jest mniejszy niż to, czego już żądają zasobniki, nowe wdrożenia i zasobniki, które przekraczają limit przydziału, zostaną odrzucone. Nie ma to wpływu na istniejące wdrożenia, ale skalowanie jest odrzucane. Zastosowanie zasad sieciowych do istniejącej przestrzeni nazw może mieć wpływ na istniejący ruch. Upewnij się, że zasady są testowane i weryfikowane, aby uniknąć niezamierzonych zakłóceń komunikacji między podami lub zewnętrznymi punktami końcowymi.

Dostępne są następujące opcje:

  • Nigdy: jeśli przestrzeń nazw już istnieje w klastrze, próba utworzenia tej przestrzeni nazw jako zarządzanej przestrzeni nazw zakończy się niepowodzeniem.
  • IfIdentical: przejmij istniejącą przestrzeń nazw do zarządzania, pod warunkiem, że nie ma różnic między istniejącą przestrzenią nazw a żądaną konfiguracją.
  • Zawsze: zawsze przejmij istniejącą przestrzeń nazw do zarządzania, nawet jeśli niektóre pola w przestrzeni nazw mogą zostać zastąpione.

Usuwanie zasad

Zasady usuwania określają sposób obsługi przestrzeni nazw Kubernetes po usunięciu zarządzanego zasobu przestrzeni nazw.

Ostrzeżenie

Usunięcie zarządzanej przestrzeni nazw z zasadą Delete powoduje usunięcie wszystkich zasobów w tej przestrzeni nazw, takich jak Deploymenty, Usługi, Ingry i inne obiekty Kubernetes. Przed kontynuowaniem upewnij się, że wykonasz kopię zapasową lub zmigrujesz wszystkie krytyczne zasoby.

Dostępne są następujące opcje:

  • Zachowaj: usuwaj tylko zarządzany zasób przestrzeni nazw, zachowując przestrzeń nazw Kubernetes bez zmian. Ponadto etykieta ManagedByARM zostanie usunięta z przestrzeni nazw.
  • Usuń: usuń razem zarówno zasób zarządzanej przestrzeni nazw, jak i przestrzeń nazw Kubernetes.

Wbudowane role zarządzanych przestrzeni nazw

Przestrzenie nazw zarządzane używają następujących wbudowanych ról dla warstwy kontrolnej.

Role Opis
Kontrybutor przestrzeni nazw usługi Azure Kubernetes Service Umożliwia dostęp do tworzenia, aktualizowania i usuwania zarządzanych przestrzeni nazw w klastrze.
Użytkownik przestrzeni nazw usługi Azure Kubernetes Service Umożliwia dostęp tylko do odczytu do zarządzanej przestrzeni nazw w klastrze. Umożliwia dostęp do listy poświadczeń w przestrzeni nazw.

Zarządzane przestrzenie nazw używają następujących wbudowanych ról dla płaszczyzny danych.

Role Opis
Czytelnik RBAC w usłudze Azure Kubernetes Service Umożliwia dostęp tylko do odczytu, aby wyświetlić większość obiektów w przestrzeni nazw. Nie zezwala na wyświetlanie ról ani powiązań ról. Ta rola nie zezwala na wyświetlanie wpisów tajnych, ponieważ odczytywanie zawartości wpisów tajnych umożliwia dostęp do poświadczeń usługi ServiceAccount w przestrzeni nazw, co umożliwi dostęp do interfejsu API jako dowolne konto usługi w przestrzeni nazw (forma eskalacji uprawnień).
Autor RBAC usługi Azure Kubernetes Service Umożliwia dostęp do odczytu/zapisu do większości obiektów w przestrzeni nazw. Ta rola nie zezwala na wyświetlanie ani modyfikowanie ról ani powiązań ról. Jednak ta rola umożliwia uzyskiwanie dostępu do wpisów tajnych i uruchamianie zasobników jako dowolnego konta usługi w przestrzeni nazw, dzięki czemu może służyć do uzyskiwania poziomów dostępu interfejsu API dowolnego konta usługi w przestrzeni nazw.
Administrator RBAC w usłudze Azure Kubernetes Service Umożliwia dostęp do odczytu/zapisu do większości zasobów w przestrzeni nazw, w tym możliwość tworzenia ról i powiązań ról w przestrzeni nazw. Ta rola nie zezwala na prawo zapisu do limitu przydziału zasobów ani do samej przestrzeni nazw.

Przypadki użycia zarządzanych przestrzeni nazw

Prawidłowe konfigurowanie przestrzeni nazw ze skojarzonymi przydziałami lub zasadami sieciowymi może być skomplikowane i czasochłonne. Przestrzenie nazw zarządzanych umożliwiają konfigurowanie wstępnie skonfigurowanych przestrzeni nazw w klastrach usługi AKS, z którymi można korzystać przy użyciu interfejsu wiersza polecenia platformy Azure.

W poniższych sekcjach opisano niektóre typowe przypadki użycia przestrzeni nazw zarządzanych.

Zarządzanie zespołami i zasobami w Azure Kubernetes Service (AKS)

Załóżmy, że jesteś administratorem w małym startupie. Masz utworzony klaster AKS i chcesz utworzyć przestrzenie nazw dla deweloperów z zespołów finansowych, prawnych i projektowych. Podczas konfigurowania środowiska firmy chcesz upewnić się, że dostęp jest ściśle kontrolowany, zasoby są odpowiednio ograniczone, a środowiska są prawidłowo zorganizowane.

  • Zespół finansowy przyjmuje formularze i pliki ze wszystkich zespołów w całej firmie, ale posiada poufne informacje, które najlepiej nie powinny pozostawiać swojego środowiska. Ich aplikacje i przepływy pracy są lżejsze po stronie obliczeniowej, ale zużywają dużo pamięci. W wyniku tego decydujesz się na utworzenie przestrzeni nazw, która umożliwia cały ruch przychodzący sieci i ruch wychodzący tylko wewnątrz tej przestrzeni nazw, dostosowując odpowiednio zasoby. Etykieta przestrzeni nazw pomaga łatwo zidentyfikować, który zespół z niej korzysta.

    az aks namespace add \
       --name $FINANCE_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 250m \
       --cpu-limit 500m \
       --memory-request 512Mi \
       --memory-limit 2Gi \
       --ingress-policy AllowAll \
       --egress-policy AllowSameNamespace \
       --labels team=finance
    
  • Zespół prawny zajmuje się głównie danymi poufnymi. Ich aplikacje używają dużej ilości pamięci, ale wymagają niewielkiej ilości zasobów obliczeniowych. Decydujesz się skonfigurować przestrzeń nazw, która jest bardzo restrykcyjna zarówno dla polityk wejścia/wyjścia, jak i odpowiednio dostosować ich limity przydziału zasobów.

    az aks namespace add \
       --name $LEGAL_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 250m \
       --cpu-limit 500m \
       --memory-request 2Gi \
       --memory-limit 5Gi \
       --ingress-policy DenyAll \
       --egress-policy DenyAll \
       --labels team=legal
    
  • Zespół projektowy musi mieć możliwość swobodnego przepływu danych, aby zaprezentować swoją pracę w całej firmie. Zachęcają również zespoły do wysyłania im treści w celu uzyskania informacji referencyjnych. Ich aplikacje intensywnie korzystają i wymagają znacznego zasobu pamięci i procesora. Decydujesz się na skonfigurowanie ich z minimalnie restrykcyjną przestrzenią nazw i przydzielenie dla nich znacznej ilości zasobów.

    az aks namespace add \
       --name $DESIGN_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 2000m \
       --cpu-limit 2500m \
       --memory-request 5Gi \
       --memory-limit 8Gi \
       --ingress-policy AllowAll \
       --egress-policy AllowAll \
       --labels team=design
    

Po skonfigurowaniu tych przestrzeni nazw masz teraz środowiska dla trzech zespołów w organizacji, które powinny umożliwić każdemu zespołowi rozpoczęcie pracy w środowisku, które najlepiej odpowiada ich potrzebom. Administratorzy mogą używać wywołań Azure CLI, aby zaktualizować przestrzenie nazw w miarę zmieniających się potrzeb.

Wyświetlanie zarządzanych przestrzeni nazw

W miarę wzrostu liczby zespołów, z którymi masz do czynienia, lub w miarę rozwoju organizacji, może być konieczne przejrzenie ustawionych przestrzeni nazw.

Załóżmy, że chcesz przejrzeć przestrzenie nazw w klastrze z poprzedniej sekcji , aby upewnić się, że istnieją trzy przestrzenie nazw.

Użyj polecenia az aks namespace list, aby przejrzeć przestrzenie nazw.

az aks namespace list \
  --cluster-name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP \
  --output table

Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:

Name                               ResourceGroup    Location
------------------                 ---------------  ----------
$CLUSTER_NAME/$DESIGN_NAMESPACE    $RESOURCE_GROUP  <LOCATION>
$CLUSTER_NAME/$LEGAL_NAMESPACE     $RESOURCE_GROUP  <LOCATION>
$CLUSTER_NAME/$FINANCE_NAMESPACE   $RESOURCE_GROUP  <LOCATION>

Kontrolowanie dostępu do zarządzanych przestrzeni nazw

Możesz dodatkowo użyć ról RBAC platformy Azure, przypisanych do każdej przestrzeni nazw, aby określić, którzy użytkownicy mają dostęp do określonych działań w przestrzeni nazw. Dzięki odpowiedniej konfiguracji można zapewnić użytkownikom dostęp do wszystkich potrzebnych im uprawnień w ramach przestrzeni nazw, jednocześnie ograniczając ich dostęp do innych przestrzeni nazw lub zasobów w całym klastrze.

Dalsze kroki