การวิเคราะห์แบบคงที่สำหรับ Kubernetes
Kubelinter วิเคราะห์ไฟล์ Kubernetes Yaml และชาร์ต Helm และตรวจสอบพวกเขาจากแนวทางปฏิบัติที่ดีที่สุดที่หลากหลายโดยมุ่งเน้นไปที่ความพร้อมในการผลิตและความปลอดภัย
Kubelinter เรียกใช้การตรวจสอบเริ่มต้นที่เหมาะสมออกแบบมาเพื่อให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับไฟล์ Kubernetes Yaml และแผนภูมิ Helm นี่คือการช่วยให้ทีมตรวจสอบก่อนและบ่อยครั้งสำหรับการกำหนดความปลอดภัยและการปฏิบัติที่ดีที่สุดของ DevOps ตัวอย่างทั่วไปของสิ่งเหล่านี้รวมถึงการรันคอนเทนเนอร์ในฐานะผู้ใช้ที่ไม่ใช่รูตบังคับใช้สิทธิพิเศษน้อยที่สุดและการจัดเก็บข้อมูลที่ละเอียดอ่อนเฉพาะในความลับ
Kubelinter สามารถกำหนดค่าได้ดังนั้นคุณสามารถเปิดใช้งานและปิดการใช้งานการตรวจสอบรวมถึงสร้างการตรวจสอบที่กำหนดเองของคุณเองขึ้นอยู่กับนโยบายที่คุณต้องการติดตามภายในองค์กรของคุณ
เมื่อการตรวจสอบผ้าสำลีล้มเหลว Kubelinter จะรายงานคำแนะนำสำหรับวิธีการแก้ไขปัญหาที่อาจเกิดขึ้นและส่งคืนรหัสออกที่ไม่ใช่ศูนย์
เยี่ยมชม https://docs.kubelinter.io สำหรับเอกสารรายละเอียดเกี่ยวกับการติดตั้งโดยใช้และกำหนดค่า kubelinter
Kube-linter ไบนารีสามารถพบได้ที่นี่: https://github.com/stackrox/kube-linter/releases/latest
ในการติดตั้งโดยใช้ GO ให้เรียกใช้คำสั่งต่อไปนี้:
go install golang.stackrox.io/kube-linter/cmd/kube-linter@latestมิฉะนั้นดาวน์โหลดไบนารีล่าสุดจากรุ่นและเพิ่มลงในเส้นทางของคุณ
ในการติดตั้งโดยใช้ Homebrew หรือ Linuxbrew ให้เรียกใช้คำสั่งต่อไปนี้:
brew install kube-linter nix-shell -p kube-linter
docker pull stackrox/kube-linter:latest
การติดตั้ง kubelinter จากแหล่งที่มานั้นง่ายเหมือนทำตามขั้นตอนเหล่านี้:
ก่อนอื่นให้โคลนที่เก็บ Kubelinter
git clone [email protected]:stackrox/kube-linter.git จากนั้นรวบรวมซอร์สโค้ด สิ่งนี้จะสร้างไฟล์ไบนารี kube-linter สำหรับแต่ละแพลตฟอร์มและวางไว้ในโฟลเดอร์. .gobin
make buildในที่สุดคุณก็พร้อมที่จะเริ่มใช้ Kubelinter ตรวจสอบเวอร์ชันของคุณเพื่อให้แน่ใจว่าคุณติดตั้ง Kubelinter ได้สำเร็จ
.gobin/kube-linter versionมีการทดสอบหลายชั้น แต่ละเลเยอร์คาดว่าจะผ่าน
go ทดสอบหน่วย:
make testการทดสอบการรวมแบบ end-to-end:
make e2e-test และในที่สุดการทดสอบการรวมแบบ end-to-end โดยใช้ bats-core :
make e2e-batsรูปภาพ Kubelinter ลงนามโดย Cosign เราขอแนะนำให้ตรวจสอบภาพก่อนใช้งาน
เมื่อคุณติดตั้ง COSIGN แล้วคุณสามารถใช้ Kubelinter Public Key เพื่อตรวจสอบภาพ Kubelinter ด้วย:
cat kubelinter-cosign.pub
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEl0HCkCRzYv0qH5QiazoXeXe2qwFX
DmAszeH26g1s3OSsG/focPWkN88wEKQ5eiE95v+Z2snUQPl/mjPdvqpyjA==
-----END PUBLIC KEY-----
cosign verify --key kubelinter-cosign $IMAGE_NAMEKubelinter ยังมีลายเซ็นแบบไม่มีกุญแจ
คุณสามารถตรวจสอบภาพ Kubelinter ด้วย:
# NOTE: Keyless signatures are NOT PRODUCTION ready.
COSIGN_EXPERIMENTAL=1 cosign verify $IMAGE_NAME การเรียกใช้ kubelinter เพื่อผ้าสำลี yaml ของคุณต้องการเพียงสองขั้นตอนในรูปแบบพื้นฐานที่สุด
ค้นหาไฟล์ YAML ที่คุณต้องการทดสอบเพื่อความปลอดภัยและความพร้อมในการผลิตแนวทางปฏิบัติที่ดีที่สุด:
เรียกใช้คำสั่งต่อไปนี้:
kube-linter lint /path/to/your/yaml.yaml พิจารณาตัวอย่างข้อมูลข้อมูลจำเพาะ POD ตัวอย่างต่อไปนี้ pod.yaml ไฟล์นี้มีปัญหาความพร้อมในการผลิตสองเรื่องและปัญหาด้านความปลอดภัยหนึ่งฉบับ:
ปัญหาด้านความปลอดภัย:
ความพร้อมในการผลิต:
ขีด จำกัด ของหน่วยความจำของคอนเทนเนอร์ไม่ได้ตั้งค่าซึ่งอาจอนุญาตให้ใช้หน่วยความจำมากเกินไป
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 : falseคัดลอก yaml ด้านบนไปยัง pod.yaml และผ้าลินินไฟล์นี้โดยเรียกใช้คำสั่งต่อไปนี้:
kube-linter lint pod.yamlKubelinter เรียกใช้การตรวจสอบเริ่มต้นและรายงานคำแนะนำ ด้านล่างคือผลลัพธ์จากคำสั่งก่อนหน้าของเรา
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
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้และกำหนดค่า Kubelinter โปรดไปที่หน้าเอกสาร
ต่อไปนี้เป็นบทเรียนเกี่ยวกับ Kubelinter ที่เขียนโดยผู้ใช้ หากคุณมีที่คุณต้องการเพิ่มลงในรายการนี้โปรดส่ง PR!
หากคุณต้องการมีส่วนร่วมกับชุมชน Kubelinter รวมถึงผู้ดูแลและผู้ใช้รายอื่นคุณสามารถเข้าร่วม Slack Workspace ได้ที่นี่
หากต้องการมีส่วนร่วมตรวจสอบคู่มือการสนับสนุนของเรา
เพื่อเป็นการเตือนความจำการมีส่วนร่วมทั้งหมดในชุมชน Kubelinter ถูกควบคุมโดยจรรยาบรรณของเรา
Kubelinter อยู่ในช่วงเริ่มต้นของการพัฒนา อาจมีการเปลี่ยนแปลงในอนาคตในการใช้คำสั่งธงและรูปแบบไฟล์การกำหนดค่า อย่างไรก็ตามเราขอแนะนำให้คุณใช้ Kubelinter เพื่อทดสอบสภาพแวดล้อมของคุณไฟล์ YAML ดูว่ามีการหยุดพักและมีส่วนร่วมอะไร
Kubelinter ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache 2.0
Kubelinter ทำด้วย❤โดย Stackrox
หากคุณสนใจ Kubelinter หรือในสิ่งดีๆอื่น ๆ ที่เราทำโปรดทราบว่าเรากำลังจ้าง! ตรวจสอบตำแหน่งเปิดของเรา เราชอบที่จะได้ยินจากคุณ!