Erste Schritte mit Kubernetes und Kyverno Policy Management auf der OpenShift Container Platform
Dieser Artikel zeigt Ihnen die ersten Schritte mit Kyverno auf der OpenShift-Containerplattform, mit der Sie die Sicherheit erhöhen, fortschrittliche Technologien einfach implementieren und andere schwierige Aufgaben lösen können.
Red Hat® OpenShift ist eine weit verbreitete Kubernetes-basierte Containerplattform. Mit der Einführung von OpenShift sehen sich Entwickler oft mit der Notwendigkeit konfrontiert, eine Konfiguration automatisch zu aktualisieren oder zu erstellen sowie die Sicherheit zu gewährleisten und bewährte Verfahren zu übernehmen.
Im Wesentlichen versuchen sie, die notwendigen Sicherheitsmechanismen zu schaffen, damit Entwickler OpenShift weiterhin verwenden können, ohne andere Anwendungen zu beeinträchtigen und ohne durch Fehlkonfiguration Schwachstellen einzuführen. Kyverno, eine native Kubernetes-Richtlinien-Engine, ist ideal für diese Aufgabe und wird häufig verwendet, um die oben genannten Probleme zu lösen. Als Nächstes werde ich darüber sprechen, wie Sie mit Kyverno auf der OpenShift-Containerplattform beginnen können.
RedHat OpenShift
Die Red Hat® OpenShift Container Platform ist die branchenführende Hybrid-Cloud-Plattform auf Basis von Containern und Kubernetes. Die Verwendung der OpenShift-Containerplattform vereinfacht und beschleunigt die Entwicklung, Bereitstellung und Lebenszyklusverwaltung eines hybriden Satzes von Anwendungen, die sich überall befinden können: On-Premise, Public Clouds und Edge. Die OpenShift-Containerplattform wurde entwickelt, um kontinuierliche Innovation und Geschwindigkeit in großem Umfang zu liefern und Unternehmen dabei zu unterstützen, für heute bereit zu sein und für morgen zu planen.
Kyverno
Kyverno ist die ideale Lösung zum Automatisieren, Verwalten und Sichern jeder Kubernetes-basierten Plattform, einschließlich der OpenShift-Containerplattform. Kyverno arbeitet als dynamischer Zugangscontroller in einem Cluster. Es empfängt HTTP-Webhook-Rückrufe mit Überprüfung und Änderung von Berechtigungen von kube-apiserver und wendet die entsprechenden Richtlinien an, um Ergebnisse zu erzeugen, die die Berechtigungsrichtlinien erzwingen oder Anforderungen ablehnen. Kyverno-Richtlinien sind in Kubernetes nativem YAML geschrieben, wodurch die Lernkurve, die zum Schreiben Ihrer eigenen Richtlinien erforderlich ist, erheblich verkürzt wird. Kyverno-Richtlinien können Ressourcen mithilfe von Ressourcentyp-, Namens- und Bezeichnungsselektoren abgleichen, um Aktionen wie Image-Validierung, -Änderung, -Generierung und -Verifizierung für die Containersignierung und Softwarekettenzertifizierung auszulösen.
Vor Arbeitsbeginn
Um zu beginnen, benötigen Sie Folgendes:
- Installierte Containerplattform OpenShift Version 4.8 oder höher.
- Helm Version 3.2 (oder höher) installiert und für den Zugriff auf Ihren OpenShift-Cluster konfiguriert.
- Kubectl installiert und auch für den Zugriff auf Ihren OpenShift-Cluster konfiguriert.
Nachdem Sie alle erforderlichen Komponenten vorbereitet haben, fahren Sie mit den folgenden Schritten fort:
- Installieren Sie Kyverno.
- Installieren Sie die Kyverno-Richtlinien.
- Überprüfen Sie den Bericht zu Richtlinienverstößen.
Installieren Sie Kyverno
Sie benötigen Cluster-Administratorrechte, um Kyverno zu installieren. Die neuesten Kyverno-Installationsanweisungen finden Sie hier
.
Fügen Sie zuerst das Kyverno-Helm-Repository hinzu und aktualisieren Sie es:
helm repo kyverno helm repo update hinzufügen
Installieren Sie dann Kyverno auf Ihrem OpenShift-Cluster. Beachten Sie, dass der Namespace
Kyverno
wird automatisch erstellt:
helm install kyverno kyverno/kyverno –namespace kyverno –create-namespace
Überprüfen Sie nach der Installation der Helm-Karte, ob die
Kyverno.
kubectl get pods -n kyverno
Bitte beachten Sie, dass es je nach Größe Ihres OpenShift-Clusters, also der Anzahl der Ressourcen im Cluster, notwendig sein kann, die Speicher- und CPU-Limits für das bereitgestellte Kyverno zu erhöhen. Sie sollten auch die Anzahl der Replikate auf 2 erhöhen, damit Kyverno im Hochverfügbarkeitsmodus bereitgestellt wird.
Wenn Sie auf OpenShift-Clustern das Scannen und Überprüfen von Ressourcen in System-Namespaces (die mit OpenShift beginnen) verhindern möchten, können Sie die Kyverno-Konfigurationszuordnung so aktualisieren, dass sie den folgenden Eintrag enthält:
Webhooks: ‘[{“namespaceSelector”:{“matchExpressions”:[{“key”:”openshift.io/run-level”,”operator”:”NotIn”,
“values”: [“0″,”1”]}]}}]’
Sobald der Kyverno-Pod gestartet ist, erstellt er automatisch die erforderlichen Berechtigungs-Webhooks. Sie können auch überprüfen
die mit diesem Befehl für Kyverno installiert werden:
kubectl crds abrufen |grep kyverno
Installieren von Kyverno-Richtlinien
Nachdem Kyverno installiert ist, können Sie mit dem Einrichten von Richtlinien beginnen. Bei der Erstinstallation wird empfohlen, sie so einzustellen, dass sie im „Audit“-Modus arbeiten, damit keine der Verbindungsanfragen zum OpenShift-Cluster blockiert werden. Sie können herausfinden, ob eine Richtlinie auf „Audit“ eingestellt ist, indem Sie einfach die Eigenschaft „validationFailureAction“ im Richtlinienmanifest überprüfen.
Verwenden Sie den folgenden Befehl, um typische Richtlinien zu installieren:
helm install kyverno-policies kyverno/kyverno-policies –namespace kyverno
Als Nächstes können Sie mit dem folgenden Befehl überprüfen, ob die Richtlinien installiert wurden:
kubectl erhält Clusterrichtlinien
Die Ausgabe des Befehls sollte wie folgt aussehen:
NAME HINTERGRUNDAKTION BEREIT Privilegienausweitung verweigern true audit true disallow-add-capabilities true audit true disallow-host-namespaces true audit true disallow-host-path true audit true disallow-host-ports true audit true disallow-privileged-containers true audit true disallow-selinux true audit true require-default-proc-mount true audit true require-non-root-groups true audit true require-run-as-non-root true audit true constraint-apparmor-profiles true audit true seccomp wahr Audit wahr Restrikt-sysctls wahr Audit wahr Restriktionsvolumentypen wahr Audit wahr
Beachten Sie, dass der Status BEREIT der Richtlinie bedeutet, dass sie bereit ist, alle eingehenden Anforderungen zu verarbeiten oder Hintergrundaufgaben auszuführen.
Anzeigen eines Richtlinienverstoßberichts
Sobald die Richtlinien installiert und bereit sind, sollten sie mit dem Generieren von Richtlinienverletzungsfehlern beginnen. Richtlinienverstöße können durch Abrufen von Richtlinienberichten angezeigt werden. Verwenden Sie den folgenden Befehl, um Richtlinienberichte für alle Namespaces abzurufen:
kubectl get policyreports -A
Führen Sie den folgenden Befehl aus, um Informationen zu clusterweiten Richtlinienverstößen abzurufen:
kubectl erhält Clusterrichtlinienberichte
Sie können auch detaillierte Richtlinienanalyseergebnisse mit dem folgenden Befehl anzeigen:
kubectl beschreiben
.
Fehlerbehebung bei Problemen und Problemen
Unter Kyverno stürzt und stürzt ständig ab
Überprüfen Sie, ob der Absturz dadurch verursacht wird, dass der Pod nicht genügend Speicher erhält. Erhöhen Sie das Speicherlimit.
Richtlinien nicht angewendet
Überprüfen Sie, ob validierende und mutierende Webhooks korrekt erstellt werden:
kubectl erhält validierende Webhook-Konfigurationen, mutierende Webhook-Konfigurationen
Sie sollten Folgendes sehen:
NAME WEBHOOKS ALTER validatingwebhookconfiguration.admissionregistration.k8s.io/kyverno-policy-validating-webhook-cfg 1 46m validatingwebhookconfiguration.admissionregistration.k8s.io/kyverno-resource-validating-webhook-cfg 1 46m validatingwebhookconfiguration.admissionregistration.k8s.io/autoscaling .openshift.io 2 17d validatingwebhookconfiguration.admissionregistration.k8s.io/multus.openshift.io 1 17d NAME WEBHOOKS ALTER mutatingwebhookconfiguration.admissionregistration.k8s.io/kyverno-policy-mutating-webhook-cfg 1 46m mutatingwebhookconfiguration.admissionregistration.k8s.io /kyverno-resource-mutating-webhook-cfg 1 46m
Überprüfen Sie auch, ob der Kyverno-Dienst richtig konfiguriert ist:
kubectl get services -n kyverno
Sie sollten Folgendes sehen:
NAME TYP CLUSTER-IP EXTERNE IP PORT(S) ALTER kyverno-svc ClusterIP 172.30.97.254
Weitere Informationen zur Fehlerbehebung finden Sie unter
.
Zusammenfassen
Wie Sie sehen können, ist es sehr einfach, Kyverno auf einem OpenShift-Cluster zu verwenden. Nachdem Sie Kyverno installiert und Richtlinien angewendet haben, können Sie sofort mit dem Schreiben beginnen.
für Ihr Projekt. Die OpenShift-Installation enthält mehrere benutzerdefinierte Ressourcendefinitionen. Falls Sie also benutzerdefinierte Ressourcen validieren müssen, können Sie einfach die entsprechende Kyverno-Richtlinie schreiben. Vielleicht finden Sie auch mehrere
Richtlinien, die von der Community erstellt werden
Kyverno und wenden Sie sie auf Ihre Cluster an.
Ein UFO ist eingeflogen und hat hier einen Aktionscode für unsere Blog-Leser hinterlassen:
— 15 % für alle VDS-Tarife (außer Heiztarif) – HABRFIRSTVDS.