Wie Sie Ihre Kubernetes-Manifeste mit Kube-Score fluten

0
142

Kube-Score ist ein statisches Analysetool von Kubernetes, mit dem Ihre Ressourcen identifiziert werden können Sicherheits- und Zuverlässigkeitsprobleme. Wenn Sie Kube-Score ausführen, bevor Sie Manifeste auf Ihren Cluster anwenden, können Sie Schwachstellen identifizieren, bevor sie zu echten Problemen werden.

Erste Schritte

Kube-Score wird in verschiedenen Installationsformaten angeboten. Vorgefertigte Binärdateien sind für Windows, macOS und Linux von GitHub verfügbar. Alternativ können Sie den Brew-Paketmanager unter macOS verwenden (brew install kube-score/tap/kube-score) oder Kube-Score als kubectl-Plugin hinzufügen (kubectl krew install score).

Kube ausführen -Bewerte mit dem kube-score-Befehl in deinem Terminal. Es akzeptiert den Pfad zu einer Kubernetes-YAML-Manifestdatei. Platzhalter werden unterstützt, um mehrere übereinstimmende Dateien und ganze Verzeichnisse zu scannen.

Kube-Score funktioniert auch mit Manifesten, die über die Standardeingabe übergeben werden. Auf diese Weise können Sie das Tool für einen Live-Kubernetes-Cluster ausführen. Verwenden Sie kubectl, um auf das Manifest einer Ressource zuzugreifen und es in den Befehl zu leiten. Hier ist die empfohlene Methode zur Analyse Ihres gesamten Clusters:

kubectl api-resources –verbs=list –namespaced -o name | xargs -n1 -I{} bash -c “kubectl get {} –all-namespaces -oyaml && echo —” | kube-score score –

Dieser Mechanismus erleichtert auch die Verwendung mit Helm-Diagrammen. Verwenden Sie den Befehl helm template, um Ihr Diagramm als normales Kubernetes-Manifest zu rendern. Leiten Sie diese Ausgabe in kube-score:

helm template example-manifest | Kube-Score-Score –

Werbung

Farbige Testergebnisse werden direkt an Ihr Terminal ausgegeben. Jede fehlgeschlagene Prüfung enthält eine Beschreibung des Tests und Vorschläge für mögliche Lösungen. Überprüfen Sie die Ausgabe, um Möglichkeiten zur Verbesserung Ihrer Manifeste zu ermitteln.

Tests werden entweder als WARNUNG oder KRITISCH markiert. Ein kritischer Fehler erfordert normalerweise eine sofortige Behebung. Warnungen müssen je nach Ihrer spezifischen Situation möglicherweise nicht behoben werden.

Eine für Menschen lesbare Ausgabe kann mit dem Flag –output-format deaktiviert werden. Setzen Sie dies auf json oder ci, um maschinenlesbaren Inhalt zu erhalten, der von anderen Tools leicht geparst werden kann. Das ci-Format soll die Nutzung durch CI/CD-Systeme unterstützen, während json Ihnen eine JSON-Darstellung der regulären Konsolenausgabe bietet. Kube-Score wird immer mit einem Statuscode von 1 beendet, wenn Fehler erkannt werden.

Wenn Sie mit Kube-Score experimentieren möchten, können Sie den Live-Analyzer auf der Website des Projekts verwenden. Auf diese Weise können Sie ein Manifest schreiben und die Scanergebnisse in Echtzeit beobachten. Es ist praktisch, wenn Sie schnell mit Kube-Score oder Ihren Manifesten experimentieren.

Was prüft Kube-Score?< /h2>

Kube-Score führt über 20 verschiedene Prüfungen durch, die ein breites Spektrum an Sicherheits- und Zuverlässigkeitsbedenken abdecken. Dazu gehören Tests für die richtigen Containerressourcengrenzen, die korrekte Verwendung von Ingress- und Egress-Routen und die Konfiguration von Container-Bereitschaftstests für Integritätsprüfungen.

