Konfigurowanie zasad limitu przydziału zasobów usługi AKS za pomocą usługi Azure Policy dla platformy Kubernetes

Ukończone

Usługa Azure Policy pomaga wymuszać standardy i oceniać zgodność na dużą skalę dla środowiska chmury. Dobrym rozwiązaniem jest zaimplementowanie reguł biznesowych przez firmy w celu zdefiniowania sposobu, w jaki pracownicy mogą korzystać z oprogramowania, sprzętu i innych zasobów firmy w organizacji. W związku z tym firmy używają zasad do wymuszania, przeglądania i definiowania dostępu. Zasady ułatwiają organizacji spełnienie wymagań dotyczących ładu, wymogów prawnych, implementacji najlepszych rozwiązań i ustanowienia konwencji organizacyjnych.

Usługa Azure Kubernetes Service (AKS) umożliwia efektywne organizowanie aplikacji natywnych dla chmury przy użyciu zasad. Zdajesz sobie sprawę, że musisz wymusić reguły biznesowe, aby zarządzać sposobem używania usługi AKS przez zespoły w celu zapewnienia ekonomicznego podejścia. Postanawiasz użyć usługi Azure Policy, aby zastosować tę ideę do zasobów w chmurze opartych na platformie Azure.

Przed omówieniem sposobu korzystania z usługi Azure Policy dla platformy Kubernetes należy zapoznać się z kilkoma kolejnymi pojęciami, które umożliwiają korzystanie z tej funkcji z poziomu platformy Kubernetes.

Co to jest kontroler wpływu danych platformy Kubernetes?

Kontroler wpływu danych to wtyczka platformy Kubernetes, która przechwytuje uwierzytelnione i autoryzowane żądania do interfejsu API platformy Kubernetes przed trwałością żądanego obiektu Kubernetes. Załóżmy na przykład, że wdrażasz nowe obciążenie, a wdrożenie obejmuje żądanie zasobnika spełniającego określone wymagania dotyczące pamięci. Kontroler wpływu danych przechwytuje żądanie wdrożenia i musi autoryzować wdrożenie przed jego utrwaleniem w klastrze.

Kontroler wpływu danych można traktować jako oprogramowanie, które reguluje i wymusza sposób używania i projektowania klastra. Ogranicza żądania tworzenia, usuwania i modyfikowania obiektów Kubernetes.

Co to jest element webhook kontrolera wpływu danych?

Element webhook kontrolera wpływu danych to funkcja wywołania zwrotnego HTTP, która odbiera żądania wpływu danych, a następnie wykonuje na nich działania. Kontrolery przyjęć muszą być skonfigurowane w czasie wykonywania. Te kontrolery istnieją dla skompilowanej wtyczki przyjęcia lub wdrożonego rozszerzenia, które działa jako element webhook.

Dostępne są dwa rodzaje elementów webhook kontrolerów wpływu danych: walidujący element webhook lub modyfikujący element webhook mutacji. Modyfikujący element webhook jest wywoływany jako pierwszy i może zmienić i zastosować wartości domyślne dla obiektów wysyłanych do serwera interfejsu API. Walidujący element webhook waliduje wartości obiektów i może odrzucać żądania.

Co to jest agent Open Policy Agent (OPA)?

Open Policy Agent (OPA) to aparat zasad ogólnego przeznaczenia typu open source, który udostępnia deklaratywny język wysokiego poziomu do tworzenia zasad. Te zasady umożliwiają zdefiniowanie reguł nadzorujących zachowanie systemu.

Co to jest element OPA Gatekeeper?

OPA Gatekeeper to element webhook typu open source, weryfikowany przez platformę Kubernetes, który wymusza niestandardowe zasady oparte na definicji zasobów (CRD), które są zgodne ze składnią OPA.

Celem programu OPA Gatekeeper jest umożliwienie dostosowywania zasad przyjmowania przy użyciu konfiguracji zamiast zakodowanych reguł zasad dla usług. Zapewnia on również pełny widok klastra i identyfikowanie zasobów naruszających zasady.

Użyj programu OPA Gatekeeper, aby zdefiniować zasady dla całej organizacji przy użyciu reguł:

  • Dla wszystkich skonfigurowanych zasobników są wymuszane maksymalne limity zasobów, takie jak limity procesora CPU i pamięci.

  • Wdrażanie obrazów jest dozwolone tylko z zatwierdzonych repozytoriów.

  • Konwencja nazewnictwa etykiet dla wszystkich przestrzeni nazw w klastrze musi określać punkt kontaktu dla każdej przestrzeni nazw.

  • Należy zapewnić, że usługi klastra mają globalnie unikatowe selektory.

Usługa Azure Policy dla AKS

Usługa Azure Policy stanowi rozszerzenie elementu OPA Gatekeeper w wersji 3 i można ją zintegrować z usługą AKS na podstawie wbudowanych zasad. W ramach tych zasad są stosowane na dużą skalę, w scentralizowany i spójny sposób, wymuszenia i zabezpieczenia w Twoim klastrze.

