Überprüfen der Zugangssteuerungscontroller
Dieser Artikel ist Teil einer Serie. Beginnen Sie mit der Übersicht.
Zugangssteuerungscontroller verursachen selten Probleme, doch es ist wichtig, ihre ordnungsgemäße Funktion sicherzustellen. In diesem Artikel wird erläutert, wie Zugangssteuerungscontroller andere Komponenten beeinträchtigen können, wenn sie nicht ordnungsgemäß funktionieren. Außerdem werden Befehle beschrieben, mit denen Sie die Leistung des Controllers überprüfen können.
Zugangssteuerungscontroller
Ein Zugangssteuerungscontroller ist ein Codeabschnitt, der Anforderungen an einen Kubernetes-API-Server abfängt, bevor ein Objekt dauerhaft gespeichert wird, aber nachdem eine Anforderung authentifiziert und autorisiert worden ist.
Zugangssteuerungscontroller können überprüfen, mutieren oder eine Kombination von beidem tun. Mutieren-Controller können verwandte Objekte ändern, bevor eine Anforderung zugelassen wird. Überprüfen-Controller stellen nur sicher, dass Anforderungen bestimmte vordefinierte Kriterien erfüllen.
Eine der Hauptfunktionen von Zugangssteuerungscontrollern besteht darin, Anforderungen für die Erstellung, Löschung und Änderung von Objekten zu regeln. Darüber hinaus können Zugangssteuerungscontroller benutzerdefinierte Verben einschränken, z. B. das Anfordern einer Verbindung mit einem Pod über einen API-Serverproxy. Die Zugangssteuerungscontroller können jedoch keine Anforderungen zum Lesen von Objekten blockieren, einschließlich Vorgängen wie get
, watch
oder list
.
Einige Komponenten können sich auf Zugangssteuerungscontroller auswirken, z. B. mutierende und überprüfende Webhooks. Wenn Sie das Mutieren und Überprüfen von Webhooks in Ihren Kubernetes-Cluster integrieren, müssen Sie Hochverfügbarkeit sicherstellen. Fehlerhafte Knoten sollten keine API-Serveranforderungen blockieren. Es ist wichtig, die Pipeline für die Zugangssteuerung zu überwachen, damit Anforderungen an den API-Server nicht blockiert werden. Fehlerhafte Zugangssteuerungscontroller können das Mutieren und Überprüfen von Webhooks beeinträchtigen. Zu Webhook-basierten Zugangssteuerungscontroller, die Sie überwachen sollten, zählen:
Das Azure Policy-Add-On für Azure Kubernetes Service (AKS)-Cluster, das Gatekeeper erweitert. Gatekeeper ist ein Zugangssteuerungscontroller-Webhook für Open Policy Agent.
Kyverno wird als dynamischer Zugangssteuerungscontroller in einem Kubernetes-Cluster ausgeführt. Kyverno empfängt HTTP-Rückrufe zum Überprüfen und Mutieren von Webhooks vom Kubernetes-API-Server und wendet entsprechende Richtlinien an, um Ergebnisse zurückzugeben, die Zugangsrichtlinien erzwingen oder Anforderungen ablehnen. Verweis zur Problembehandlung (z. B. APIServer schlägt bei webhook calls fehl), finden Sie unter der Kyverno-Problembehandlungsdokumentation.
Alternativ können Zugangssteuerungscontroller, die nicht ordnungsgemäß funktionieren, verschiedene Komponenten beeinträchtigen, z. B. Dienstgitter. Servicegitter wie Istio und Linkerdverwenden Zugangssteuerungscontroller, um die Injektion von Sidecarcontainern in einem Pod zu automatisieren. Es ist wichtig zu bewerten und zu überprüfen, ob die Zugangssteuerungscontroller ordnungsgemäß funktionieren, um den nahtlosen Betrieb eines Dienstgitters sicherzustellen.
Überprüfen des Status des Azure Policy-Add-Ons für AKS-Cluster
Wenn Sie das Azure Policy-Add-On für AKS installieren, können Sie die folgenden kubectl-Befehle verwenden, um die Installation und Funktionalität von Azure- Azure Policy-Zugangssteuerungscontrollern in Ihrem Cluster zu überprüfen:
# 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
...
Führen Sie den vorherigen Befehl aus, um die Verfügbarkeit von Azure Policy-Agent-Pods im Namespace gatekeeper-system zu überprüfen. Wenn die Ausgabe nicht den Erwartungen entspricht, kann es auf ein Problem mit einem Zugangssteuerungscontroller, API-Dienst oder einer benutzerdefinierten Ressourcendefinition (CRD) hinweisen.
# 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
...
Mit dem vorherigen Befehl können Sie überprüfen, ob alle API-Ressourcen ordnungsgemäß funktionieren. Stellen Sie sicher, dass die erwarteten Ressourcen ohne Fehler oder fehlende Komponenten in der Ausgabe enthalten sind. Verwenden Sie die Befehle kubectl get pod
und kubectl api-resources
, um den Status des Azure Policy-Add-Ons für AKS zu überprüfen und die Funktionalität von Zugangssteuerungscontrollern in Ihrem Kubernetes-Cluster zu überprüfen. Überwachen Sie die Zugangssteuerungscontroller regelmäßig, um sicherzustellen, dass sie ordnungsgemäß funktionieren, damit Sie den allgemeine Integrität und Stabilität Ihres Clusters aufrecht erhalten können.
Verwenden Sie den folgenden kubectl get
-Befehl aus, um zu überprüfen, ob die Richtlinienzuweisungen auf Ihren Cluster angewendet werden:
kubectl get constrainttemplates
Hinweis
Die Synchronisierung der Policy-Zuweisungen mit den einzelnen Clustern kann bis zu 20 Minuten dauern.
Die Ausgabe sollte ungefähr wie im folgenden Beispiel aussehen:
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
Weitere Informationen finden Sie in den folgenden Ressourcen:
Überprüfen von Webhooks
Führen Sie die folgenden Schritte aus, um sicherzustellen, dass das Überprüfen und Mutieren von Webhooks in Ihrem Kubernetes-Cluster wie erwartet funktioniert.
Führen Sie den folgenden Befehl aus, um die überprüfenden Webhooks im Cluster aufzulisten:
kubectl get ValidatingWebhookConfiguration -o wide
Die Ausgabe sollte ungefähr wie im folgenden Beispiel aussehen:
NAME WEBHOOKS AGE aks-node-validating-webhook 1 249d azure-policy-validating-webhook-configuration 1 249d gatekeeper-validating-webhook-configuration 1 249d
Überprüfen Sie die Ausgabe, um sicherzustellen, dass die überprüfenden Webhooks vorhanden sind und die gewünschte Konfigurationen aufweisen. Die Ausgabe enthält den Namen der einzelnen überprüfenden Webhooks, die Anzahl der Webhooks und das Alter jedes Webhooks.
Führen Sie den folgenden Befehl aus, um die mutierenden Webhooks im Cluster aufzulisten:
kubectl get MutatingWebhookConfiguration -o wide
Die Ausgabe sollte ungefähr wie im folgenden Beispiel aussehen:
NAME WEBHOOKS AGE aks-node-mutating-webhook 1 249d azure-policy-mutating-webhook-configuration 1 249d gatekeeper-mutating-webhook-configuration 1 249d
Überprüfen Sie die Ausgabe, um sicherzustellen, dass die mutierenden Webhooks korrekt aufgeführt werden und die gewünschten Konfigurationen aufweisen. Die Ausgabe enthält den Namen der einzelnen mutierenden Webhooks, die Anzahl der Webhooks und das Alter jedes Webhooks.
Führen Sie den folgenden Befehl aus, um bestimmte Details für einen bestimmten Zugangssteuerungscontroller abzurufen:
kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
Ersetzen Sie
<mutating-webhook-name>
durch den Namen des mutierenden Webhooks, für den Sie Details abrufen möchten. Die Ausgabe dieses Befehls zeigt die YAML-Darstellung der Konfiguration des angegebenen mutierenden Webhooks an.
Führen Sie die Befehle in diesem Abschnitt aus, und überprüfen Sie die Ausgabe, damit Sie bestätigen können, dass die überprüfenden und mutierenden Webhooks im Kubernetes-Cluster vorhanden und wie gewünscht konfiguriert sind. Diese Überprüfung ist unerlässlich, um ein ordnungsgemäßes Funktionieren zu gewährleisten. Es ist auch wichtig, sicherzustellen, dass die Webhooks die Richtlinien zum Überprüfen und Ändern von Ressourcen im Cluster einhalten.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautoren:
- Paolo Salvatori | Principal Customer Engineer
Andere Mitwirkende:
- Francis Simy Nazareth | Senior Technical Specialist
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.