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. Bedrijven implementeren gewoonlijk bedrijfsregels om te bepalen hoe werknemers bedrijfssoftware, hardware en andere resources in de organisatie moeten gebruiken. Deze bedrijfsregels worden vaak beschreven met behulp van beleidsregels die worden ingesteld, afgedwongen en gecontroleerd zoals in elke beleidsregel is gedefinieerd. 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. Door dit gemak hebben meer ontwikkelteams in uw bedrijf AKS ingezet als een ontwikkelplatform. U realiseert zich dat u bedrijfsregels moet afdwingen om te beheren hoe de teams AKS gebruiken om een kosteneffectieve aanpak voor het maken van werkbelastingen te garanderen. U kunt Azure Policy gebruiken om hetzelfde idee toe te passen op de manier waarop uw Azure-cloudresources worden gebruikt.

Voordat u gaat bespreken hoe u Azure Policy gebruikt voor Kubernetes, moeten we nog enkele concepten bespreken die deze functie mogelijk maken 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 hebben de vorm van een meegecompileerde invoegtoepassing of een geïmplementeerde extensie die wordt uitgevoerd als een webhook die u tijdens runtime configureert.

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 beleidsregels kunt u regels definiëren die bepalen hoe uw systeem zich moet gedragen.

Wat is de OPA Gatekeeper?

De OPA Gatekeeper is een opensource-toegangscontroller-webhook met validerend karakter voor Kubernetes die op CRD-gebaseerd (Custom Resource Definition) beleid afdwingt met behulp van de Open Policy Agent.

Met de OPA Gatekeeper kunt u toegangsbeleid aanpassen door gebruik te maken 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.

Met de OPA Gatekeeper kunt u beleid voor de hele organisatie definiëren. U kunt bijvoorbeeld het volgende vereisen:

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

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

  • Op de labels voor alle naamruimten in een cluster staat een contactpersoon voor elke naamruimte.

  • Clusterservices hebben wereldwijd unieke selectors.

De huidige versie van de OPA Gatekeeper (versie 3) wordt ondersteund door Azure Kubernetes Service.

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.

Als u resourcelimieten wilt instellen, 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.

Waarschuwing

Net als spot-knooppunten is de functie Azure Policy-invoegtoepassingen voor AKS een preview-functie. Nadat u enkele preview-functies in Azure hebt ingeschakeld, kunnen er standaardwaarden worden gebruikt voor alle AKS-clusters die in het abonnement worden gemaakt. Test preview-functies in niet-productieabonnementen om onvoorziene neveneffecten in productie-implementaties te voorkomen.

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

    • Microsoft.ContainerService: Dezelfde resourceprovider hebt u eerder gebruikt om de functie spotpoolpreview te registreren.

    • Microsoft.PolicyInsights: Deze resourceprovider ondersteunt acties zoals het opvragen van informatie over beleidsgebeurtenissen via query's. Ook hebt u de mogelijkheid om beleidsherstel op te vragen, te maken, bij te werken en 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 hebt gecontroleerd of de registratie van de functie is geslaagd, voert u de opdracht az provider register uit met de parameter --namespace om de nieuwe functieregistratie door te geven. Hier volgt een voorbeeld van de opdracht:

    az provider register -n Microsoft.ContainerService
    
  4. Installeer de preview-extensie van de Azure CLI en schakel de Azure Policy-invoegtoepassing in. Gebruik de opdracht az extensions add en schakel vervolgens de invoegtoepassing azure-policy in met behulp van de opdracht az aks enable-addons.

    Hier volgt een voorbeeld van de twee opdrachten:

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

    Door de invoegtoepassing te activeren, worden werkbelastingen gepland in twee naamruimten in uw cluster. De eerste naamruimte is kube-system, waar u azure-policy en azure-policy-webhook kunt vinden. De tweede naamruimte is gatekeeper-system, waar u gatekeeper-controller-manager kunt vinden. Deze werkbelastingen zijn verantwoordelijk voor het evalueren van aanvragen die worden ingediend op het AKS-besturingsvlak. Op basis van uw geconfigureerde beleidsregels, worden aanvragen door de webhook van het beleid toegestaan of geweigerd.

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 het detailniveau van resources en beleidsregels. 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
Naam De naam van het beleid. Bijvoorbeeld[Preview]: Ervoor zorgen dat de limieten voor CPU en geheugenresources de opgegeven limieten in Kubernetes-cluster niet overschrijden.
Bereik De resourcegroep van het abonnement waarop dit beleid van toepassing is. Bijvoorbeeld 'Visual Studio Enterprise/rg-akscostsaving'.
Nalevingsstatus De status van toegewezen beleidsregels. De waarde kan Klacht, Conflict, Niet gestart of Niet geregistreerd zijn.
Resourcenaleving Het percentage resources dat voldoet aan het beleid. Bij deze berekening wordt rekening gehouden met compatibele, niet-compatibele en conflicterende resources.
Niet-compatibele resources Het aantal unieke resources dat een of meer beleidsregels schendt.
Niet-compatibele beleidsregels Het aantal niet-compatibele beleidsregels.

