AKS-resourcequotumbeleid configureren met behulp van Azure Policy voor Kubernetes

Voltooid

Azure Policy helpt u standaarden af te dwingen en de naleving op schaal voor uw cloudomgeving te beoordelen. Het is een goede gewoonte voor bedrijven om bedrijfsregels te implementeren om te bepalen hoe werknemers bedrijfssoftware, hardware en andere resources in de organisatie mogen gebruiken. Daarom gebruiken bedrijven beleid om toegang af te dwingen, te controleren en te definiëren. Een beleidsregel helpt organisaties om te voldoen aan governance en wettelijke vereisten, en om best practices en bedrijfsconventies te implementeren.

Met Azure Kubernetes Service (AKS) kunt u uw cloudeigen toepassingen efficiënt organiseren met beleid. U realiseert zich dat u bedrijfsregels moet afdwingen om te beheren hoe de teams AKS gebruiken om een rendabele benadering te garanderen. U besluit Azure Policy te gebruiken om dit idee toe te passen op uw Azure-cloudresources.

Voordat u gaat bespreken hoe u Azure Policy voor Kubernetes gebruikt, moet u meer concepten begrijpen die deze functie inschakelen vanuit Kubernetes.

Wat is een Kubernetes-toegangscontroller?

Een toegangscontroller is een Kubernetes-invoegtoepassing die geverifieerde en geautoriseerde aanvragen voor de Kubernetes-API vóór de persistentie van het aangevraagde Kubernetes-object onderschept. Stel bijvoorbeeld dat u een nieuwe werkbelasting implementeert en de implementatie een podaanvraag bevat met specifieke geheugenvereisten. De toegangscontroller onderschept de implementatieaanvraag en moet de implementatie autoriseren voordat deze permanent in het cluster wordt opgeslagen.

U kunt een toegangscontroller beschouwen als software die bepaalt en afdwingt hoe het cluster wordt gebruikt en is ontworpen. Hiermee worden aanvragen voor het maken, verwijderen en wijzigen van Kubernetes-objecten beperkt.

Wat is een toegangscontroller-webhook?

Een toegangscontroller-webhook is een HTTP-callbackfunctie die toegangsaanvragen ontvangt en daar vervolgens op reageert. Toegangscontrollers moeten tijdens runtime worden geconfigureerd. Deze controllers bestaan voor uw gecompileerde toegangsinvoegtoepassing of een geïmplementeerde extensie die wordt uitgevoerd als een webhook.

Toegangswebhooks zijn beschikbaar in twee soorten: als een validatiewebhook of een mutatiewebhook. Een mutatiewebhook wordt eerst aangeroepen en kan standaardwaarden wijzigen en toepassen op de objecten die naar de API-server worden verzonden. Een validatiewebhook valideert objectwaarden en kan aanvragen afwijzen.

Wat is de OPA (Open Policy Agent)?

De Open Policy Agent (OPA) is een opensource-beleidsengine voor algemeen gebruik die u de beschikking geeft over een op hoog niveau gedeclareerde taal voor het schrijven van beleid. Met deze beleidsinstanties kunt u regels definiëren die bepalen hoe uw systeem zich moet gedragen.

Wat is de OPA Gatekeeper?

De OPA Gatekeeper is een opensource-, validerende, Kubernetes-toegangscontrollerwebhook die op BASIS van CRD-beleid (Custom Resource Definition) afdwingt dat de OPA-syntaxis volgt.

Het doel van de OPA Gatekeeper is om u toe te staan toegangsbeleid aan te passen met behulp van configuratie in plaats van in code vastgelegde beleidsregels voor services. Daarnaast biedt deze u een volledig overzicht van uw cluster zodat u resources kunt identificeren die in strijd zijn met het beleid.

Gebruik de OPA Gatekeeper om beleidsregels voor de hele organisatie te definiëren met regels:

  • De maximale resourcelimieten, zoals CPU- en geheugenlimieten, worden afgedwongen voor alle geconfigureerde pods.

  • De implementatie van installatiekopieën is alleen toegestaan vanuit goedgekeurde opslagplaatsen.

  • Naamconventie voor labels voor alle naamruimten in een cluster moet een contactpunt voor elke naamruimte opgeven.

  • Verplichten dat clusterservices wereldwijd unieke selectors hebben.

Azure Policy voor AKS

Azure Policy vormt een uitbreiding op de OPA Gatekeeper versie 3 en kan worden geïntegreerd met AKS via ingebouwde beleidsregels. Deze beleidsregels zijn van toepassing op afdwinging en beveiliging op schaal voor uw cluster op een centrale en consistente manier.

De ontwikkelteams van uw bedrijf willen ontwikkeling optimaliseren en ontwikkelhulpmiddelen zoals DevSpaces introduceren om de Kubernetes-ontwikkelwerkstroom te vereenvoudigen. U wilt er zeker van zijn dat de teamleden zich houden aan specifieke resourcelimieten voor hun projecten. U besluit om beleid te implementeren waarmee het aantal toegestane rekenresources, opslagresources en objecten in de ontwikkelnaamruimten wordt gedefinieerd.

