مجموعة الكل في واحد من الأدوات لتشغيل linting ، والتحقق من الصحة الشائعة ، وتحليل الكود الثابت ، ومسح الأمن ، واختبارات التكوين ، والتدقيق ، وبناء kustomize ، وتكوين التشغيل الجاف لمبوض kubernetes المهيكلة. تم تصميمه لتشغيله في عملية CI (التكامل المستمر) كجزء من التحقق من الصحة والاختبار ، وخاصة مفيدة لمجموعات Kubernetes التي تتم إدارتها من خلال GITOPS.
لم أتمكن من العثور على صورة Docker واحدة تحتوي على جميع أدوات التحقق الرئيسية (التي توجد العديد منها!) للتحقق من صحة ملفات kubernetes yaml البيان كجزء من عملية CI/CD قبل نشرها تلقائيًا على Kubernetes. هذا الريبو غير مصمم لتغطية كيفية استخدام هذه الأدوات الفردية ، على الرغم من أنه يحتوي على بعض أمثلة الاستخدام الأساسية. يجب أن تقودك الروابط أدناه إلى توثيق لمزيد من التفاصيل حول استخدام كل أداة. لقد وجدنا أنه من المفيد استخدام العديد من الأدوات خلال عملية التحقق من صحة CI ومسحها لأن بعض الأدوات تتحقق من جوانب معينة لا يمكن للآخرين.
احصل على أحدث صورة من حزم GitHub أو من Docker Hub.
يمكنك تشغيل الصورة مباشرة في Docker ، أو رؤية أدناه للحصول على أمثلة استخدام CI/CD.
docker run --rm -it docker.pkg.github.com/highwayoflife/kubernetes-validation-tools/image:latest /bin/bashdocker run --rm -it deck15/kubeval-tools:latest /bin/bash| أداة | إصدار | غاية | وصف |
|---|---|---|---|
| kubectl | 1.23.5 | CLI | Kubernetes CLI. يمكن استخدامها مع- --dry-run=client للتحقق من صحة البيان |
| هيلم | 3.8.1 | CLI | يساعدك Helm على إدارة تطبيقات Kubernetes - تحديد تطبيقات Kubernetes وتثبيتها وترقيةها كرسومات هيلم. قم بتشغيل أداة التحقق من الصحة ، ويمكن تشغيلها كقالب helm lint ، أو helm template . |
| Yamllint | 1.26.3 | لينتر | linter الأساسية لملفات yaml |
| kubeval | 0.16.1 | تصديق | أداة للتحقق من صحة kubernetes يامل. لا يعمل مع CRDS. |
| kustomize | 4.5.3 | ترجمة | طريقة خالية من القالب لتخصيص تكوينات التطبيق. مفيد للتحقق من صحة التكوينات. |
| تكوين الوبر | 1.6.0 | تصديق | التحقق من صحة ملفات التكوين باستخدام القواعد المخصصة المحددة في YAML. |
| كونفست | 0.30.0 | الاختبارات | الأداة المساعدة لمساعدتك في كتابة الاختبارات مقابل بيانات التكوين المنظمة. |
| درجة كوب | 1.14.0 | حماية | الأداة التي تؤدي تحليل الكود الثابت لتعريفات كائن Kubernetes. |
| بولاريس | 5.1.0 | تصديق | يحدد أخطاء تكوين نشر Kubernetes |
| Kube Linter | 0.2.6 | حماية | أداة التحليل الثابتة والثابتة التي تتحقق من الكوبنيتات |
| Kubeconform | 0.4.13 | تصديق | يظهر Kubernetes أداة التحقق من صحة مثل Kubeval مع دعم CRD |
| kubeaudit | 0.16.0 | حماية | مجموعات التدقيق أو الملفات الواضحة لمخاوف الأمان |
| Datree | 1.0.15 | سياسة | تأكد من أن الكوبرنيتات المبينة ومخططات الدفاع صالحة ومتابعة سياساتك. |
| Kubesec | 2.11.4 | حماية | تحليل مخاطر الأمن لموارد Kubernetes |
من الناحية المثالية ، يجب استخدام حاوية أدوات التحقق من صحة Kubernetes في عملية إنشاء CI للتحقق من تكوينات Kubernetes و Lint kubernetes. من الأمثل تشغيل هذه الأدوات كجزء من سير عمل التكامل المستمر Gitops.
استخدم محدد الحاوية لتشغيل خطوة داخل حاوية. تأكد من تحديد عمليات التشغيل على أنها بيئة المضيف المناسبة للحاوية الخاصة بك (Ubuntu-Latest لحاويات Linux ، Windows-Latest لحاويات Windows). على سبيل المثال:
jobs :
container :
runs-on : ubuntu-latest
container : deck15/kubeval-tools:latest
steps :
- run : |
kubeconform -summary manifests.yaml
name: Run in container هذا المثال مفيد إذا كانت Jenkins هي وكلاء في مجموعة Kubernetes: Jenkinsfile
pipeline {
agent {
kubernetes {
cloud ' build-pipeline '
defaultContainer ' validate '
inheritFrom ' jnlp '
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: validate
image: deck15/kubeval-tools:latest
command:
- cat
tty: true
"""
} // kubernetes
} // agent
stages {
steps {
container( ' validate ' ) {
sh ' kubeconform -summary manifests.yaml '
}
}
}
}pipeline {
agent {
docker { image ' deck15/kubeval-tools:latest ' }
} // agent
.. .
}.drone.yml kind : pipeline
type : docker
name : default
steps :
- name : validate
image : deck15/kubeval-tools:latest
commands :
- kubeconform -summary manifests.yaml .circleci/config.yml version : 2.0
jobs :
build :
docker :
- image : deck15/kubeval-tools:latest .gitlab-ci.yamlيمكنك تحديد صورة تستخدم لجميع الوظائف ، وقائمة من الخدمات التي تريد استخدامها أثناء وقت التشغيل:
default :
image : deck15/kubeval-tools:latest
validate :
script :
- kubeconform -summary manifests.yaml Kubeaudit هي أداة سطر الأوامر وحزمة GO لتدقيق مجموعات Kubernetes لمختلف المخاوف الأمنية المختلفة ، مثل:
Kubeaudit يتأكد من نشر حاويات آمنة!
Kubeval هي أداة للتحقق من ملف تكوين Kubernetes Yaml أو JSON. إنها تستخدم مخططات تم إنشاؤها من مواصفات Kubernetes OpenAPI ، وبالتالي يمكنها التحقق من صحة المخططات لإصدارات متعددة من Kubernetes.
KubeConform هي أداة التحقق من صحة Kubernetes. قم بإنشائها في CI الخاص بك للتحقق من تكوين Kubernetes الخاص بك!
إنه مستوحى منه ، ويحتوي على رمز من ويصمم للبقاء بالقرب من kubeval ، ولكن مع التحسينات التالية:
التحقق من صحة ملف واحد صالح
kubeconform fixtures/valid.yaml
echo $?
0التحقق من صحة ملف واحد غير صالح ، وإعداد الإخراج إلى JSON ، وطباعة ملخص
kubeconform -summary -output json fixtures/invalid.yaml
{
" resources " : [
{
" filename " : " fixtures/invalid.yaml " ,
" kind " : " ReplicationController " ,
" version " : " v1 " ,
" status " : " INVALID " ,
" msg " : " Additional property templates is not allowed - Invalid type. Expected: [integer,null], given: string "
}
],
" summary " : {
" valid " : 0,
" invalid " : 1,
" errors " : 0,
" skipped " : 0
}
}
echo $?
1يمر التجاري عبر stdin
cat fixtures/valid.yaml | kubeconform -summary
Summary: 1 resource found parsing stdin - Valid: 1, Invalid: 0, Errors: 0 Skipped: 0التحقق من صحة مجلد ، وزيادة عدد العمال المتوازيين
kubeconform -summary -n 16 fixtures
fixtures/crd_schema.yaml - CustomResourceDefinition trainingjobs.sagemaker.aws.amazon.com failed validation: could not find schema for CustomResourceDefinition
fixtures/invalid.yaml - ReplicationController bob is invalid: Invalid type. Expected: [integer,null], given: string
[...]
Summary: 65 resources found in 34 files - Valid: 55, Invalid: 2, Errors: 8 Skipped: 0Conftest هي أداة مساعدة لمساعدتك على كتابة اختبارات مقابل بيانات التكوين المنظمة. على سبيل المثال ، يمكنك كتابة اختبارات لتكوينات Kubernetes الخاصة بك ، أو تعريفات خط أنابيب Tekton ، أو رمز Terraform ، أو تكوينات الخادم أو أي بيانات منظمة أخرى.
يعتمد Conftest على لغة Rego من وكيل السياسة المفتوحة لكتابة التأكيدات.
Yamllint هو linter لملفات YAML.
لا تتحقق Yamllint فقط من صحة بناء الجملة ، ولكن بالنسبة للغرابة مثل التكرار الرئيسي ومشاكل تجميلية مثل طول الخطوط ، والمساحات الخلفية ، والمسافة البادئة ، إلخ.
يتيح لك Kustomize تخصيص ملفات YAML RAW الخالية من القالب لأغراض متعددة ، تاركًا YAML الأصلي دون مساس وقابل للاستخدام كما هو.
أهداف kustomize kubernetes. إنه يفهم ويمكنه تصحيح كائنات API على نمط Kubernetes. إنه مثل Make ، حيث يتم الإعلان عن ما تفعله في ملف ، وهو مثل SED ، حيث ينبعث منه نص تم تحريره. يعبر kustomize من بيان Kubernetes لإضافة أو إزالة أو تحديث خيارات التكوين دون التقدم.
يعد Kustomize مفيدًا بشكل خاص لاستخدامه مع أدوات مثل ArgoCd أو FluxCD أو Spinnaker لتمكين البيان (الموارد) المشتركة عبر مجموعات أو بيئات متعددة دون تكرار رمز. يسمح Kustomize بالتجاوزات والدمج وميزات التكوين الأخرى.
KUBECTL هي نسخة KUBERNETES CLI من سكين الجيش السويسري ، ويمكن أن تفعل الكثير من الأشياء. أحد هذه الأشياء هو القدرة على إجراء التحقق من صحة الجافة على ملف YAML.
$ kubectl create --dry-run --validate -f invalid.yamlأوامر HELM لاستخدامها في CI للترتيب أو التحقق من صحة مخططات HELM.
فحص الرسم البياني للقضايا المحتملة.
ملحوظة:
helm lintفي حد ذاته غير كافٍ للتحقق من صحة مخطط هيلم بشكل كاف. يوصى باستخدامhelm templatehelm lintو Helm مع أحد أدوات التحقق من صحة البيان الأخرى. (انظر مثال أدناه)
يأخذ هذا الأمر طريقًا إلى مخطط ويدير سلسلة من الاختبارات للتحقق من أن الرسم البياني مكون جيدًا.
إذا واجه Linter أشياء من شأنها أن تتسبب في فشل التثبيت ، فسوف ينبعث منه رسائل [ERROR] . إذا واجهت مشكلات تنكسر في الاتفاقية أو التوصية ، فستنبعث منها رسائل [WARNING] .
helm lint PATH [flags]helm template ./path/to/chart | kubeconform -strict -ignore-missing-schemasConfig-Lint هي أداة سطر الأوامر للتحقق من صحة ملفات التكوين باستخدام القواعد المحددة في YAML. يمكن أن تكون ملفات التكوين واحدة من العديد من التنسيقات: Terraform ، JSON ، YAML ، بدعم من Kubernetes. هناك قواعد مدمجة مقدمة لـ Terraform ، ويمكن استخدام الملفات المخصصة لتنسيقات أخرى.
config-lint -rules example-files/rules/kubernetes.yml example-files/configKube-Score ، وهي أداة تقوم بتحليل رمز ثابت لتعريفات كائن Kubernetes الخاصة بك. الإخراج عبارة عن قائمة بتوصيات ما يمكنك تحسينه لجعل تطبيقك أكثر أمانًا ومرونة.
يمكن تشغيل Kube-Score في بيئة CI/CD الخاصة بك وسيخرج مع رمز الخروج 1 إذا تم العثور على خطأ حاسم. يمكن تغيير مستوى الزناد إلى التحذير مع حجة-واحد على الحوض.
يجب أن تكون المدخلات إلى Kube-Score هي جميع التطبيقات التي تنشرها في مساحة الاسم نفسها للحصول على أفضل نتيجة.
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يدير Polaris ، Polaris مجموعة متنوعة من الاختبارات لضمان تكوين قرون Kubernetes ووحدات التحكم باستخدام أفضل الممارسات. يتم تضمين Polaris كأداة CLI لاختبار ملفات YAML المحلية ، على سبيل المثال كجزء من عملية CI/CD.
يمكن تشغيل Polaris في أوضاع مختلفة:
يمكنك تشغيل عمليات التدقيق على سطر الأوامر ورؤية الإخراج باسم JSON أو YAML أو درجة خام:
polaris audit --format yaml > report.yaml
polaris audit --format score
# 92يمكن أن تعمل عمليات التدقيق مقابل دليل محلي أو ملف yaml بدلاً من مجموعة:
polaris audit --audit-path ./deploy/
# or to use STDIN
cat pod.yaml | polaris audit --audit-path -يمكنك أيضًا تشغيل التدقيق على مورد واحد بدلاً من المجموعة بأكملها:
polaris audit --resource " nginx-ingress/Deployment.apps/v1/default-backend " يمكنك دمج Polaris في CI/CD للمستودعات التي تحتوي على البنية التحتية. على سبيل المثال ، للفشل إذا اكتشف Polaris أي مشاكل على مستوى الخطر ، أو إذا انخفضت النتيجة إلى أقل من 90 ٪:
polaris audit --audit-path ./deploy/
--set-exit-code-on-danger
--set-exit-code-below-score 90لمزيد من خيارات الاستخدام لـ CLI ، راجع مستند الاستخدام
Kube Linter هي أداة تحليل ثابتة تتحقق من ملفات kubernetes yaml ومخططات Helm للتأكد من أن التطبيقات الممثلة فيها تلتزم بأفضل الممارسات. يقبل KubeLinter ملفات Yaml كمدخلات وتشغيل سلسلة من الاختبارات عليها. إذا وجد أي مشكلات ، فإنه يوضحها ويعيد رمز خروج غير صفري.
Datree هي أداة CLI التي يمكن استخدامها محليًا أو في CI/CD لضمان إظهار Kubernetes ، وتتبع مخططات Helm أفضل الممارسات وكذلك سياسات مؤسستك. إنه يأتي مع 30 قاعدة تم اختبارها للمعركة للاختيار من بينها ، جنبًا إلى جنب مع الدعم المدمج للتحقق من صحة مخطط Yaml و Kubernetes.
datree test my-app/ * .yaml
datree test my-app/deployment.yamlhelm datree test < CHART_DIRECTORY > Kubesec هي أداة مسح أمنية لقرون Kubernetes ، والنشرات ، و daemonsets و statefulsets.
kubesec scan manifest.yamlتقوم Kubesec بإرجاع مجموعة JSON ، ويمكنها مسح مستندات YAML متعددة في ملف إدخال واحد.
[
{
"object" : " Pod/security-context-demo.default " ,
"valid" : true ,
"message" : " Failed with a score of -30 points " ,
"score" : -30 ,
"scoring" : {
"critical" : [
{
"selector" : " containers[] .securityContext .capabilities .add == SYS_ADMIN " ,
"reason" : " CAP_SYS_ADMIN is the most privileged capability and should always be avoided " ,
"points" : -30
}
],
"advise" : [
{
"selector" : " containers[] .securityContext .runAsNonRoot == true " ,
"reason" : " Force the running image to run as a non-root user to ensure least privilege " ,
"points" : 1
},
{
// ...
}
]
}
}
]PRS مرحبًا! تحقق من الإرشادات المساهمة لمزيد من المعلومات.