Toegangscontrollers valideren
Dit artikel maakt deel uit van een serie. Begin met het overzicht.
Toegangscontrollers veroorzaken zelden problemen, maar het is van cruciaal belang om hun juiste functionaliteit te garanderen. In dit artikel wordt beschreven hoe toegangscontrollers van invloed kunnen zijn op andere onderdelen wanneer ze niet goed werken. Ook worden opdrachten beschreven die u kunt gebruiken om de prestaties van de toegangscontroller te valideren.
Toegangscontroller
Een toegangscontroller is een stukje code waarmee aanvragen worden onderschept naar een Kubernetes API-server vóór de persistentie van een object, maar nadat een aanvraag is geverifieerd en geautoriseerd.
Toegangscontrollers kunnen valideren, dempen of een combinatie van beide. Het dempen van controllers kan gerelateerde objecten wijzigen voordat een aanvraag wordt toegegeven. Het valideren van controllers zorgt er alleen voor dat aanvragen voldoen aan specifieke vooraf gedefinieerde criteria.
Een van de primaire functies van toegangscontrollers is het reguleren van aanvragen voor het maken, verwijderen en wijzigen van objecten. Daarnaast kunnen toegangscontrollers aangepaste werkwoorden beperken, zoals het aanvragen van een verbinding met een pod via een API-serverproxy. Toegangscontrollers kunnen echter geen aanvragen blokkeren voor het lezen van objecten, waaronder bewerkingen zoals get
, watch
of list
.
Sommige onderdelen kunnen van invloed zijn op toegangscontrollers, zoals het dempen en valideren van webhooks. Wanneer u webhooks in uw Kubernetes-cluster dempt en valideert, is het noodzakelijk om hoge beschikbaarheid te garanderen. Beschadigde knooppunten mogen API-serveraanvragen niet blokkeren. Het is essentieel om de pijplijn voor toegangsbeheer te bewaken, zodat aanvragen voor de API-server niet worden geblokkeerd. Beschadigde toegangscontrollers kunnen van invloed zijn op het dempen en valideren van webhooks. Toegangscontrollers op basis van webhook die u moet bewaken, zijn:
De Azure Policy-invoegtoepassing voor AKS-clusters (Azure Kubernetes Service), die Gatekeeper uitbreidt. Gatekeeper is een toegangscontrollerwebhook voor Open Policy Agent.
Kyverno, dat wordt uitgevoerd als een dynamische toegangscontroller in een Kubernetes-cluster. Kyverno ontvangt valideren en dempen van http-callbacks van de Webhook-webhook van de Kubernetes-API-server en past overeenkomende beleidsregels toe om resultaten te retourneren die toegangsbeleid afdwingen of aanvragen weigeren. Raadpleeg de documentatie voor het oplossen van problemen (zoals APIServer mislukte webhook-aanroepen).
Toegangscontrollers die niet goed werken, kunnen ook van invloed zijn op verschillende onderdelen, zoals service-meshes. Service-meshes, zoals Istio en Linkerd, gebruiken toegangscontrollers om de injectie van sidecarcontainers binnen een pod te automatiseren, onder andere functies. Het is belangrijk om te evalueren en te controleren of toegangscontrollers goed functioneren om de naadloze werking van een service-mesh te garanderen.
Controleer de status van de Azure Policy-invoegtoepassing voor AKS-clusters
Als u de Azure Policy-invoegtoepassing voor AKS installeert, kunt u de volgende kubectl-opdrachten gebruiken om de installatie en functionaliteit van Azure Policy-toegangscontrollers in uw cluster te valideren:
# 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
...
Voer de vorige opdracht uit om de beschikbaarheid van Azure Policy-agentpods in de gatekeeper-system-naamruimte te controleren. Als de uitvoer niet is wat u verwacht, kan dit duiden op een probleem met een toegangscontroller, API-service of aangepaste resourcedefinitie (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
...
Met de vorige opdracht kunt u controleren of alle API-resources correct werken. Zorg ervoor dat de uitvoer de verwachte resources bevat zonder fouten of ontbrekende onderdelen. Gebruik de kubectl get pod
en kubectl api-resources
opdrachten om de status van de Azure Policy-invoegtoepassing voor AKS te controleren en de functionaliteit van toegangscontrollers in uw Kubernetes-cluster te valideren. Bewaak regelmatig toegangscontrollers om ervoor te zorgen dat ze goed functioneren, zodat u de algehele status en stabiliteit van uw cluster kunt behouden.
Gebruik de volgende kubectl get
opdracht om te bevestigen dat beleidstoewijzingen worden toegepast op uw cluster:
kubectl get constrainttemplates
Notitie
Het kan tot 20 minuten duren voordat beleidstoewijzingen met elk cluster worden gesynchroniseerd .
De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:
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
Voor meer informatie raadpleegt u de volgende bronnen:
Webhooks valideren
Volg deze stappen om ervoor te zorgen dat het valideren en dempen van webhooks werkt zoals verwacht in uw Kubernetes-cluster.
Voer de volgende opdracht uit om de validerende webhooks in het cluster weer te geven:
kubectl get ValidatingWebhookConfiguration -o wide
De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:
NAME WEBHOOKS AGE aks-node-validating-webhook 1 249d azure-policy-validating-webhook-configuration 1 249d gatekeeper-validating-webhook-configuration 1 249d
Controleer de uitvoer om te controleren of de validerende webhooks aanwezig zijn en de configuraties ervan zijn zoals verwacht. De uitvoer bevat de naam van elke validatiewebhook, het aantal webhooks en de leeftijd van elke webhook.
Voer de volgende opdracht uit om de muterende webhooks in het cluster weer te geven:
kubectl get MutatingWebhookConfiguration -o wide
De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:
NAME WEBHOOKS AGE aks-node-mutating-webhook 1 249d azure-policy-mutating-webhook-configuration 1 249d gatekeeper-mutating-webhook-configuration 1 249d
Controleer de uitvoer om ervoor te zorgen dat de mutatiewebhooks correct worden weergegeven en de configuraties naar wens zijn. De uitvoer bevat de naam van elke mutatiewebhook, het aantal webhooks en de leeftijd van elke webhook.
Voer de volgende opdracht uit om specifieke details voor een bepaalde toegangscontroller op te halen:
kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
Vervang
<mutating-webhook-name>
door de naam van de mutatiewebhook waarvoor u details wilt ophalen. In de uitvoer van deze opdracht wordt de YAML-weergave van de opgegeven webhookconfiguratie voor mutatie weergegeven.
Voer de opdrachten in deze sectie uit en controleer de uitvoer zodat u kunt controleren of de webhooks in het Kubernetes-cluster aanwezig en geconfigureerd zijn zoals verwacht. Deze validatie is essentieel om een goede werking te garanderen. Het is ook belangrijk om ervoor te zorgen dat de webhooks voldoen aan het beleid voor het valideren en wijzigen van resources in het cluster.
Medewerkers
Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.
Belangrijkste auteurs:
- Paulo Salvatori | Principal Customer Engineer
Andere Inzenders:
- Francis Simy Azure | Senior Technisch Specialist
Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.