Om resourcelimieten in te stellen, kunt u resourcequota toepassen op het niveau van de naamruimte en het resourcegebruik controleren om beleidsquota aan te passen. Gebruik deze strategie om resources voor het ontwikkelteam te reserveren en te beperken.

De Azure Policy-invoegtoepassing voor AKS inschakelen

Er zijn enkele stappen nodig om de functie Azure Policy-invoegtoepassing voor AKS te registreren. We geven hier voorbeelden, maar u voert de stappen in de volgende les uit.

  1. Registreer twee resourceproviders met behulp van de opdracht az provider register:

    • Microsoft.ContainerService en Microsoft.PolicyInsights: deze resourceproviders ondersteunen acties zoals het opvragen van informatie over beleidsevenementen en het beheren van containers. Dit zijn acties om beleid op te vragen, te maken, bij te werken of te verwijderen.

    Hier volgt een voorbeeld van de twee registratieopdrachten:

    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.PolicyInsights
    
  2. Registreer de functie AKS-AzurePolicyAutoApprove bij de resourceprovider Microsoft. ContainerService. Hier volgt een voorbeeld van de opdracht:

    az feature register --namespace Microsoft.ContainerService --name AKS-AzurePolicyAutoApprove
    
  3. Nadat u de geslaagde functieregistratie hebt bevestigd, voert u de az provider register opdracht uit met de --namespace parameter om de nieuwe functieregistratie door te geven. Hier volgt een voorbeeld van de opdracht:

    az provider register -n Microsoft.ContainerService
    
  4. Schakel de azure-policy-invoegtoepassing in:

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

    Als u de invoegtoepassing activeert, worden workloads in twee naamruimten in uw cluster gepland. De eerste naamruimte is kube-system, dat de azure-policy en azure-policy-webhookbevat. De tweede naamruimte is gatekeeper-system, dat de gatekeeper-controller-manager. Deze werkbelastingen zijn verantwoordelijk voor het evalueren van aanvragen die worden ingediend op het AKS-besturingsvlak. Op basis van uw geconfigureerde beleid kan uw beleidswebhook aanvragen toestaan of weigeren.

Een ingebouwde beleidsdefinitie toewijzen

U beheert de beleidsregels van uw Azure-omgeving met behulp van het Azure Policy-nalevingsdashboard. Met het dashboard kunt u inzoomen op een detailniveau per resource, per beleid. Het helpt u om ervoor te zorgen dat uw resources voldoen aan de naleving met behulp van bulksgewijs herstel voor bestaande resources en automatisch herstel voor nieuwe resources.

Voor elke beleidsregel wordt de volgende overzichtsinformatie weergegeven:

Item Beschrijving Voorbeeld
Naam De naam van het beleid. [Preview]: Zorg ervoor dat de limieten voor cpu- en geheugenresources van containers niet groter zijn dan de opgegeven limieten in het Kubernetes-cluster.
Scope De resourcegroep van het abonnement waarop dit beleid van toepassing is. mySubscription/rg-akscostsaving.
Nalevingsstatus De status van toegewezen beleidsregels. Compatibel, conflicterend, niet gestart of niet geregistreerd.
Resourcenaleving Het percentage resources dat voldoet aan het beleid. Bij deze berekening wordt rekening gehouden met compatibele, niet-compatibele en conflicterende resources. 100
Niet-compatibele resources Het aantal unieke resources dat een of meer beleidsregels schendt. 3
Niet-compatibele beleidsregels Het aantal niet-compatibele beleidsinstanties. 5

Hier kunt u inzoomen op de details per resource en per beleid voor de geactiveerde gebeurtenissen. U kunt bijvoorbeeld de details van een implementatie van een geweigerde workload bekijken.

Beleid toewijzen

Als u een beleid wilt toewijzen, selecteert u de optie Toewijzingen onder de sectie Ontwerpen in het navigatiedeelvenster van Azure Policy.

U wijst Azure-beleid op twee manieren toe: als een groep beleidsregels die een initiatief worden genoemd of als één beleid.

Initiatieftoewijzing

Een initiatieftoewijzing is een verzameling Azure-beleidsdefinities die zijn gegroepeerd om te voldoen aan één specifiek doel. Het doel kan bijvoorbeeld zijn om de gegevensbeveiligingsstandaard van de creditcardsector op uw resources toe te passen.

Beleidstoewijzing

Met een beleidstoewijzing wordt één beleidsregel toegewezen, zoals Geen bevoorrechte containers toestaan in een Kubernetes-cluster.

Een beleid toewijzen

Elke beleidsregel is gedefinieerd met behulp van een reeks configuratiestappen. De hoeveelheid gegevens die u vastlegt, is afhankelijk van het type beleid dat u selecteert.

