Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel ist Teil einer Serie. Beginnen Sie mit der Übersicht.
Admission Controller verursachen selten Probleme, aber es ist wichtig, ihre ordnungsgemäße Funktion sicherzustellen. In diesem Artikel wird erläutert, wie sich Steuerungscontroller auf andere Komponenten auswirken können, wenn sie nicht ordnungsgemäß funktionieren. Außerdem werden Befehle beschrieben, mit denen Sie die Leistung des Admission Controllers validieren können.
Zugriffskontroller
Ein Admission Controller ist ein Codeabschnitt, der Anforderungen an einen Kubernetes-API-Server abfängt, nachdem eine Anforderung authentifiziert und autorisiert wurde, aber bevor ein Objekt persistent gespeichert wird.
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 Zugriffskontrollsystemen besteht darin, Anforderungen für die Erstellung, Löschung und Bearbeitung von Objekten zu regeln. Darüber hinaus können Admission Controller benutzerdefinierte Verben einschränken, wie zum Beispiel das Anfordern einer Verbindung zu einem Pod über einen API-Server-Proxy. Zulassungskontroller können jedoch Anfragen zum Lesen von Objekten nicht 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 Mutating und Validieren von Webhooks in Ihren Kubernetes-Cluster integrieren, müssen Sie eine hohe Verfügbarkeit sicherstellen. Fehlerhafte Knoten sollten keine API-Serveranforderungen blockieren. Es ist wichtig, die Pipeline für die Zulassungskontrolle 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 Admission Controller-Webhook für Open Policy Agent.
Kyverno, der als dynamischer Zulassungscontroller in einem Kubernetes-Cluster ausgeführt wird. 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 Zulassungskontrollen, die nicht ordnungsgemäß funktionieren, verschiedene Komponenten betreffen, wie zum Beispiel Service-Meshes. 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 Admission Controller ordnungsgemäß funktionieren, um einen nahtlosen Betrieb der Service-Mesh sicherzustellen.
Überprüfen des Status des Azure-Richtlinien-Add-Ons für AKS-Cluster
Wenn Sie das Azure-Richtlinien-Add-On für AKS installieren, können Sie die folgenden `kubectl`-Befehle verwenden, um die Installation und Funktionalität der Azure Policy Admission Controller 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 Gatekeeper-Systemnamespace zu überprüfen. Wenn die Ausgabe nicht den Erwartungen entspricht, kann es auf ein Problem mit einem Admission Controller, 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 Ausgabe die erwarteten Ressourcen ohne Fehler oder fehlende Komponenten enthält. Verwenden Sie die Befehle kubectl get pod
und kubectl api-resources
, um den Status des Azure-Richtlinien-Add-Ons für AKS zu überprüfen und die Funktionalität von Zulassungskontrollern in Ihrem Kubernetes-Cluster zu validieren. Überwachen Sie regelmäßig die Admission Controller, um sicherzustellen, dass sie ordnungsgemäß funktionieren, sodass Sie den Gesamtzustand und die Stabilität Ihres Clusters aufrechterhalten können.
Verwenden Sie den folgenden kubectl get
Befehl, um zu bestätigen, dass Richtlinienzuweisungen auf Ihren Cluster angewendet werden:
kubectl get constrainttemplates
Hinweis
Richtlinienzuweisungen können bis zu 20 Minuten dauern, bis sie mit jedem Cluster synchronisiert werden.
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 Validieren und Ändern von Webhooks wie vorgesehen in Ihrem Kubernetes-Cluster funktioniert.
Führen Sie den folgenden Befehl aus, um die validierenden 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 zu überprüfen, ob die überprüfenden Webhooks vorhanden sind und ihre Konfigurationen wie erwartet sind. Die Ausgabe enthält den Namen jedes validierenden 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 sind und ihre Konfigurationen wie gewünscht sind. 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 validierenden und mutierenden Webhooks im Kubernetes-Cluster vorhanden und wie erwartet konfiguriert sind. Diese Überprüfung ist unerlässlich, um ein ordnungsgemäßes Funktionieren zu gewährleisten. Es ist auch wichtig, sicherzustellen, dass die Webhooks Richtlinien zum Überprüfen und Ändern von Ressourcen im Cluster einhalten.
Beitragende
Dieser Artikel wird von Microsoft verwaltet. Sie wurde ursprünglich von den folgenden Mitwirkenden verfasst.
Hauptautoren:
- Paolo Salvadori | Principal Customer Engineer
Andere Mitwirkende:
- Francis Simy Nazareth | Senior Technical Specialist
Um nicht öffentliche LinkedIn-Profile anzuzeigen, melden Sie sich bei LinkedIn an.