تحليل ثابت ل 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/release/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 UNIT اختبارات:
make testاختبارات التكامل من طرف إلى طرف:
make e2e-test وأخيراً ، اختبارات التكامل من طرف إلى طرف باستخدام bats-core :
make e2e-batsيتم توقيع صور Kubelinter بواسطة Cosign. نوصي بالتحقق من الصورة قبل استخدامها.
بمجرد تثبيت cosign ، يمكنك استخدام مفتاح kubelinter public للتحقق من صورة kubelinter مع:
cat kubelinter-cosign.pub
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEl0HCkCRzYv0qH5QiazoXeXe2qwFX
DmAszeH26g1s3OSsG/focPWkN88wEKQ5eiE95v+Z2snUQPl/mjPdvqpyjA==
-----END PUBLIC KEY-----
cosign verify --key kubelinter-cosign $IMAGE_NAMEيوفر Kubelinter أيضًا توقيعات Cosign بدون مفتاح.
يمكنك التحقق من صورة 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 النظر في نموذج مواصفات SOD SPOD التالي 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 و pin هذا الملف عن طريق تشغيل الأمر التالي:
kube-linter lint pod.yamlتدير Kubelinter توصيات الشيكات والتقارير الافتراضية. فيما يلي الإخراج من أمرنا السابق.
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 التي كتبها المستخدمون. إذا كان لديك واحدة ترغب في إضافتها إلى هذه القائمة ، فيرجى إرسال العلاقات العامة!
إذا كنت ترغب في التعامل مع مجتمع Kubelinter ، بما في ذلك المشرفين والمستخدمين الآخرين ، يمكنك الانضمام إلى مساحة عمل Slack هنا.
للمساهمة ، تحقق من دليل المساهمة لدينا.
كتذكير ، تخضع كل المشاركة في مجتمع Kubelinter لقواعد سلوكنا.
Kubelinter في مرحلة مبكرة من التطور. قد يكون هناك تغييرات في المستقبل لاستخدام الأوامر ، وأعلام ، وتنسيقات ملفات التكوين. ومع ذلك ، فإننا نشجعك على استخدام kubelinter لاختبار ملفات Yaml البيئة الخاصة بك ، ومعرفة ما ينفجر ، والمساهمة.
تم ترخيص KubeLinter بموجب ترخيص Apache 2.0.
يتكون Kubelinter مع ❤ بواسطة Stackrox.
إذا كنت مهتمًا بـ kubelinter ، أو في أي من الأشياء الرائعة الأخرى التي نقوم بها ، فيرجى العلم أننا نواجه! تحقق من مواقفنا المفتوحة. نود أن نسمع منك!