Als u bijvoorbeeld de resource-implementatie door ontwikkelaars in de cloudomgeving van het bedrijf wilt beperken, kunt u een van de ingebouwde Azure-beleidsregels voor Azure Kubernetes Service toewijzen. De naam van het beleid is Ervoor zorgen dat de limieten voor CPU en geheugenresources de opgegeven limieten in Kubernetes-cluster niet overschrijden.

Het beleid vereist dat u de limiet instelt voor de resources die door implementatieaanvragen mogen worden aangevraagd.

Laten we eens kijken naar de configureerbare opties wanneer u een beleid toewijst.

Basisbeleidsgegevens

Voor de eerste stap moet u basisgegevens selecteren en invoeren waarmee het nieuwe beleid wordt gedefinieerd. Deze informatie kan bijvoorbeeld het beleid en het resourcebereik zijn. In deze tabel ziet u elk item dat u kunt configureren:

Item Beschrijving
Scope Het bereik bepaalt welke resources of groep resources de beleidstoewijzing wordt afgedwongen. Deze waarde is gebaseerd op een abonnement of een beheergroep. U kunt resources voor uw selectie uitsluiten op één niveau lager dan het bereikniveau.
Beleidsdefinitie Het beleid dat u wilt toepassen. U kunt uit verschillende ingebouwde beleidsopties kiezen.
Naam van toewijzing De naam die wordt gebruikt om het toegewezen beleid te identificeren.
Beschrijving Een beschrijving in vrije tekst van het beleid.
Beleidsafdwinging U kunt Ingeschakeld en Uitgeschakeld kiezen. Als deze instelling is Uitgeschakeld, wordt het beleid niet toegepast en worden aanvragen met de status Niet-compatibel niet geweigerd.
Toegewezen door Een waarde in vrije tekst die standaard is ingesteld op de geregistreerde gebruiker. U kunt deze waarde wijzigen.

Beleidsparameters

Voor beleidsregels moet u de bedrijfsregels configureren die op elk specifiek beleid van toepassing zijn. Niet alle beleidsregels hanteren dezelfde bedrijfsregels en daarom heeft elk beleid verschillende parameters.

Zo moet u voor het beleid Ervoor zorgen dat de limieten voor container-CPU en geheugenresources de opgegeven limieten in het Kubernetes-cluster niet overschrijden drie parameters instellen:

  • Het maximum aantal CPU-eenheden dat is toegestaan voor een container
  • Het maximale aantal geheugenbytes dat is toegestaan voor een container
  • Een lijst met Kubernetes-naamruimten die moeten worden uitgesloten van het beleid

Vergelijk dat beleid maar eens met het beleid Webtoepassing mag alleen toegankelijk zijn via HTTPS, waarvoor geen aangepaste parameters hoeven te worden geconfigureerd.

Alle beleidsinstanties hebben de instelling Effect. Met deze instelling wordt de uitvoering van het beleid ingeschakeld of uitgeschakeld. Net zoals parameters kunnen beleidsregels ook verschillende Effect-opties hebben.

Voor het resourcebeheerbeleid kunt u bijvoorbeeld controleren, weigeren of uitschakelen als de waarde Effect . Voor het beleid voor webtoepassingen kunt u alleen de waarde Controleren of Uitschakelen selecteren.

In deze tabel worden alle effecten vermeld die momenteel in beleidsdefinities worden ondersteund:

Effect Beschrijving
Toevoegen Voegt meer velden toe aan de aangevraagde resource
Controleren Hiermee maakt u een waarschuwings gebeurtenis in het activiteitenlogboek
AuditIfNotExists Hiermee schakelt u controle in van resources met betrekking tot de resource die overeenkomt met de voorwaarde
Weigeren Voorkomt dat een resourceaanvraag voldoet aan gedefinieerde standaarden via een beleidsdefinitie en mislukt de aanvraag
DeployIfNotExists Voert een sjabloonimplementatie uit wanneer aan de voorwaarde wordt voldaan
Uitgeschakeld Handig voor het testen van situaties of voor wanneer de beleidsdefinitie het effect heeft geparameteriseerd en u één toewijzing wilt uitschakelen
Wijzigen Tags aan een resource toevoegen, bijwerken of verwijderen tijdens het maken of bijwerken

Beleidsherstel

De laatste stap is het overwegen van beleidsherstel. Wanneer u beleidsregels toewijst, is het mogelijk dat resources al bestaan en het nieuwe beleid schenden. Standaard worden alleen nieuw gemaakte resources toegepast op het nieuwe beleid. Gebruik herstel om bestaande resources te controleren nadat u een nieuw beleid hebt toegewezen. Hersteltaken kunnen verschillen, afhankelijk van de typen beleidsregels die worden toegepast.

In de volgende oefening gebruikt u de limieten voor cpu- en geheugenresources voor containers niet hoger dan de opgegeven limieten in het Kubernetes-clusterbeleid om de kosten verder te verlagen.