Konfigurera AKS-resurskvotprinciper med hjälp av Azure Policy for Kubernetes

Slutförd

Azure Policy hjälper dig att framtvinga standarder och utvärdera efterlevnad i stor skala för din molnmiljö. Det är bra att företag implementerar affärsregler för att definiera hur anställda får använda företagets programvara, maskinvara och andra resurser i organisationen. Därför använder företag principer för att framtvinga, granska och definiera åtkomst. En princip hjälper en organisation att uppfylla styrnings- och juridiska krav, implementera bästa praxis och upprätta organisationskonventioner.

Med Azure Kubernetes Service (AKS) kan du samordna dina molnbaserade program effektivt med principer. Du inser att du måste tillämpa affärsregler för att hantera hur teamen använder AKS för att säkerställa en kostnadseffektiv metod. Du bestämmer dig för att använda Azure Policy för att tillämpa den här idén på dina Azure-baserade molnresurser.

Innan du diskuterar hur du använder Azure Policy för Kubernetes bör du förstå några fler begrepp som aktiverar den här funktionen inifrån Kubernetes.

Vad är en Kubernetes-antagningskontrollant?

En antagningskontrollant är ett Kubernetes-plugin-program som fångar upp autentiserade och auktoriserade begäranden till Kubernetes API innan det begärda Kubernetes-objektets beständighet. Anta till exempel att du distribuerar en ny arbetsbelastning och att distributionen innehåller en podbegäran med specifika krav på minne. Antagningskontrollanten fångar upp distributionsbegäran och måste auktorisera distributionen innan den sparas i klustret.

Du kan se en antagningskontrollant som programvara som styr och framtvingar hur klustret används och utformas. Det begränsar begäranden om att skapa, ta bort och ändra Kubernetes-objekt.

Vad är en admission-controller-webhook?

En webhook för antagningskontrollanter är en HTTP-återanropsfunktion som tar emot antagningsbegäranden och sedan agerar på dessa begäranden. Antagningskontroller måste konfigureras vid körningstid. Dessa styrenheter finns antingen för ditt kompilerade insticksprogram för antagning eller för en distribuerad förlängning som körs som en webhook.

Antagningswebbhooks finns i två typer: antingen en som validerar webhook- eller en muterande webhook. En muterande webhook anropas först och kan ändra och tillämpa standardvärden på de objekt som skickas till API-servern. En valideringswebbhook validerar objektvärden och kan avvisa begäranden.

Vad är OPA (Open Policy Agent)?

Open Policy Agent (OPA) är en principmotor med öppen källkod som ger dig ett deklarativt språk på hög nivå för att skapa principer. Med de här principerna kan du definiera regler som övervakar hur systemet ska bete sig.

Vad är OPA Gatekeeper?

OPA Gatekeeper- är en webhook med öppen källkod som validerar Kubernetes-antagningskontrollanten som tillämpar CRD-baserade principer (Custom Resource Definition) som följer OPA-syntaxen.

Målet med OPA Gatekeeper är att du ska kunna anpassa antagningsprinciper med hjälp av konfiguration i stället för hårdkodade principregler för tjänster. Det ger dig också en fullständig vy över klustret för att identifiera resurser som bryter mot principer.

Använd OPA Gatekeeper för att definiera organisationsomfattande principer med regler:

  • De maximala resursgränserna, till exempel cpu- och minnesgränser, tillämpas för alla konfigurerade poddar.

  • Distributionen av avbildningar tillåts endast från godkända lagringsplatser.

  • Namngivningskonvention för etiketter för alla namnområden i ett kluster måste ange en kontaktpunkt för varje namnområde.

  • Mandat att klustertjänster har globalt unika väljare.

Azure Policy för AKS

Azure Policy utökar OPA Gatekeeper version 3 och integreras med AKS via inbyggda principer. Dessa policier tillämpas i stor skala och innefattar genomförande och skydd av ditt kluster på ett centraliserat och konsekvent sätt.

Företagets utvecklingsteam vill optimera utvecklingen och introducera utvecklingsverktyg som DevSpaces för att förenkla arbetsflödet för Kubernetes-utveckling. Du vill se till att teammedlemmarna följer specifika resursgränser för sina projekt. Du bestämmer dig för att införa en princip som definierar de beräkningsresurser, lagringsresurser och objektantal som tillåts i namnrymderna för utveckling.

