Kubernetes Manifest Linter
Lint Kubernetes YAML vastustaa klusterin tiivistämisen parhaita käytäntöjä, täysin offline-tilassa selaimessasi.
Tulos
Kubernetes-luettelot tarkistetaan yleensä silmällä vetopyynnössä, mikä tarkoittaa, että samat kouralliset kovettumisvirheet pääsevät tuotantoon: käyttöönotto ilman muistirajoitusta, joka lopulta saa OOM-tappaman ja vie mukanaan solmun, säilö, joka toimii onneksi pääkäyttäjänä, koska kukaan ei asettanut runAsNonRootia, tai Pod, joka on kiinnitetty kuvatunnisteeseen rollane-muutoksia, kuten `:outlane-muutoksia. Tämä linteri havaitsee tämän luokan ongelmat heti, kun liität luettelon ilman käynnissä olevaa klusteria, kubectl-kontekstia tai mitään valtuustietoja.
Kotelon alla se sisältää pienen käsin rullatun YAML-jäsentimen, joka on kirjoitettu erityisesti YAML:n realistiselle osajoukolle, jota Kubernetes-luettelot todella käyttävät: `---`-erotetut asiakirjat, sisennyspohjainen sisäkkäisyys, `avain: arvo` ja sisäkkäiset lohkokartoitukset, `- ` sekvenssikohteet mukaan lukien karttaluettelot, lainatut ja lainaamattomat lohkot, kommentit/`ar` | skalaarit esimerkiksi monirivisille ConfigMap-arvoille tai huomautuksille. Siihen ei liity ulkoista YAML-kirjastoa – jäsentäjä ja sääntömoottori ovat molemmat mukana työkalussa ja toimivat kokonaan selaimessasi.
Sääntötaulukko on mallinnettu tunnettujen klustereiden vahvistamisohjeiden mukaan – CIS Kubernetes Benchmark, kube-score ja Pod Security Standards "Restricted" -profiili, ja se tarkistaa kustakin säilöstä puuttuvien resurssipyyntöjen/rajoitusten, pääkäyttäjänä tai etuoikeutetussa tilassa toimivien säilöjen, puuttuvien elävyyden ja valmiuslukemien, pitkien asettelutilojen työkuormituksen. DaemonSets), hostPath-taltioliitännät, jotka paljastavat isäntätiedostojärjestelmän, isäntäverkon käytön ja ei-toistettavat `:uusimmat' tai merkitsemättömät säilökuvat. Löydökset on ryhmitelty asiakirjan ja säilön mukaan, ja jokaisessa on selkeä virhe-/varoitusvakavuus, jotta voit erottaa, mikä on itse asiassa riskialtista, pelkkää parhaiden käytäntöjen nyökkäyksen perusteella.
Se toimii yksittäisissä luetteloissa tai kokonaisissa usean asiakirjan tiedostoissa, jotka on liitetty suoraan Helm-mallin renderöinnista tai "kustomize build" -tulostuksesta ja ymmärtää Pod-, Deployment-, StatefulSet-, DaemonSet-, Job-, ReplicaSet- ja CronJob-resurssit. Koska kaikki toimii paikallisesti, on turvallista liittää luetteloita, jotka sisältävät sisäisiä palvelunimiä, todellisia resurssien kokoja tai mitä tahansa muuta, mitä et halua lähettää kolmannen osapuolen API:lle – hyödyllinen nopeaan sitoutumista edeltävään järkeenkäypään tarkistukseen, koodin tarkistusapua varten tai vain oppimiseen, miltä "karkaistu" käytännössä näyttää.