Dela via


Verifiera antagningskontrollanter

Den här artikeln ingår i en serie. Börja med översikten.

Antagningskontrollanter orsakar sällan problem, men det är viktigt att se till att de har rätt funktioner. I den här artikeln beskrivs hur antagningskontrollanter kan påverka andra komponenter när de inte fungerar korrekt. Den beskriver också kommandon som du kan använda för att verifiera prestanda för antagningskontrollanten.

Antagningskontrollant

En antagningskontrollant är en kod som fångar upp begäranden till en Kubernetes API-server innan ett objekt beständigt men efter att en begäran har autentiserats och auktoriserats.

Antagningskontrollanter kan validera, mutera eller en kombination av båda. Om du muterar kontrollanter kan du ändra relaterade objekt innan du skickar en begäran. Verifiering av kontrollanter säkerställer endast att begäranden uppfyller specifika fördefinierade kriterier.

En av de primära funktionerna för antagningskontrollanter är att reglera begäranden om skapande, borttagning och ändring av objekt. Dessutom kan antagningskontrollanter begränsa anpassade verb, till exempel begära en anslutning till en podd via en API-serverproxy. Antagningskontrollanter kan dock inte blockera begäranden om att läsa objekt, inklusive åtgärder som get, watcheller list.

Vissa komponenter kan påverka antagningskontrollanter, till exempel mutera och validera webhooks. När du införlivar muterande och verifierande webhooks i ditt Kubernetes-kluster är det absolut nödvändigt att säkerställa hög tillgänglighet. Noder med fel bör inte blockera API-serverbegäranden. Det är viktigt att övervaka pipelinen för antagningskontroll så att begäranden till API-servern inte blockeras. Felaktiga antagningskontrollanter kan påverka muterande och validering av webhooks. Webhook-baserade antagningskontrollanter som du bör övervaka inkluderar:

  • Azure Policy-tillägget för AKS-kluster (Azure Kubernetes Service), som utökar Gatekeeper. Gatekeeper är en webhook för antagningskontrollant för Open Policy Agent.

  • Kyverno, som körs som en dynamisk antagningskontrollant i ett Kubernetes-kluster. Kyverno tar emot validering och mutering av http-återanrop för antagning från Kubernetes API-servern och tillämpar matchande principer för att returnera resultat som tillämpar antagningsprinciper eller avvisar begäranden. Felsökningsreferens (till exempel APIServer-misslyckade webhook-anrop) finns i felsökningsdokumentationen för Kyverno.

Alternativt kan antagningskontrollanter som inte fungerar korrekt påverka olika komponenter, till exempel servicenät. Servicenät, som Istio och Linkerd, använder antagningskontrollanter för att automatisera injektionen av sidovagnscontainrar i en podd, bland andra funktioner. Det är viktigt att utvärdera och verifiera att antagningskontrollanter fungerar korrekt för att säkerställa sömlös drift av ett tjänstnät.

Kontrollera status för Azure Policy-tillägget för AKS-kluster

Om du installerar Azure Policy-tillägget för AKS kan du använda följande kubectl-kommandon för att verifiera installationen och funktionerna för Azure Policy-antagningskontrollanter i klustret:

# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system

# Sample output
...
NAME                                     READY   STATUS    RESTARTS   AGE
gatekeeper-audit-65844778cb-rkflg        1/1     Running   0          163m
gatekeeper-controller-78797d4687-4pf6w   1/1     Running   0          163m
gatekeeper-controller-78797d4687-splzh   1/1     Running   0          163m
...

Kör föregående kommando för att verifiera tillgängligheten för Azure Policy-agentpoddar i namnområdet gatekeeper-system . Om utdata inte är vad du förväntar dig kan det tyda på ett problem med en antagningskontrollant, API-tjänst eller anpassad resursdefinition (CRD).

# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources

# Sample output
...
NAME                                     SHORTNAMES    APIGROUP                       NAMESPACED   KIND
bindings                                                                              true         Binding
componentstatuses                        cs                                           false        ComponentStatus
configmaps                               cm                                           true         ConfigMap
...

Med föregående kommando kan du kontrollera att alla API-resurser fungerar korrekt. Se till att utdata innehåller de förväntade resurserna utan fel eller saknade komponenter. kubectl get pod Använd kommandona och kubectl api-resources för att kontrollera statusen för Azure Policy-tillägget för AKS och verifiera funktionerna för antagningskontrollanter i kubernetes-klustret. Övervaka regelbundet antagningskontrollanter för att säkerställa att de fungerar korrekt så att du kan upprätthålla klustrets allmänna hälsa och stabilitet.

Använd följande kubectl get kommando för att bekräfta att principtilldelningar tillämpas på klustret:

kubectl get constrainttemplates

Kommentar

Principtilldelningar kan ta upp till 20 minuter att synkronisera med varje kluster.

Dina utdata bör likna följande exempel:

NAME                                     AGE
k8sazureallowedcapabilities              23m
k8sazureallowedusersgroups               23m
k8sazureblockhostnamespace               23m
k8sazurecontainerallowedimages           23m
k8sazurecontainerallowedports            23m
k8sazurecontainerlimits                  23m
k8sazurecontainernoprivilege             23m
k8sazurecontainernoprivilegeescalation   23m
k8sazureenforceapparmor                  23m
k8sazurehostfilesystem                   23m
k8sazurehostnetworkingports              23m
k8sazurereadonlyrootfilesystem           23m
k8sazureserviceallowedports              23m

Mer information finns i följande resurser:

Verifiera webhooks

Följ dessa steg för att säkerställa att validering och mutering av webhooks fungerar som förväntat i Ditt Kubernetes-kluster.

  1. Kör följande kommando för att visa en lista över verifierande webhooks i klustret:

    kubectl get ValidatingWebhookConfiguration -o wide
    

    Dina utdata bör likna följande exempel:

    NAME                         WEBHOOKS   AGE
    aks-node-validating-webhook   1          249d
    azure-policy-validating-webhook-configuration   1          249d
    gatekeeper-validating-webhook-configuration     1          249d
    

    Granska utdata för att kontrollera att valideringswebbhooks finns och att deras konfigurationer är som förväntat. Utdata innehåller namnet på varje verifierande webhook, antalet webhooks och åldern på varje webhook.

  2. Kör följande kommando för att lista de muterande webhooks i klustret:

    kubectl get MutatingWebhookConfiguration -o wide
    

    Dina utdata bör likna följande exempel:

    NAME                         WEBHOOKS   AGE
    aks-node-mutating-webhook    1          249d
    azure-policy-mutating-webhook-configuration    1          249d
    gatekeeper-mutating-webhook-configuration      1          249d
    

    Kontrollera utdata för att se till att de muterande webhooks visas korrekt och att deras konfigurationer är som önskat. Utdata innehåller namnet på varje muterande webhook, antalet webhooks och åldern på varje webhook.

  3. Kör följande kommando för att hämta specifik information för en viss antagningskontrollant:

    kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
    

    Ersätt <mutating-webhook-name> med namnet på den muterande webhooken som du vill hämta information för. Utdata från det här kommandot visar YAML-representationen av den angivna muterande webhookkonfigurationen.

Kör kommandona i det här avsnittet och granska utdata så att du kan bekräfta att validering och muterande webhooks i Kubernetes-klustret finns och konfigureras som förväntat. Den här valideringen är nödvändig för att säkerställa att den fungerar korrekt. Det är också viktigt att se till att webhooks följer principer för validering och ändring av resurser i klustret.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudsakliga författare:

Övriga medarbetare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.