Zespoły deweloperów w firmie chcą zoptymalizować programowanie i wprowadzić narzędzia programistyczne, takie jak DevSpaces, aby uprościć przepływ pracy tworzenia oprogramowania w środowisku Kubernetes. Chcesz się upewnić, że członkowie zespołu przestrzegają określonych limitów zasobów dla swoich projektów. Decydujesz się na wdrożenie zasad, które definiują dozwolone zasoby obliczeniowe, zasoby pamięci i liczbę obiektów dozwoloną w przestrzeniach nazw programowania.

Aby skonfigurować limity zasobów, można zastosować limity przydziału zasobów na poziomie przestrzeni nazw i monitorować użycie zasobów w celu dostosowania limitów przydziału zasad. Użyj tej strategii, aby zarezerwować i ograniczyć zasoby w zespole programistycznym.

Jak włączyć dodatek usługi Azure Policy dla usługi AKS

Aby zarejestrować funkcję Dodatek usługi Azure Policy dla usługi AKS, należy wykonać kilka kroków. Przedstawimy tutaj przykłady, ale faktycznie wykonasz kroki opisane w następnej lekcji.

  1. Zarejestruj dwóch dostawców zasobów za pomocą polecenia az provider register:

    • Microsoft.ContainerService i Microsoft.Policy Szczegółowe informacje: ci dostawcy zasobów obsługują akcje, takie jak wykonywanie zapytań dotyczących zdarzeń zasad i zarządzanie kontenerami. Są to akcje do wykonywania zapytań, tworzenia, aktualizowania lub usuwania korygowania zasad.

    Oto przykład dwóch poleceń rejestracji:

    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.PolicyInsights
    
  2. Zarejestruj funkcję AKS-AzurePolicyAutoApprove przy użyciu dostawcy zasobów Microsoft. ContainerService. Oto przykład polecenia:

    az feature register --namespace Microsoft.ContainerService --name AKS-AzurePolicyAutoApprove
    
  3. Po potwierdzeniu pomyślnej rejestracji funkcji uruchom az provider register polecenie z parametrem --namespace , aby propagować nową rejestrację funkcji. Oto przykład polecenia:

    az provider register -n Microsoft.ContainerService
    
  4. Włącz dodatek azure-policy:

    az aks enable-addons \
        --addons azure-policy \
        --name myAKSCluster \
        --resource-group myResourceGroup
    

    Aktywowanie obciążeń dodatku w dwóch przestrzeniach nazw w klastrze. Pierwsza przestrzeń nazw to kube-system, który zawiera azure-policy elementy i azure-policy-webhook. Druga przestrzeń nazw to gatekeeper-system, który zawiera gatekeeper-controller-managerelement . Te obciążenia są odpowiedzialne za ocenę żądań przesyłanych do płaszczyzny sterowania usługi AKS. Na podstawie skonfigurowanych zasad element webhook zasad może zezwalać na żądania lub je odrzucać.

Przypisywanie wbudowanej definicji zasad

Do zarządzania zasadami środowiska platformy Azure służy pulpit nawigacyjny zgodności z zasadami platformy Azure. Pulpit nawigacyjny umożliwia przechodzenie do szczegółów poszczególnych zasobów na poziomie zasad. Pomaga to zapewnić zgodność zasobów przy użyciu korygowania zbiorczego istniejących zasobów i automatycznego korygowania nowych.

Dla każdej zasady jest wyświetlany przegląd następujących informacji:

Element opis Przykład
Nazwa/nazwisko Nazwa zasady. [Wersja zapoznawcza]: Upewnij się, że limity zasobów procesora CPU i pamięci kontenera nie przekraczają określonych limitów w klastrze Kubernetes.
Scope Grupa zasobów subskrypcji, do której mają zastosowanie te zasady. mySubscription/rg-akscostsaving.
Stan zgodności Stan przypisanych zasad. Zgodne, Sprzeczne, Nie uruchomione lub Niezarejestrowane.
Zgodność zasobu Procent zasobów, które są zgodne z zasadami. To obliczenie uwzględnia zasoby zgodne, niezgodne i w konflikcie. 100
Niezgodne zasoby Liczba unikatowych zasobów, które naruszają co najmniej jedną regułę zasad. 3
Niezgodne zasady Liczba niezgodnych zasad. 5

W tym miejscu możesz przejść do szczegółów poszczególnych zasobów i poszczególnych zasad dla wyzwolonych zdarzeń. Możesz na przykład sprawdzić szczegóły wdrożenia odrzuconego obciążenia.

Przypisywanie zasad

Aby przypisać zasady, wybierz opcję Przypisania w sekcji Tworzenie w panelu nawigacyjnym usługi Azure Policy.

Zasady platformy Azure można przypisywać na jeden z dwóch sposobów: jako grupę zasad nazywanych inicjatywą lub jako pojedynczą zasadę.

Przypisanie inicjatywy

Przypisanie inicjatywy to kolekcja definicji zasad platformy Azure zgrupowanych razem, aby osiągnąć konkretny cel. Na przykład może nim być zastosowanie standardu Payment Card Industry Data Security Standard w zasobach.

Przypisanie zasad