Van hieruit kunt u inzoomen op de gegevens per resource, per beleid en op de geactiveerde gebeurtenissen. U kunt bijvoorbeeld details bekijken van de implementatie van een werkbelasting die is geweigerd.

Beleid toewijzen

Azure Policy is toegewezen. Als u een beleid wilt toewijzen, selecteer de optie Toewijzingen in de sectie Ontwerpen van het navigatievenster van Azure Policy.

U kunt Azure-beleidsregels op een of twee manieren toewijzen: als een groep beleidsregels, wat een initiatief wordt genoemd, of als één beleidsregel.

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 opties die u configureert om een beleid toe te wijzen.

Basisbeleidsgegevens

Voor de eerste stap moet u basisgegevens selecteren en invoeren waarmee het nieuwe beleid wordt gedefinieerd. Deze gegevens kunnen bijvoorbeeld het beleid en het resourcebereik betreffen waarop het beleid betrekking heeft. In deze tabel wordt elk item weergegeven dat u gaat configureren:

Item Beschrijving
Bereik Het bereik bepaalt voor welke resources of groep resources de beleidstoewijzing moet worden 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 waarmee het toegewezen beleid wordt aangeduid.
Beschrijving Een beschrijving in vrije tekst van het beleid.
Beleidsafdwinging Met deze optie schakelt u tussen Ingeschakeld en Uitgeschakeld. 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. Deze waarde kan worden gewijzigd.

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 maximaal toegestane aantal CPU-eenheden voor een container.
  • Het maximum toegestane aantal geheugenbytes 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 schakelt u de uitvoering van het beleid in of uit. Net zoals parameters kunnen beleidsregels ook verschillende Effect-opties hebben.

Zo kunt u voor het beleid voor resourcebeheer de waarde Controleren, Weigeren of Uitschakelen selecteren voor 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 Hiermee voegt u meer velden toe aan de aangevraagde resource.
Controleren Hiermee wordt een waarschuwingsgebeurtenis gemaakt in het activiteitenlogboek.
AuditIfNotExists Schakelt de controle in van resources die zijn gerelateerd aan de resource die overeenkomt met de voorwaarde.
Weigeren Hiermee wordt een resourceaanvraag voorkomen die niet overeenkomt met standaards die zijn gedefinieerd in een beleidsdefinitie. De aanvraag mislukt.
DeployIfNotExists Voert een sjabloonimplementatie uit wanneer aan de voorwaarde is voldaan.
Uitgeschakeld Deze optie is handig voor het testen van situaties of als het effect van de beleidsdefinitie met parameters is beïnvloed en u één toewijzing wilt uitschakelen.
Wijzigen Hiermee wordt tags toegevoegd, bijgewerkt of verwijderd tijdens het maken of bijwerken van een resource.

Beleidsherstel

De laatste stap is het overwegen van beleidsherstel. Wanneer u beleidsregels toewijst, is het mogelijk dat er al resources bestaan en dat deze worden beïnvloed door het nieuwe beleid. Standaard is het nieuwe beleid alleen van invloed op nieuw gemaakte resources. Nadat u het beleid hebt toegewezen, kunt u bestaande resources bijwerken met behulp van een hersteltaak. Hersteltaken zijn afhankelijk van het type beleid dat is toegepast.

In de volgende oefening gaat u het beleid Ervoor zorgen dat de limieten voor container-CPU en geheugenresources de opgegeven limieten in het Kubernetes-cluster niet overschrijden toepassen.