إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
من الشائع استخدام البنى الأساسية لبرنامج ربط العمليات التجارية لإنشاء الصور وتوزيعها على أنظمة مجموعات Azure Kubernetes Service (AKS). على الرغم من كونها رائعة لإنشاء الصور، فإن هذه العملية غالبًا لا تأخذ في الحسبان الصور القديمة المتبقية، ويمكن أن تؤدي إلى تضخم الصورة على عقد نظام المجموعة. قد تحتوي هذه الصور على نقاط ضعف، مما قد يؤدي إلى حدوث مشكلات أمنية. لإزالة مخاطر الأمان في مجموعاتك، يمكنك تنظيف هذه الصور غير المستنتجة. يمكن أن يكون تنظيف الصور يدويا وقتا مكثفا. يقوم "منظف الصور" بتعريف الصور وإزالتها تلقائيا، ما يخفف من مخاطر الصور القديمة ويقلل من الوقت المطلوب لتنظيفها.
إشعار
Image Cleaner هي ميزة تستند إلى الممحاة.
في نظام مجموعة AKS، اسم الميزة واسم الخاصية هو Image Cleaner، بينما تحتوي أسماء pods منظف الصور ذات الصلة على Eraser.
المتطلبات الأساسية
- اشتراك Azure. إذا لم يكن لديك اشتراك Azure، يمكنك إنشاء حساب مجاني.
- الإصدار 2.49.0 من Azure CLI أو أحدث. شغّل
az --versionللعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
القيود
لا يدعم "منظف الصور" بعد تجمعات عقد Windows أو العقد الظاهرية ل AKS.
كيف يعمل منظف الصور
بعد تمكين Image Cleaner، سيكون هناك جراب مدير وحدة تحكم يسمى eraser-controller-manager تم نشره في مجموعتك.
باستخدام Image Cleaner، يمكنك الاختيار بين الوضع اليدوي والتلقائي وخيارات التكوين التالية:
خيارات الإعداد
| Name | الوصف | مطلوب |
|---|---|---|
--enable-image-cleaner |
تمكين ميزة Image Cleaner لنظام مجموعة AKS | نعم، ما لم يتم تحديد «تعطيل» |
--disable-image-cleaner |
تعطيل ميزة Image Cleaner لنظام مجموعة AKS | نعم، ما لم يتم تحديد «تمكين» |
--image-cleaner-interval-hours |
تحدد هذه المعلمة وقت الفاصل الزمني (بالساعات) الذي يستخدمه منظف الصور للتشغيل. القيمة الافتراضية ل Azure CLI هي أسبوع واحد، والحد الأدنى للقيمة هو 24 ساعة والحد الأقصى هو ثلاثة أشهر. | غير مطلوب ل Azure CLI، مطلوب لقالب ARM أو عملاء آخرين |
الوضع التلقائي
بمجرد eraser-controller-manager النشر، سيتم اتخاذ الخطوات التالية تلقائيا:
- يبدأ على الفور عملية التنظيف وينشئ
eraser-aks-xxxxxوحدات الجراب العاملة لكل عقدة. - هناك ثلاث حاويات في كل حاوية عاملة:
- بعد اكتمال عملية التنظيف، يتم حذف جراب العامل ويتم التنظيف المجدول التالي وفقا لما تحدده
--image-cleaner-interval-hours.
الوضع اليدوي
يمكنك تشغيل التنظيف يدويا عن طريق تعريف كائن CRD،ImageList .
eraser-contoller-manager يؤدي هذا إلى إنشاء eraser-aks-xxxxx وحدات الجراب العاملة لكل عقدة وإكمال عملية الإزالة اليدوية.
إشعار
بعد تعطيل Image Cleaner، لا يزال التكوين القديم موجودا. وهذا يعني أنه إذا قمت بتمكين الميزة مرة أخرى دون تمرير التكوين بشكل صريح، استخدام القيمة الموجودة بدلا من القيمة الافتراضية.
تمكين Image Cleaner على نظام مجموعة AKS
تمكين Image Cleaner على نظام مجموعة جديد
تمكين Image Cleaner على نظام مجموعة AKS جديد باستخدام
az aks createالأمر مع المعلمة--enable-image-cleaner.az aks create \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-image-cleaner \ --generate-ssh-keys
تمكين Image Cleaner على نظام مجموعة موجود
تمكين Image Cleaner على مجموعة AKS موجودة باستخدام
az aks updateالأمر .az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-image-cleaner
تحديث الفاصل الزمني ل Image Cleaner على نظام مجموعة جديد أو موجود
تحديث الفاصل الزمني ل Image Cleaner على نظام مجموعة AKS جديد أو موجود باستخدام المعلمة
--image-cleaner-interval-hours.# Create a new cluster with specifying the interval az aks create \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-image-cleaner \ --image-cleaner-interval-hours 48 \ --generate-ssh-keys # Update the interval on an existing cluster az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-image-cleaner \ --image-cleaner-interval-hours 48
إزالة الصور يدويا باستخدام "منظف الصور"
هام
name يجب تعيين إلى imagelist.
قم بإزالة صورة يدويا باستخدام الأمر التالي
kubectl apply. يزيلdocker.io/library/alpine:3.7.3هذا المثال الصورة إذا لم تكن مستخدمة.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
التنظيف اليدوي هو عملية لمرة واحدة ويتم تشغيله فقط عند إنشاء جديد imagelist أو إجراء تغييرات على الموجود imagelist. بعد حذف الصورة، imagelist لن يتم حذف تلقائيا.
إذا كنت بحاجة إلى تشغيل تنظيف يدوي آخر، يجب عليك إنشاء جديد imagelist أو إجراء تغييرات على تنظيف موجود. إذا كنت تريد إزالة الصورة نفسها مرة أخرى، فستحتاج إلى إنشاء جديد imagelist.
حذف ImageList موجودة وإنشاء قائمة جديدة
احذف القديم
imagelistباستخدامkubectl deleteالأمر .kubectl delete ImageList imagelistإنشاء جديد
imagelistبنفس اسم الصورة. يستخدم المثال التالي نفس الصورة مثل المثال السابق.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
تعديل قائمة صور موجودة
تعديل الموجود
imagelistباستخدامkubectl editالأمر .kubectl edit ImageList imagelist # Add a new image to the list apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: docker.io/library/python:alpine3.18
عند استخدام الوضع اليدوي، eraser-aks-xxxxx يحذف pod في غضون 10 دقائق بعد الانتهاء من العمل.
قائمة استبعاد الصور
لا تتم إزالة الصور المحددة في قائمة الاستبعاد من نظام المجموعة. يدعم Image Cleaner النظام وقوائم الاستبعاد المعرفة من قبل المستخدم. لا يتم دعم تحرير قائمة استبعاد النظام.
التحقق من قائمة استبعاد النظام
تحقق من قائمة استبعاد النظام باستخدام الأمر التالي
kubectl get.kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
إنشاء قائمة استبعاد معرفة من قبل المستخدم
إنشاء نموذج ملف JSON لاحتواء الصور المستبعدة.
cat > sample.json <<EOF {"excluded": ["excluded-image-name"]} EOFconfigmapأنشئ باستخدام نموذج ملف JSON باستخدام الأمرين التاليينkubectl createوkubectl label.kubectl create configmap excluded --from-file=sample.json --namespace=kube-system kubectl label configmap excluded eraser.sh/exclude.list=true -n kube-system
تعطيل منظف الصور
تعطيل Image Cleaner على نظام المجموعة باستخدام
az aks updateالأمر مع المعلمة--disable-image-cleaner.az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --disable-image-cleaner
الأسئلة المتداولة
كيف يمكنني التحقق من الإصدار الذي يستخدمه Image Cleaner؟
kubectl describe configmap -n kube-system eraser-manager-config | grep tag -C 3
هل يدعم "منظف الصور" الماسحات الضوئية الأخرى للثغرات الأمنية إلى جانب الماسح الضوئي الثلاثي؟
لا.
هل يمكنني تحديد مستويات الثغرات الأمنية لتنظيف الصور؟
لا. تتضمن الإعدادات الافتراضية لمستويات الثغرات الأمنية ما يلي:
-
LOW, -
MEDIUM, -
HIGHو CRITICAL
لا يمكنك تخصيص الإعدادات الافتراضية.
كيفية مراجعة الصور التي تم تنظيفها بواسطة Image Clean؟
يتم تخزين سجلات الصور في جراب eraser-aks-xxxxx العامل. عندما eraser-aks-xxxxx يكون على قيد الحياة، يمكنك تشغيل الأوامر التالية لعرض سجلات الحذف:
kubectl logs -n kube-system <worker-pod-name> -c collector
kubectl logs -n kube-system <worker-pod-name> -c trivy-scanner
kubectl logs -n kube-system <worker-pod-name> -c remover
يتم حذف الجراب eraser-aks-xxxxx في غضون 10 دقائق بعد الانتهاء من العمل. يمكنك اتباع هذه الخطوات لتمكين الوظيفة الإضافية Azure Monitor واستخدام جدول سجل حاوية Insights pod. بعد ذلك، سيتم تخزين السجلات التاريخية ويمكنك مراجعتها حتى eraser-aks-xxxxx يتم حذفها.
تأكد من تمكين Azure Monitoring على مجموعتك. للحصول على خطوات مفصلة، راجع تمكين نتائج تحليلات الحاوية على مجموعات AKS.
لا يتم تجميع سجلات الحاويات التي تعمل في
kube-systemمساحة الاسم بشكل افتراضي.kube-systemإزالة مساحة الاسم منexclude_namespacesفي configmap وتطبيق خريطة التكوين لتمكين مجموعة من هذه السجلات. راجع تكوين جمع بيانات نتائج تحليلات الحاوية للحصول على التفاصيل.احصل على معرف مورد Log Analytics باستخدام
az aks showالأمر .az aks show --resource-group myResourceGroup --name myManagedClusterبعد بضع دقائق، يقوم الأمر بإرجاع معلومات بتنسيق JSON حول الحل، بما في ذلك معرف مورد مساحة العمل:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }في مدخل Microsoft Azure، ابحث عن معرف مورد مساحة العمل، ثم حدد Logs.
انسخ أحد الاستعلامات التالية والصقها في نافذة الاستعلام.
استخدم الاستعلام التالي إذا كان نظام المجموعة الخاص بك يستخدم مخطط ContainerLogV2. إذا كنت لا تزال تستخدم
ContainerLog، يجب الترقية إلى ContainerlogV2.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourceإذا كنت تريد الاستمرار في استخدام
ContainerLog، فاستخدم الاستعلام التالي بدلا من ذلك:let startTimestamp = ago(1h); KubePodInventory | where TimeGenerated > startTimestamp | project ContainerID, PodName=Name, Namespace | where PodName startswith "eraser-aks-" and Namespace == "kube-system" | distinct ContainerID, PodName | join ( ContainerLog | where TimeGenerated > startTimestamp ) on ContainerID // at this point before the next pipe, columns from both tables are available to be "projected". Due to both // tables having a "Name" column, we assign an alias as PodName to one column which we actually want | project TimeGenerated, PodName, LogEntry, LogEntrySource | summarize by TimeGenerated, LogEntry | order by TimeGenerated desc
حدد تشغيل. تظهر أي سجلات صور محذوفة في منطقة النتائج .