Przypisanie zasad przypisuje pojedyncze zasady, takie jak Nie zezwalaj na kontenery uprzywilejowane w klastrze Kubernetes.

Jak przypisać zasady

Wszystkie zasady definiuje się przy użyciu szeregu kroków konfiguracyjnych. Ilość przechwytywanych informacji zależy od wybranego typu zasad.

Na przykład aby ograniczyć wdrażanie zasobów przez deweloperów w środowisku chmury firmy, można przypisać jedne z wbudowanych zasad platformy Azure dla usługi Azure Kubernetes Service. Nazwa tych zasad to Upewnij się, że limity zasobów pamięci i procesora CPU kontenera nie przekraczają limitów określonych dla klastra Kubernetes.

Zasady wymagają ustawienia limitu dozwolonych zasobów żądanych przez żądania wdrożenia.

Przyjrzyjmy się konfigurowalnym opcjom przypisywania zasad.

Podstawowe informacje o zasadach

Pierwszy krok wymaga wybrania i wprowadzenia podstawowych informacji definiujących nowe zasady. Na przykład te informacje mogą być zasadami i zakresem zasobów. W tej tabeli przedstawiono każdy element, który można skonfigurować:

Element opis
Scope Zakres określa, jakie zasoby lub grupa zasobów wymusza przypisanie zasad. Ta wartość jest oparta na subskrypcji lub grupie zarządzania. Możesz wykluczyć zasoby z wybranego zakresu na poziomie o jeden niższym niż poziom zakresu.
Definicja zasad Zasady, które chcesz zastosować. Możesz wybrać jedną z kilku opcji wbudowanych zasad.
Nazwa przypisania Nazwa używana do identyfikowania przypisanych zasad.
Opis Dowolny opis tekstowy opisujący zasady.
Egzekwowanie zasad Możesz wybrać pozycję Włączone i Wyłączone. W przypadku ustawienia Wyłączone zasady nie są stosowane, a żądania nie są odrzucane z powodu niezgodności.
Przypisane przez Dowolna wartość tekstowa, która domyślnie jest równa zarejestrowanemu użytkownikowi. Możesz zmienić tę wartość.

Parametry zasad

Zasady wymagają skonfigurowania reguł biznesowych, które mają zastosowanie do poszczególnych zasad. Nie wszystkie zasady mają te same reguły biznesowe, dlatego każda zasada ma inne parametry.

Na przykład zasady Upewnij się, że limity zasobów pamięci i procesora CPU kontenera nie przekraczają limitów określonych dla klastra Kubernetes wymagają ustawienia trzech parametrów:

  • Maksymalna dozwolona liczba jednostek procesora CPU dla kontenera
  • Maksymalna liczba bajtów pamięci dozwolonych dla kontenera
  • Lista przestrzeni nazw kubernetes do wykluczenia z zasad

Porównaj te zasady z zasadami Aplikacja internetowa powinna być dostępna tylko za pośrednictwem protokołu HTTPS, które nie mają żadnych niestandardowych parametrów do skonfigurowania.

Wszystkie zasady mają ustawienie Efekt. To ustawienie włącza lub wyłącza wykonywanie zasad. Podobnie jak w przypadku parametrów również zasady mogą mieć różne opcje ustawienia Efekt.

Na przykład w przypadku zasad zarządzania zasobami można wybrać opcję inspekcji, odmowy lub wyłączenia jako wartość Efekt . W przypadku zasad aplikacji internetowej można wybrać tylko wartość audit lub disable.

W poniższej tabeli wymieniono wszystkie efekty, które są obecnie obsługiwane w definicjach zasad:

Efekt opis
Dołączanie Dodaje więcej pól do żądanego zasobu
Audit Tworzy zdarzenie ostrzegawcze w dzienniku aktywności
AuditIfNotExists Umożliwia inspekcję zasobów związanych z zasobem zgodnym z warunkiem
Deny Zapobiega żądaniu zasobu, które nie jest zgodne ze zdefiniowanymi standardami za pomocą definicji zasad, i kończy się niepowodzeniem żądania
DeployIfNotExists Wykonuje wdrożenie szablonu po spełnieniu warunku
Disabled Przydatne w przypadku testowania sytuacji lub sytuacji, gdy definicja zasad sparametryzowała efekt i chcesz wyłączyć pojedyncze przypisanie
Modify Dodaje, aktualizuje lub usuwa tagi w zasobie podczas tworzenia lub aktualizowania

Korygowanie zasad

Ostatnim krokiem jest rozważenie korygowania zasad. Po przypisaniu zasad możliwe jest, że zasoby już istnieją i naruszają nowe zasady. Domyślnie do nowych zasad są stosowane tylko nowo utworzone zasoby. Użyj korygowania, aby sprawdzić istniejące zasoby po przypisaniu nowych zasad. Zadania korygowania mogą się różnić w zależności od typów zastosowanych zasad.

W następnym ćwiczeniu użyjesz zasad Upewnij się, że limity zasobów procesora CPU i pamięci kontenera nie przekraczają określonych limitów w zasadach klastra Kubernetes, aby jeszcze bardziej obniżyć koszty.