Om du vill konfigurera resursgränser kan du använda resurskvoter på namnområdesnivå och övervaka resursanvändning för att justera principkvoter. Använd den här strategin för att reservera och begränsa resurser i utvecklingsteamet.

Så här aktiverar du Azure Policy-tillägget för AKS

Det finns några steg för att registrera Azure Policy-tillägget för AKS-funktionen. Vi tillhandahåller exempel här, men du kommer att slutföra stegen i nästa lektion.

  1. Registrera två resursprovidrar med hjälp av kommandot az provider register:

    • Microsoft.ContainerService och Microsoft.PolicyInsights: Dessa resursprovidrar stöder åtgärder som att fråga efter information om principhändelser och hantera containrar. Det här är åtgärder för att hämta, skapa, uppdatera eller ta bort policykorrigering.

    Här är ett exempel på de två registreringskommandona:

    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.PolicyInsights
    
  2. Registrera funktionen AKS-AzurePolicyAutoApprove med resursprovidern Microsoft. ContainerService. Här är ett exempel på kommandot:

    az feature register --namespace Microsoft.ContainerService --name AKS-AzurePolicyAutoApprove
    
  3. När du har bekräftat den lyckade funktionsregistreringen kör du kommandot az provider register med parametern --namespace för att sprida den nya funktionsregistreringen. Här är ett exempel på kommandot:

    az provider register -n Microsoft.ContainerService
    
  4. Aktivera azure-policy-tillägget:

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

    När du aktiverar tillägget schemaläggs arbetsbelastningar i två namnområden i klustret. Det första namnområdet är kube-system, som innehåller azure-policy och azure-policy-webhook. Det andra namnområdet är gatekeeper-system, som innehåller gatekeeper-controller-manager. Denna arbetsbelastning ansvarar för att utvärdera förfrågningar som skickas till AKS-kontrollplanet. Baserat på dina konfigurerade principer kan din principwebbhook tillåta eller neka begäranden.

Tilldela en inbyggd principdefinition

Du hanterar Azure-miljöns policyer med hjälp av instrumentpanelen för Azure-principefterlevnad. På instrumentpanelen kan du granska detaljerna per resurs och per policy. Det hjälper dig att få dina resurser att överensstämma med regler genom att använda åtgärder i större skala för befintliga resurser och automatisk åtgärd för nya resurser.

För varje princip visas följande översiktsinformation:

Artikel Beskrivning Exempel
namn Namnet på policyn. [Förhandsversion]: Se till att gränsen för processor- och minnesresurser för containrar inte överskrider de angivna gränserna i Kubernetes-klustret.
Tillämpningsområde Den prenumerationsresursgrupp som principen gäller för. mySubscription/rg-akscostsaving.
Efterlevnadstillstånd Status för tilldelade principer. Kompatibel, Konfliktfylld, Inte startadeller Inte registrerad.
Resursefterlevnad Procentandelen resurser som följer principen. Den här beräkningen tar hänsyn till kompatibla, icke-kompatibla och motstridiga resurser. 100
Icke-kompatibla resurser Antalet unika resurser som bryter mot en eller flera principregler. 3
Icke-kompatibla principer Antalet icke-efterlevande policyer. 5

Härifrån kan du öka detaljnivån i informationen per resurs och per princip för de händelser som utlöses. Till exempel kan du undersöka detaljer om en nekad utplacering av arbetsbelastning.

Tilldela principer

Om du vill tilldela en princip väljer du alternativet Tilldelningar under avsnittet Redigering i Azure Policy-navigeringspanelen.

Du tilldelar Azure-principer på ett av två sätt: som en grupp med principer som kallas ett initiativeller som en enda princip.

Initiativtilldelning

En initiativtilldelning är en samling Azure-principdefinitioner grupperade tillsammans för att uppfylla ett specifikt mål eller syfte. Målet kan till exempel vara att tillämpa Payment Card Industry Data Security Standard på dina resurser.

Principtilldelning

En principtilldelning tilldelar en enskild princip, till exempel Tillåt inte privilegierade containrar i Kubernetes-kluster.

