Kubernetes Manifest Linter
Lint Kubernetes YAML sa prejavuje proti osvedčeným postupom zosilňovania klastrov, úplne offline vo vašom prehliadači.
Výsledok
Manifesty Kubernetes sa zvyčajne kontrolujú pohľadom v žiadosti o stiahnutie, čo znamená, že do produkcie sa stále dostáva rovnaká hŕstka zosilňujúcich chýb: Nasadenie bez limitu pamäte, ktoré nakoniec zabije OOM a vezme si so sebou uzol, kontajner, ktorý šťastne beží ako root, pretože nikto nenastavil runAsNonRoot, alebo Pod pripnutý k značke obrázka, ako je „:latestne a rollout“, ktorá sa ticho zmení. Tento linter zachytí túto triedu problémov vo chvíli, keď vložíte manifest, bez toho, aby ste potrebovali spustený klaster, kontext kubectl alebo akékoľvek poverenia.
Pod kapotou obsahuje malý ručne valcovaný analyzátor YAML napísaný špeciálne pre realistickú podmnožinu YAML, ktorú manifesty Kubernetes v skutočnosti používajú: `---`-oddelené dokumenty, vnorenie založené na odsadení, `key: value` a vnorené mapovania blokov, `- ` sekvenčné položky vrátane zoznamov máp, citované a necitované veci> skaláre s viacnásobnými úvodzovkami a skaláre, ako sú viacnásobné skaláre, komentáre. hodnoty alebo anotácie ConfigMap. Nie je zahrnutá žiadna externá knižnica YAML – syntaktický analyzátor aj modul pravidiel sú súčasťou nástroja a celé bežia vo vašom prehliadači.
Tabuľka pravidiel je modelovaná na základe dobre známych pokynov na zosilnenie klastra – CIS Kubernetes Benchmark, kube-score a profil Pod Security Standards „Restricted“ – a kontroluje každý kontajner na chýbajúce požiadavky/limity zdrojov, kontajnery, ktoré môžu bežať ako root alebo v privilegovanom režime, chýbajúce testy živosti a pripravenosti pri dlhotrvajúcich pracovných zaťaženiach (Deployments, DamountPass StatethfulSets), Hostiteľské servery hostiteľský súborový systém, využitie hostiteľskej siete a nereprodukovateľné „:najnovšie“ alebo neoznačené obrázky kontajnerov. Zistenia sú zoskupené podľa dokumentu a kontajnera s jasnou závažnosťou chýb/varovaní pri každom z nich, takže môžete odlíšiť, čo je skutočne riskantné, od toho, čo je len osvedčený postup.
Funguje na jednotlivých manifestoch alebo celých súboroch s viacerými dokumentmi prilepenými priamo z vykreslenia šablóny Helm alebo výstupu „kustomize build“, pričom rozumie zdrojom modulu Pod, Deployment, StatefulSet, DaemonSet, Job, ReplicaSet a CronJob. Pretože všetko beží lokálne, je bezpečné prilepiť manifesty, ktoré obsahujú interné názvy služieb, skutočné veľkosti zdrojov alebo čokoľvek iné, čo by ste nechceli posielať do API tretej strany – užitočné na rýchlu kontrolu zdravého rozumu pred vykonaním záväzku, pomôcku na kontrolu kódu alebo len na to, aby ste sa naučili, ako to „zosilnené“ v skutočnosti vyzerá v praxi.