Kubernetes Manifest Linter
Το Lint Kubernetes YAML εκδηλώνεται ενάντια στις βέλτιστες πρακτικές που σκληραίνουν τα συμπλέγματα, εντελώς εκτός σύνδεσης στο πρόγραμμα περιήγησής σας.
Αποτέλεσμα
Τα μανιφέστα Kubernetes εξετάζονται συνήθως με το βλέμμα σε ένα αίτημα έλξης, πράγμα που σημαίνει ότι συνεχίζουν να φτάνουν στην παραγωγή τα ίδια λάθη σκλήρυνσης: μια ανάπτυξη χωρίς όριο μνήμης που τελικά σκοτώνεται από το OOM και παίρνει έναν κόμβο μαζί του, ένα κοντέινερ που λειτουργεί ευτυχώς ως root επειδή κανείς δεν έχει ορίσει το runAsNonRoot ή ένα Pod που έχει καρφιτσωθεί σε μια εικόνα: διάθεση. Αυτό το linter εντοπίζει αυτήν την κατηγορία προβλημάτων τη στιγμή που επικολλάτε ένα μανιφέστο, χωρίς να χρειάζεται ένα σύμπλεγμα που εκτελείται, το περιβάλλον kubectl ή καθόλου διαπιστευτήρια.
Κάτω από την κουκούλα περιλαμβάνει έναν μικρό χειροκίνητο αναλυτή YAML που έχει γραφτεί ειδικά για το ρεαλιστικό υποσύνολο του YAML που ο Kubernetes φανερώνει ότι χρησιμοποιεί στην πραγματικότητα: `---`-διαχωρισμένα έγγραφα, ένθεση βάσει εσοχών, αντιστοιχίσεις «κλειδί: τιμή» και ένθετα μπλοκ, «- « στοιχεία ακολουθίας συμπεριλαμβανομένων λιστών χαρτών, εισαγωγικών και μη εισαγωγικών, βαθμίδες για πράγματα όπως τιμές ConfigMap πολλαπλών γραμμών ή σχολιασμούς. Δεν εμπλέκεται εξωτερική βιβλιοθήκη YAML — ο αναλυτής και ο κινητήρας κανόνων συνοδεύονται από το εργαλείο και εκτελούνται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας.
Ο πίνακας κανόνων βασίζεται σε γνωστές οδηγίες σκλήρυνσης συμπλέγματος - το CIS Kubernetes Benchmark, το kube-score και το προφίλ "Περιορισμένης" προτύπων ασφαλείας Pod - και ελέγχει κάθε κοντέινερ για αιτήματα/όρια πόρων που λείπουν, κοντέινερ που μπορούν να εκτελούνται ως root ή σε προνομιακή λειτουργία, ελλείποντα στοιχεία ζωής και ετοιμότητα εργασίας DaemonSets), προσαρτήσεις τόμου hostPath που εκθέτουν το σύστημα αρχείων του κεντρικού υπολογιστή, τη χρήση του δικτύου κεντρικού υπολογιστή και τις εικόνες κοντέινερ που δεν μπορούν να αναπαραχθούν ":latest" ή χωρίς ετικέτα. Τα ευρήματα ομαδοποιούνται ανά έγγραφο και ανά κοντέινερ, με σαφή σοβαρότητα σφάλματος/προειδοποίησης σε καθένα, ώστε να μπορείτε να ξεχωρίσετε τι είναι πραγματικά επικίνδυνο από αυτό που είναι απλώς μια ώθηση βέλτιστης πρακτικής.
Λειτουργεί σε μεμονωμένα μανιφέστα ή ολόκληρα αρχεία πολλών εγγράφων που έχουν επικολληθεί απευθείας από μια απόδοση προτύπου Helm ή μια έξοδο «προσαρμογή κατασκευής», κατανοώντας τους πόρους Pod, Deployment, StatefulSet, DaemonSet, Job, ReplicaSet και CronJob. Επειδή όλα εκτελούνται τοπικά, είναι ασφαλές να επικολλήσετε δηλώσεις που περιέχουν εσωτερικά ονόματα υπηρεσιών, πραγματικό μέγεθος πόρων ή οτιδήποτε άλλο δεν θα θέλατε να στείλετε σε ένα API τρίτου μέρους — χρήσιμο για έναν γρήγορο έλεγχο υγιεινής πριν από τη δέσμευση, ένα βοήθημα ελέγχου κώδικα ή απλώς για να μάθετε πώς φαίνεται στην πραγματικότητα το "hardened" στην πράξη.