
تحليل كائنات Kubernetes مع توصيات لتحسين الموثوقية والأمان. kube-score يمنع بشكل فعال التوقف والعيوب في YAML و Charts الخاصة بـ Kubernetes. تحليل ثابت للكود لـ Kubernetes.

kube-score هي أداة تقوم بتحليل ثابت لشفرة تعريفات كائنات Kubernetes الخاصة بك.
المخرجات هي قائمة من التوصيات حول ما يمكنك تحسينه لجعل تطبيقك أكثر أماناً ومرونة.
يمكنك اختبار kube-score في المتصفح من خلال العرض التوضيحي عبر الإنترنت (المصدر).
kube-score سهلة التثبيت، وهي متاحة من المصادر التالية:
للحصول على قائمة كاملة بالفحوصات، راجع README_CHECKS.md.
NetworkPolicy، يُوصى باستخدام قواعد الإرسال والاستقبالPodDisruptionPolicy
يمكن تشغيل kube-score في بيئة CI/CD الخاصة بك وسيخرج برمز خروج 1 إذا تم العثور على خطأ حرج.
يمكن تغيير مستوى التشغيل إلى تحذير باستخدام الوسيطة --exit-one-on-warning.
يجب أن يكون الإدخال إلى kube-score جميع التطبيقات التي تنشرها في نفس namespace للحصول على أفضل نتيجة.
helm template my-app | kube-score score -
kustomize build . | kube-score score -
kube-score score my-app/*.yaml
kube-score score my-app/deployment.yaml my-app/service.yaml
kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n1 -I{} bash -c "kubectl get {} --all-namespaces -oyaml && echo ---" \
| kube-score score -
docker run -v $(pwd):/project zegl/kube-score:latest score my-app/*.yaml
Usage of kube-score:
kube-score [action] --flags
Actions:
score Checks all files in the input, and gives them a score and recommendations
list Prints a CSV list of all available score checks
version Print the version of kube-score
help Print this message
Flags for score:
--disable-ignore-checks-annotations Set to true to disable the effect of the 'kube-score/ignore' annotations
--disable-optional-checks-annotations Set to true to disable the effect of the 'kube-score/enable' annotations
--enable-optional-test strings Enable an optional test, can be set multiple times
--exit-one-on-warning Exit with code 1 in case of warnings
--help Print help
--ignore-container-cpu-limit Disables the requirement of setting a container CPU limit
--ignore-container-memory-limit Disables the requirement of setting a container memory limit
--ignore-test strings Disable a test, can be set multiple times
--kubernetes-version string Setting the kubernetes-version will affect the checks ran against the manifests. Set this to the version of Kubernetes that you're using in production for the best results. (default "v1.18")
-o, --output-format string Set to 'human', 'json', 'ci' or 'sarif'. If set to ci, kube-score will output the program in a format that is easier to parse by other programs. Sarif output allows for easier integration with CI platforms. (default "human")
--output-version string Changes the version of the --output-format. The 'json' format has version 'v2' (default) and 'v1' (deprecated, will be removed in v1.7.0). The 'human' and 'ci' formats has only version 'v1' (default). If not explicitly set, the default version for that particular output format will be used.
-v, --verbose count Enable verbose output, can be set multiple times for increased verbosity.
يمكن تجاهل الفحوصات في تشغيل البرنامج بالكامل، باستخدام العلامة --ignore-test.
يمكن أيضًا تجاهل فحص على أساس كل كائن، عن طريق إضافة التعليق التوضيحي kube-score/ignore إلى الكائن.
يجب أن تكون القيمة سلسلة مفصولة بفواصل من معرفات الفحص.
مثال:
اختبار هذا الكائن سيعطل مؤقتاً فحص service-type، الذي يحذر من استخدام خدمات من نوع NodePort.
apiVersion: v1
kind: Service
metadata:
name: node-port-service-with-ignore
namespace: foospace
annotations:
kube-score/ignore: service-type
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: NodePort
يمكن تفعيل الفحوصات الاختيارية في تشغيل البرنامج بالكامل، باستخدام العلامة --enable-optional-test.
يمكن أيضًا تفعيل فحص على أساس كل كائن، عن طريق إضافة التعليق التوضيحي kube-score/enable إلى الكائن.
يجب أن تكون القيمة سلسلة مفصولة بفواصل من معرفات الفحص.
مثال:
اختبار هذا الكائن سيفعل فحص container-seccomp-profile.
أيضاً، يتم تجاهل عدة فحوصات معرفة بواسطة kube-score/ignore في نفس الوقت.
apiVersion: apps/v1
kind: Deployment
metadata:
name: optional-test-manifest-deployment
labels:
app: optional-test-manifest
annotations:
kube-score/ignore: pod-networkpolicy,container-resources,container-image-pull-policy,container-security-context-privileged,container-security-context-user-group-id,container-security-context-readonlyrootfilesystem,container-ephemeral-storage-request-and-limit
kube-score/enable: container-seccomp-profile
spec:
replicas: 1
selector:
matchLabels:
app: optional-test-manifest
template:
metadata:
labels:
app: optional-test-manifest
spec:
containers:
- name: optional-test-manifest
image: busybox:1.34
command:
- /bin/sh
- -c
- date; env; tail -f /dev/null
kube-score يتطلب Go 1.21 أو أحدث للبناء. استنسخ هذا المستودع، ثم:
# بناء المشروع
go build ./cmd/kube-score
# تشغيل جميع الاختبارات
go test -v ./...
هل تريد المساعدة؟ ألق نظرة على إرشادات المساهمة لمزيد من المعلومات. 🤩
| المشروع | الإصدار |
|---|---|
| go.dev | ^1.21 |
| التوزيع | الأمر / الرابط |
|---|
| ملفات ثنائية مُجمَّعة مسبقاً لأنظمة macOS وLinux وWindows | إصدارات GitHub |
| Docker | docker pull zegl/kube-score (Docker Hub) |
| Homebrew (macOS وLinux) | brew install kube-score |
| Krew (macOS وLinux) | kubectl krew install score |