Så här tilldelar du en policy

Varje princip definieras med hjälp av en serie konfigurationssteg. Mängden information som du samlar in beror på vilken typ av princip du väljer.

Om du till exempel vill begränsa resursdistributionen av utvecklare i företagets molnmiljö kan du tilldela en av de inbyggda Azure-principerna för Azure Kubernetes Service. Namnet på principen är Se till att containerns cpu- och minnesresursgränser inte överskrider de angivna gränserna i Kubernetes-klustret.

Principen kräver att du anger gränsen för de tillåtna resurser som begärs av distributionsbegäranden.

Låt oss ta en titt på de konfigurerbara alternativen när ni tilldelar en policy.

Grundläggande principinformation

Det första steget kräver att du väljer och anger grundläggande information som definierar den nya principen. Den här informationen kan till exempel vara principen och resursomfånget. Den här tabellen visar varje objekt som du kan konfigurera:

Föremål Beskrivning
Omfattning Omfånget avgör vilka resurser eller grupper av resurser som principtilldelningen tillämpas på. Det här värdet baseras på en prenumeration eller en hanteringsgrupp. Du kan exkludera resurser från ditt val på en nivå som är lägre än omfångsnivån.
policydefinition Den princip som du vill tillämpa. Du kan välja mellan flera inbyggda principalternativ.
Tilldelningsnamn Namnet som används för att identifiera den tilldelade policyn.
Beskrivning En fritextbeskrivning som beskriver policyn.
Principframtvingande Du kan välja Aktiverad och Inaktiverad. Om alternativet är Inaktiveradtillämpas inte policyn och begäranden nekas inte på grund av bristande efterlevnad.
tilldelad av Fritextvärdet anges som standard till den registrerade användaren. Du kan ändra det här värdet.

Policyparametrar

Principer kräver att du konfigurerar de affärsregler som gäller för varje specifik princip. Alla principer har inte samma affärsregler, och därför har varje princip olika parametrar.

Till exempel kräver Se till att gränsen för processor- och minnesresurser för containrar inte överskrider de angivna gränserna i Kubernetes-klustret princip att du anger tre parametrar:

  • Maximalt antal cpu-enheter som tillåts för en container
  • Maximalt antal minnesbyte som tillåts för en container
  • En lista över Kubernetes-namnområden som ska undantas från principen

Jämför den principen med -webbprogrammet ska endast vara tillgängligt via HTTPS- princip, som inte har några anpassade parametrar att konfigurera.

Alla policys har en inställning för Effekt. Den här inställningen aktiverar eller inaktiverar policykörningen. Precis som med parametrar kan policyer också ha olika alternativ för Effekt.

För resurshanteringsprincipen kan du till exempel välja granska, nekaeller inaktivera som värdet Effekt. För principen för webbprogram kan du bara välja granska eller inaktivera.

Den här tabellen visar alla effekter som för närvarande stöds i principdefinitioner:

Effekt Beskrivning
Lägg till Lägger till fler fält i den begärda resursen
Granskning Skapar en varningshändelse i aktivitetsloggen
AuditIfNotExists Möjliggör granskning av resurser som är relaterade till resursen som matchar villkoret
Neka Förhindrar en resursbegäran som inte matchar definierade standarder via en principdefinition och misslyckas med begäran
DeployIfNotExists Kör en malldistribution när villkoret uppfylls
Inaktiv Användbart för testningssituationer eller när principdefinitionen har parametriserat effekten och du vill inaktivera en enskild tilldelning
Ändra Lägger till, uppdaterar eller tar bort taggar på en resurs när den skapas eller uppdateras

Åtgärdande av policyproblem

Det sista steget är att överväga principreparation. När du tilldelar principer är det möjligt att resurser redan finns och bryter mot den nya principen. Som standard tillämpas endast nyligen skapade resurser på den nya principen. Använd reparation för att kontrollera befintliga resurser när du har tilldelat en ny princip. Reparationsuppgifter kan variera beroende på vilka typer av principer som tillämpas.

I nästa övning använder du Se till att gränsen för containerns processor- och minnesresurser inte överskrider de angivna gränserna i Kubernetes-klustret princip för att sänka kostnaderna ytterligare.