Statische Analyse für Kubernetes
Kubelinter analysiert Kubernetes YAML -Dateien und Helm -Diagramme und überprüft sie mit einer Vielzahl von Best Practices, wobei der Schwerpunkt auf Bereitschaft und Sicherheit der Produktion liegt.
Kubelinter führt vernünftige Standardprüfungen aus, mit denen Sie nützliche Informationen zu Ihren Kubernetes -YAML -Dateien und Helm -Diagrammen erhalten. Dies soll den Teams helfen, früh und häufig nach Missverständnissen und Best Practices von DevOps zu überprüfen. Einige gängige Beispiele dafür sind das Ausführen von Containern als Nicht-Root-Benutzer, die Durchsetzung der geringsten Berechtigungen und das Speichern sensibler Informationen nur in Geheimnissen.
Kubelinter ist konfigurierbar, sodass Sie Überprüfungen aktivieren und deaktivieren sowie Ihre eigenen benutzerdefinierten Überprüfungen erstellen können, abhängig von den Richtlinien, die Sie in Ihrem Unternehmen befolgen möchten.
Wenn ein Lint-Check fehlschlägt, gibt Kubelinter Empfehlungen zur Behebung potenzieller Probleme und gibt einen Exit-Code ungleich Null zurück.
Besuchen Sie https://docs.kubelinter.io, um eine detaillierte Dokumentation zur Installation, Verwendung und Konfiguration von Kubelinter zu erhalten.
Kube-Linter-Binärdateien finden Sie hier: https://github.com/stackrox/kube-linter/releases/latest
Um mit GO zu installieren, führen Sie den folgenden Befehl aus:
go install golang.stackrox.io/kube-linter/cmd/kube-linter@latestLaden Sie ansonsten die neueste Binärdatei von Veröffentlichungen herunter und fügen Sie es Ihrem Weg hinzu.
Führen Sie den folgenden Befehl aus, um mit Homebrew oder LinuxBrew zu installieren:
brew install kube-linter nix-shell -p kube-linter
docker pull stackrox/kube-linter:latest
Das Installieren von Kubelinter aus der Quelle ist so einfach wie die folgenden Schritte:
Klonen Sie zunächst das Kubelinter -Repository.
git clone [email protected]:stackrox/kube-linter.git Kompilieren Sie dann den Quellcode. Dadurch werden die Kube-Linter-Binärdateien für jede Plattform erstellt und in den Ordner .gobin gelegt.
make buildSchließlich sind Sie bereit, mit Kubelinter zu beginnen. Überprüfen Sie Ihre Version, um sicherzustellen, dass Sie Kubelinter erfolgreich installiert haben.
.gobin/kube-linter versionEs gibt mehrere Testschichten. Jede Schicht wird erwartet.
go Unit -Tests:
make testEnd-to-End-Integrationstests:
make e2e-test und schließlich End-to-End-Integrationstests mit bats-core :
make e2e-batsKubelinter -Bilder werden von CoSIGN unter Signiert. Wir empfehlen, das Bild zu überprüfen, bevor wir es verwenden.
Sobald Sie CoSsign installiert haben, können Sie den öffentlichen Kubelinter -Taste verwenden, um das Kubelinter -Bild mit:
cat kubelinter-cosign.pub
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEl0HCkCRzYv0qH5QiazoXeXe2qwFX
DmAszeH26g1s3OSsG/focPWkN88wEKQ5eiE95v+Z2snUQPl/mjPdvqpyjA==
-----END PUBLIC KEY-----
cosign verify --key kubelinter-cosign $IMAGE_NAMEKubelinter bietet auch cosignschlüssellose Signaturen.
Sie können das Kubelinter -Bild mit:
# NOTE: Keyless signatures are NOT PRODUCTION ready.
COSIGN_EXPERIMENTAL=1 cosign verify $IMAGE_NAME Ausführen von Kubelinter, um Ihre YAML -Dateien aufzugeben, erfordert nur zwei Schritte in der grundlegendsten Form.
Suchen Sie die YAML -Datei, die Sie auf Best Practices für Sicherheits- und Produktionsbereitschaft testen möchten:
Führen Sie den folgenden Befehl aus:
kube-linter lint /path/to/your/yaml.yaml Betrachten Sie die folgende Beispielpod -Spezifikationsdatei pod.yaml . Diese Datei hat zwei Produktionsbereitschaftsprobleme und ein Sicherheitsproblem:
Sicherheitsproblem:
Produktionsbereitschaft:
Die Speicherbegrenzungen des Containers sind nicht festgelegt, wodurch er es ihm ermöglicht, übermäßigen Speicher zu konsumieren
apiVersion : v1
kind : Pod
metadata :
name : security-context-demo
spec :
securityContext :
runAsUser : 1000
runAsGroup : 3000
fsGroup : 2000
volumes :
- name : sec-ctx-vol
emptyDir : {}
containers :
- name : sec-ctx-demo
image : busybox
resources :
requests :
memory : " 64Mi "
cpu : " 250m "
command : [ "sh", "-c", "sleep 1h" ]
volumeMounts :
- name : sec-ctx-vol
mountPath : /data/demo
securityContext :
allowPrivilegeEscalation : falseKopieren Sie die YAML oben in Pod.yaml und finnen Sie diese Datei aus, indem Sie den folgenden Befehl ausführen:
kube-linter lint pod.yamlKubelinter führt seine Standardprüfungen und Berichte aus. Unten finden Sie die Ausgabe aus unserem vorherigen Befehl.
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) The container "sec-ctx-demo" is using an invalid container image, "busybox". Please use images that are not blocked by the `BlockList` criteria : [".*:(latest)$" "^[^:]*$" "(.*/[^:]+)$"] (check: latest-tag, remediation: Use a container image with a specific tag other than latest.)
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" does not have a read-only root file system (check: no-read-only-root-fs, remediation: Set readOnlyRootFilesystem to true in the container securityContext.)
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" has memory limit 0 (check: unset-memory-requirements, remediation: Set memory limits for your container based on its requirements. Refer to https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits for details.)
Error: found 3 lint errors
Um mehr über die Verwendung und Konfiguration von Kubelinter zu erfahren, besuchen Sie die Dokumentationsseite.
Im Folgenden finden Sie Tutorials zu Kubelinter, die von Benutzern geschrieben wurden. Wenn Sie eine haben, die Sie dieser Liste hinzufügen möchten, senden Sie bitte eine PR!
Wenn Sie sich mit der Kubelinter -Community befassen möchten, einschließlich Betreuer und anderen Benutzern, können Sie sich hier dem Slack -Arbeitsbereich anschließen.
Um einen Beitrag zu leisten, lesen Sie unseren Beitragsführer.
Zur Erinnerung wird die gesamte Teilnahme an der Kubelinter -Community von unserem Verhaltenskodex regiert.
Kubelinter befindet sich in einem frühen Entwicklungsstadium. Möglicherweise werden in Zukunft Änderungen an den Befehlsnutzung, Flaggen und Konfigurationsdateiformaten stattfinden. Wir empfehlen Ihnen jedoch, Kubelinter zu verwenden, um Ihre Umgebung YAML -Dateien zu testen, zu sehen, was bricht und einen Beitrag leisten.
Kubelinter ist unter der Apache -Lizenz 2.0 lizenziert.
Kubelinter wird mit ❤️ von Stackrox hergestellt.
Wenn Sie an Kubelinter oder an den anderen coolen Dingen interessiert sind, die wir tun, wissen Sie bitte, dass wir einstellen! Schauen Sie sich unsere offenen Positionen an. Wir würden gerne von Ihnen hören!