Kubernetes ปรากฏ Linter
Lint Kubernetes YAML ต่อต้านแนวทางปฏิบัติที่ดีที่สุดในการทำให้คลัสเตอร์แข็งแกร่งขึ้นแบบออฟไลน์โดยสิ้นเชิงในเบราว์เซอร์ของคุณ
ผลลัพธ์
โดยปกติแล้วไฟล์ Manifest ของ Kubernetes จะได้รับการตรวจทานด้วยตาเปล่าในคำขอดึง ซึ่งหมายความว่ามีข้อผิดพลาดจำนวนหนึ่งที่ทำให้เกิดข้อผิดพลาดขึ้นอย่างต่อเนื่อง: การปรับใช้ที่ไม่มีขีดจำกัดหน่วยความจำซึ่งในที่สุดจะโดน OOM ทำลายและนำโหนดไปด้วย คอนเทนเนอร์ที่ทำงานอย่างมีความสุขในฐานะรูทเพราะไม่มีใครตั้งค่า runAsNonRoot หรือพ็อดที่ปักหมุดไว้กับแท็กรูปภาพ เช่น `:ล่าสุด` ที่เปลี่ยนแปลงอย่างเงียบ ๆ ภายใต้การเปิดตัว linter นี้จะตรวจจับระดับของปัญหานั้นทันทีที่คุณวางรายการ โดยไม่จำเป็นต้องมีคลัสเตอร์ที่ทำงานอยู่ บริบท kubectl หรือข้อมูลรับรองใดๆ เลย
ภายใต้ประทุนนั้นประกอบด้วยตัวแยกวิเคราะห์ YAML ที่รีดด้วยมือขนาดเล็กที่เขียนขึ้นโดยเฉพาะสำหรับชุดย่อยที่เหมือนจริงของ YAML ที่ Kubernetes แสดงให้เห็นการใช้งานจริง: `---`- เอกสารที่แยกจากกัน, การซ้อนตามการเยื้อง, `คีย์: ค่า` และการแมปบล็อกแบบซ้อน, `- ` รายการลำดับรวมถึงรายการของแผนที่ สเกลาร์ที่ยกมาและไม่ได้ยกมา ความคิดเห็น และสเกลาร์บล็อก `|`/`>` สำหรับสิ่งต่าง ๆ เช่น หลายบรรทัด ค่า ConfigMap หรือคำอธิบายประกอบ ไม่มีไลบรารี YAML ภายนอกที่เกี่ยวข้อง — ทั้ง Parser และ Rule Engine รวมอยู่ในเครื่องมือและทำงานทั้งหมดในเบราว์เซอร์ของคุณ
ตารางกฎสร้างแบบจำลองตามแนวทางการทำให้คลัสเตอร์แข็งแกร่งขึ้นซึ่งเป็นที่รู้จัก ได้แก่ CIS Kubernetes Benchmark, kube-score และโปรไฟล์ "จำกัด" ของมาตรฐานความปลอดภัยของ Pod และตรวจสอบแต่ละคอนเทนเนอร์เพื่อหาคำขอ/ขีดจำกัดทรัพยากรที่ขาดหายไป คอนเทนเนอร์ที่สามารถทำงานในฐานะรูทหรือในโหมดที่ได้รับสิทธิพิเศษ ไม่มีการตรวจสอบความสดและความพร้อมบนปริมาณงานที่ต้องใช้เวลานาน (Deployments, StatefulSets, DaemonSets), การติดตั้งวอลุ่มของ hostPath ที่เปิดเผยโฮสต์ ระบบไฟล์ การใช้โฮสต์เครือข่าย และอิมเมจคอนเทนเนอร์ `:ล่าสุด` หรือไม่ติดแท็กที่ไม่สามารถทำซ้ำได้ การค้นพบจะถูกจัดกลุ่มตามเอกสารและคอนเทนเนอร์ โดยมีข้อผิดพลาด/ความรุนแรงของคำเตือนที่ชัดเจน ดังนั้นคุณจึงสามารถบอกได้ว่าสิ่งใดที่มีความเสี่ยงจริงๆ จากสิ่งใดที่เป็นเพียงแนวทางปฏิบัติที่ดีที่สุด
โดยใช้งานได้กับไฟล์ Manifest เดี่ยวหรือไฟล์หลายเอกสารที่วางโดยตรงจากการเรนเดอร์เทมเพลต Helm หรือเอาต์พุต `ปรับแต่งบิวด์` เพื่อทำความเข้าใจทรัพยากร Pod, Deployment, StatefulSet, DaemonSet, Job, ReplicaSet และ CronJob เนื่องจากทุกอย่างทำงานภายในเครื่อง จึงปลอดภัยที่จะวาง Manifest ที่มีชื่อบริการภายใน การกำหนดขนาดทรัพยากรจริง หรือสิ่งอื่นใดที่คุณไม่ต้องการส่งไปยัง API ของบริษัทอื่น ซึ่งมีประโยชน์สำหรับการตรวจสอบสติก่อนคอมมิตอย่างรวดเร็ว ตัวช่วยตรวจสอบโค้ด หรือเพียงแค่เรียนรู้ว่าแท้จริงแล้ว "แข็งตัว" เป็นอย่างไรในทางปฏิบัติ