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
, watch
eller 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.
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.
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.
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:
- Paolo Salvatori | Huvudkundtekniker
Övriga medarbetare:
- Francis Simy Nasaret | Senior teknisk specialist
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.