Hier sind einige der integrierten Regeln:

  • Verbieten Sie die Verwendung des neuesten Tags für Images.
  • Stellen Sie sicher, dass jeder Pod eine Image-Pull-Richtlinie von Always hat, damit Pull-Secrets bei jedem Versuch validiert werden.
  • Pods überprüfen über gültige Testkonfigurationen und Netzwerkrichtlinien verfügen.
  • Überprüfen Sie, ob alle Labels für alle Ressourcen gültig sind.
  • Überprüfen Sie, ob unzulässige Pod-Anti-Affinitäten vorliegen, die verhindern würden, dass andere Pods für denselben Worker geplant werden Knoten.
  • Überprüfen Sie, ob alle Dienste einen gültigen Pod zum Ziel haben.
  • Stellen Sie sicher, dass Container ein schreibgeschütztes Root-Dateisystem ohne privilegierten Modus verwenden.

Sie sollten die README von Kube-Score für eine vollständige Liste der verfügbaren Schecks. In vielen Fällen reicht der Standardsatz aus, um Ihnen einen Überblick über die häufigsten manifesten Probleme zu geben.

Optionale Regeln

Einige Regeln sind optional und standardmäßig deaktiviert. Dies sind im Allgemeinen subjektive Fälle, die bei globaler Durchsetzung zu unerwarteten Fehlern führen können.

Werbung

Optionale Tests werden aktiviert, indem das Flag –enable-optional-test an den Befehl kube-score übergeben wird. Es ist eine Test-ID erforderlich, die dem Scan hinzugefügt wird. Mehrere optionale Tests werden durch Wiederholen des Flags aktiviert.

kube-score –enable-optional-test container-security-context-user-group-id

Dieser Befehl führt Kube-Score mit einem zusätzlichen Test auf explizite . aus Benutzer- und Gruppen-IDs. Die Prüfung schlägt fehl, wenn ein Pod ohne manuell festgelegte Benutzer-/Gruppen-IDs von 1.000 oder höher ausgeführt wird.

Sie können Tests auf ähnliche Weise mit dem Flag –ignore-test deaktivieren. Dies erfordert eine Test-ID, die aus dem Scan entfernt wird. Darüber hinaus verhindern die Flags –ignore-container-cpu-limit und –ignore-container-memory-limit das übliche Beharren von Kube-Score, dass jeder Container manuell konfigurierte CPU- und Speicherlimits besitzt.

< h2 id="managing-kubernetes-versions">Verwaltung von Kubernetes-Versionen

Kube-Score geht derzeit davon aus, dass Sie Kubernetes v1.18 verwenden. Wenn Sie eine andere Version ausführen, geben Sie diese mit dem Flag –kubernetes-version an. Dadurch wird Kube-Score mitgeteilt, welche Prüfungen für Ihre Bereitstellungsumgebung tatsächlich relevant sind. Wenn Sie nicht die richtige Version angeben, kann dies zu falsch positiven oder negativen Ergebnissen führen, sodass Sie ein ungenaues Bild von der Widerstandsfähigkeit Ihres Clusters erhalten.

Kube-Score erwartet, dass Ihre einzelnen Ressourcen stabile Kubernetes-APIs verwenden. Alle Ressourcen, die auf Beta-APIs verweisen, die durch eine stabile Version ersetzt wurden, werden den Test nicht bestehen.

Zusammenfassung

Kube-Score bietet eine einfache statische Analyse für Kubernetes-Ressourcenmanifeste. Sie können sich über potenzielle Probleme informieren, bevor Sie versuchen, in Ihrem Cluster bereitzustellen. Wenn Sie Kube-Score als Teil Ihrer CI-Pipeline ausführen, können Sie sicher sein, dass Ihre Ressourcen richtig konfiguriert sind und Ihr Cluster zuverlässig funktioniert.

Werbung

Füttern Sie alle Ihre Ressourcen mit Kube-Score, um optimale Ergebnisse zu erzielen. Am effektivsten ist es, wenn die Eingabe alle Ressourcen im selben Namespace enthält. Andernfalls werden einige Probleme möglicherweise übersehen, wenn sie aufgrund eines Konflikts mit einem anderen Manifest auftreten.

Denken Sie daran, dass Kube-Score keine umfassende Analyse Ihres Clusters ist. Es ist ein Hilfswerkzeug, keine vollständige Checkliste, die einen wasserdichten Cluster garantiert. Sie sollten Ihre Umgebung dennoch unabhängig überprüfen, um hohe Sicherheit und Spitzenleistung zu gewährleisten. Kube-Score wird am besten als tägliches Dienstprogramm verwendet, das die Sicherheit einzelner Bereitstellungen erhöht.