إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: ✔️ AKS ✔️ Automatic Standard
توضح لك هذه المقالة كيفية استخدام ضمانات التوزيع لفرض أفضل الممارسات على مجموعة خدمة Azure Kubernetes (AKS).
نظرة عامة
تطبيق Deployment Safeguards in AKS يطبق أفضل الممارسات الخاصة ب Kubernetes في عنقود AKS الخاص بك من خلال نهج Azure controls.
توفر ضمانات النشر مستويين من التكوين:
-
Warn: يعرض رسائل تحذير في المحطة الطرفية للتعليمات البرمجية لتنبيهك بأي تكوينات نظام مجموعة غير متوافقة ولكنه لا يزال يسمح للطلب بالمرور. -
Enforce: يفرض التكوينات المتوافقة عن طريق رفض عمليات النشر وتحورها إذا لم تتبع أفضل الممارسات.
يختلف السلوك حسب وضع عنقود AKS الخاص بك:
-
AKS Automatic: تدابير النشر ومعايير أمان البودات الأساسية مفعلة افتراضيا في
Enforceالوضع. يمكنك استبعاد مساحات الأسماء، لكن لا يمكنك تحويل مستوى الحماية على مستوى العنقود إلىWarn. لمزيد من المعلومات، راجع استبعاد مساحات أسماء عبء العمل. -
معيار AKS: تدابير النشر اختيارية ويمكن تعيينها على
WarnأوEnforce.
بعد تكوين ضمانات النشر، يقوم بتقييم موارد Kubernetes الخاصة بك برمجيا عند الإنشاء أو التحديث للامتثال. تعرض ضمانات التوزيع أيضا معلومات التوافق المجمعة عبر أحمال العمل الخاصة بك على مستوى كل مورد عبر لوحة معلومات التوافق الخاصة بنهج Azure في مدخل Microsoft Azure أو في CLI أو المحطة الطرفية. تشغيل عبء عمل غير متوافق يشير إلى أن العنقود لا يتبع أفضل الممارسات وأن أحمال العمل على العنقود معرضة لخطر المشاكل الناتجة عن تكوين العنقود.
الإعدادات الافتراضية التلقائية ل AKS وخيارات AKS Standard
يلخص الجدول التالي السلوك الخاص بالنمط لضمانات النشر:
| القدرة | AKS تلقائي | معيار AKS |
|---|---|---|
| الحالة الافتراضية لحمايات النشر | ممكّن بشكل افتراضي | اختياري |
| مستوى الحماية |
Enforce بشكل افتراضي |
Warn أو Enforce |
| مستوى الضمانات التغييرية | عادة غير مدعوم (يمكنك استبعاد مساحات الأسماء، لكن لا يمكنك تغيير مستوى الحماية على مستوى العنقود إلى Warn) |
Supported |
| معايير أمان Pod الافتراضية | الخط الأساسي | Privileged |
| تعيين مستوى PSS | تم دعم استثناءات المساحات الاسمية؛ يبقى الوضع الأساسي الافتراضي | مدعوم باستخدام Basicline أو Restricted أو Privileged |
| استثناءات المساحات الاسمية | Supported | Supported |
للمقارنة العامة بين أوضاع AKS، راجع مقارنة ميزات AKS Automatic وAKS Standard.
المتطلبات الأساسية
إشعار
لا يحتاج مسؤولو نظام المجموعة إلى أذونات نهج Azure لتمكين ضمانات التوزيع أو تعطيلها. ومع ذلك، يلزم تثبيت الوظيفة الإضافية لنهج Azure.
- تحتاج إلى تمكين الوظيفة الإضافية لنهج Azure ل AKS. لمزيد من المعلومات، راجع تمكين نهج Azure على نظام مجموعة AKS. يتضمن ذلك تسجيل موفر الموارد
Microsoft.PolicyInsightsفي اشتراكك.
سياسات ضمانات النشر
يسرد الجدول التالي النهج التي تصبح نشطة وموارد Kubernetes التي تستهدفها عند تمكين ضمانات النشر. يمكنك عرض ضمانات التوزيع المتوفرة حاليا في مدخل Microsoft Azure كتعريف لنهج Azure أو في تعريفات نهج Azure المضمنة لخدمة Azure Kubernetes. الهدف من وراء هذه المجموعة هو إنشاء قائمة شائعة وعامة بأفضل الممارسات المطبقة على معظم المستخدمين وحالات الاستخدام.
| نهج حماية التوزيع | نتيجة الطفرة إذا كانت متوفرة |
|---|---|
| لا يمكن تحرير العقد الفردية | غير متوفر |
| يجب تعريف حاويات عنقود Kubernetes وطلبات موارد المعالج والذاكرة | يضبط طلبات المعالج والذاكرة الافتراضية ويفرض الحد الأدنى. لمزيد من المعلومات، راجع طلب الموارد. |
| يجب أن تحتوي على قواعد مكافحة التقارب أو topologySpreadConstraintsSet | يضيف قواعد مكافحة الألفة في المجموعات وقيود انتشار الطوبولوجيا لتحسين توزيع عبء العمل. لمزيد من المعلومات، انظر متغير انتشار مضاد الألفة والطوبولوجيا. |
| لا توجد تسميات محددة ل AKS | غير متوفر |
| يجب أن تستخدم حاويات المجموعة Kubernetes الصور المسموح بها فقط | غير متوفر |
| نظام محجوز لحمام السباحة | إزالة الصبغة CriticalAddonsOnly من تجمع عقدة مستخدم إذا لم يتم تعيينها. تستخدم AKS الصبغة CriticalAddonsOnly للحفاظ على الحاويات العميلة بعيدا عن تجمع النظام. يضمن هذا التكوين فصلا واضحا بين مكونات AKS وحجيرات العملاء ويمنع إخلاء جرابات العملاء التي لا تتسامح مع الصبغة CriticalAddonsOnly . |
| تأكد من أن حاويات نظام مجموعة بها مجسات استعداد أو حيوية تم تكوينها | غير متوفر |
| يجب أن تستخدم مجموعات Kubernetes برنامج تشغيل Container Storage Interface (CSI) StorageClass | غير متوفر |
| يجب أن تستخدم خدمات نظام مجموعة Kubernetes محددات فريدة | غير متوفر |
| يجب ألا تتضمن صور حاوية نظام مجموعة Kubernetes أحدث علامة صورة | غير متوفر |
إذا كنت ترغب في إرسال فكرة أو طلب لضمانات النشر، فافتح مشكلة في مستودع AKS GitHub وأضفها [Deployment Safeguards request] إلى بداية العنوان.
متغير طلبات الموارد
عندما يتم تعيين ضمانات النشر على Enforce المستوى، يقوم مبدل طلبات الموارد تلقائيا بتعيين طلبات المعالج والذاكرة والحدود للحاويات التي لا تعرف عليها أو قيمها أقل من الحد الأدنى.
القيم الافتراضية
عندما لا يتم تحديد موارد، يحدد المغير القيم الافتراضية التالية:
| مورد | طلب | الحد |
|---|---|---|
| CPU | 500 م | 500 م |
| الذاكرة | 2048 ميل (2Gi) | 2048 ميل (2Gi) |
الحد الأدنى من التنفيذ
عندما يتم تحديد الموارد ولكن تحت العتبات، يفرض المتحول القيم الدنيا التالية:
| مورد | الحد الأدنى للقيمة |
|---|---|
| CPU | 100 متر |
| الذاكرة | 100 ميل |
فهم وحدات الموارد
وحدات المعالج:
-
m= الكلينوير (1m= 1/1000 من نواة المعالج) -
1000m= نواة وحدة معالجة مركزية كاملة واحدة -
500m= 0.5 نوى معالج (نصف نواة) -
100m= 0.1 نوى معالج (10% من النواة)
وحدات الذاكرة:
-
Mi= ميبيبايت (ثنائي: 1 ميل = 1,024 × 1,024 بايت) -
Gi= جيبيبايت (ثنائي: 1 Gi = 1,024 ميل) 2048Mi=2Gi-
100Mi≈ 105 ميجابايت
قواعد تحولات وحدة المعالجة المركزية
يطبق المبدل المنطق التالي لموارد المعالج:
| Scenario | Action |
|---|---|
| كل من طلب وحدة المعالجة المركزية وحد المعالج مفقودان | قم بتعيين كلاهما على 500m (الافتراضي) |
طلب المعالج موجود لكنه أقل من 100m |
اضبط الطلب على 100m (الحد الأدنى) |
حد وحدة المعالجة المركزية موجود لكنه أقل من 100m |
اضبط الحد إلى 100m (الحد الأدنى) |
| فقط طلب المعالج الموجود | طلب التعيين يساوي الحد |
| يوجد حد وحدة المعالجة المركزية فقط | طلب التعيين يساوي الحد |
قواعد طفرات الذاكرة
يطبق المتحول المنطق التالي لموارد الذاكرة:
| Scenario | Action |
|---|---|
| كل من طلب الذاكرة والحد مفقودان | قم بتعيين كلاهما على 2048Mi (الافتراضي) |
طلب الذاكرة موجود لكنه أقل من 100Mi |
اضبط الطلب على 100Mi (الحد الأدنى) |
حد الذاكرة موجود لكنه أقل من 100Mi |
اضبط الحد إلى 100Mi (الحد الأدنى) |
| طلب الذاكرة فقط هو الموجود | ترك as-is (لا يوجد حد مضاف) |
| يوجد فقط حد للذاكرة | as-is المغادرة (لم يضف طلب) |
إصلاح فئة جودة الخدمة (QoS) من Kubernetes
بعد تطبيق طفرات المعالج والذاكرة، إذا تجاوزت قيمة الطلب الحد لنفس نوع المورد، يقوم المتحول بتحديد الحد الأقصى للطلب ليطابق الحد. يحافظ هذا الإصلاح على تكوينات فئة جودة الخدمة (QoS) الصالحة لكوبيرنيتس.
الحالات التي تتعرض للطفرات
يطبق مبدل طلبات الموارد التغييرات في السيناريوهات التالية:
-
الموارد الفارغة: الحاويات التي لا تتطلب طلبات أو حدود للمعالج أو الذاكرة تتلقى القيم الافتراضية (
500mالمعالج،2048Miالذاكرة). -
أقل من الحد الأدنى: طلبات وحدة المعالجة المركزية أو الحدود التي تقل
100mإلى100m. طلبات أو حدود الذاكرة أدناه100Miتزداد إلى100Mi. - سيناريوهات جودة الخدمة غير الصالحة: عندما تتجاوز الطلبات الحدود، يتم خفض الطلبات لتطابق الحدود.
- مواصفات المورد الجزئي: الحاويات التي لديها طلبات فقط أو حدود (وليس كلاهما) يتم فرض الحد الأدنى حيث تم تحديدها.
- الحاويات المتعددة: جميع الحاويات في الوحدة تتم معالجتها وتحويرها بشكل مناسب.
- مساحات الأسماء الفعالة: فقط أحمال العمل في المساحات الاسمية التي يتم تفعيل الحماية يتم تحوليها.
الحالات غير المتحورة
متغير طلبات الموارد لا يطبق تغييرات في السيناريوهات التالية:
- المساحات الأسماء المستبعدة: تبقى أعباء العمل في المساحات الاسمية التي يتم استبعاد فيها الحماية دون تغيير.
- الموارد المتوافقة بالفعل: الحاويات التي لديها طلبات وحدود تتجاوز الحد الأدنى تظل دون تغيير.
- تكوينات جودة الخدمة الصالحة: عندما تكون الطلبات أقل من أو تساوي الحدود وتكون القيمتان فوق الحد الأدنى، لا تحدث أي تغييرات.
متغير انتشار مضاد الألفة والطوبولوجيا
عندما يتم تعيين ضمانات النشر على Enforce المستوى، يضيف متغير انتشار مضاد الألفة والتوبولوجيا تلقائيا قواعد مكافحة الألفة وقيود انتشار الطوبولوجيا لتحسين توزيع عبء العمل عبر العقد.
عندما يعمل الطفرة
يعمل المتحول فقط عندما تتحقق جميع الشروط التالية:
- كل من قيود مكافحة الألفة في المجموعات وقيود انتشار الطوبولوجيا ليست موجودة بالفعل على عبء العمل.
- مساحة الأسماء ليست مستثنية من ضمانات النشر.
- إجراءات النشر في
Enforceوضع التشغيل. - عبء العمل لا يحمل العلامة
kubernetes.azure.com/managedby=aks.
ما الذي يضيفه المتحول
تحديد العلامة: يحدد المتحول الكبسولات باستخدام أولوية التسمية التالية:
-
appالعلامة (الأولوية الأولى) -
app.kubernetes.io/nameالعلامة (الأولوية الثانية) - إنشاء
default-antiaffinity-applabel=<workload-name>تسمية (خطة احتياطية)
مكافحة الألفة في الكبساطة: تضيف قاعدة مفضلة لمكافحة الألفة في الكبسولات بوزن 100 تفضل جدولة الكبسولات بملصقات متطابقة على عقد مختلفة. يستخدم مفتاح kubernetes.io/hostnameالطوبولوجيا .
قيود انتشار الطوبولوجيا: تضيف قيدا مع الإعدادات التالية:
| اعداد | Value |
|---|---|
| ماكس سكيو | 1 (يسمح بأقصى فرق بمقدار وحدة واحدة لكل عقدة) |
| عندما يكون غير قابل للرضا | ScheduleAnyway (أفضل جهد، لا يمنع الجدولة) |
| مفتاح الطوبولوجيا | kubernetes.io/hostname |
الحالات التي تتعرض للطفرات
يطبق متغير انتشار الألفة والطوبولوجيا التغييرات في السيناريوهات التالية:
-
أعباء العمل مع
appالتسمية: تستخدمappقيمة التسمية لمحددات انتشار الأنفة والطوبولوجيا. -
أعباء العمل مع
app.kubernetes.io/nameالتسمية: عندما لاappيوجد تسمية، يستخدم هذا التسمية كمحددات. - أعباء العمل بدون تسميات تطبيق: تنشئ تسمية افتراضية باستخدام اسم عبء العمل وتضيف قواعد انتشار مضادة للتوافق وطوبولوجيا.
- أحمال عمل نظيفة: تتلقى الأحمال التي لا تحتوي على قيود انتشار التوافق أو الطوبولوجيا كلا التكوينين.
- الألفة الجزئية: الأحمال التي تحتوي على ألفة عقدة موجودة (ولكن بدون مضاد ألفة للكبساطة) تتلقى قواعد انتشار مضادة للقرون وانتشار الطوبولوجيا.
- المساحات الاسمية الفعالة: تحدث الطفرات فقط في المساحات الاسمية التي يكون فيها الضمان مفعلا.
الحالات غير المتحورة
متغير انتشار التوافق المضاد للألفة والطوبولوجيا لا يطبق تغييرات في السيناريوهات التالية:
- قيود انتشار الطوبولوجيا الموجودة: يتم تخطي الأحمال التي تحتوي بالفعل على أي قيود انتشار للطوبولوجيا بالكامل.
- مقاومة الألفة الحالية للكبسولات: يتم تخطي أعباء العمل التي تحتوي على قواعد مكافحة الألفة المطلوبة أو المفضلة للمجموعات بالكامل.
- المساحات الأسماء المستبعدة: تبقى أعباء العمل في المساحات الاسمية التي يتم استبعاد فيها الحماية دون تغيير.
- أعباء العمل بدون أسماء أو تسميات معروفة: الحالات الطرفية التي لا يمكن تحديد اسم تطبيق فيها يتم تخطيها بشكل أنيق.
رسائل أخطاء حماية النشر
يصف هذا القسم رسائل الخطأ التي قد تواجهها عندما يكتشف برنامج Deployment Safeguards إعدادات غير متوافقة، مع الحلول الموصى بها.
رسائل خطأ الحماية العامة
الجدول التالي يسرد رسائل الخطأ لسياسات حماية النشر العامة:
| Policy | رسالة الخطأ | ضبط |
|---|---|---|
| المجسات القوية | Container <container_name> in your Pod <pod_name> has no livenessProbe. Required probes: readinessProbe, livenessProbe |
أضف مجسات حيوية وجاهزية لكل حاوية. |
| لا توجد صورة "أحدث" | Please specify an explicit, versioned image tag such as '1.0' for container %v. Using explicit version tags is a best practice to ensure reproducibility, prevent unintended updates, and facilitate easier debugging and rollbacks. Avoid using the 'latest' tag because it can change over time without notice. |
استخدم علامة صورة صريحة غير latest أو فارغة. على سبيل المثال، nginx غير مسموح، لكنه nginx:v1.0.0 مسموح. |
| تطبيق برنامج CSI Driver |
Storage class <class_name> use intree provisioner kubernetes.io/azure-file is not allowed أو Storage class <class_name> use intree provisioner kubernetes.io/azure-disk is not allowed |
استخدم disk.csi.azure.com أو file.csi.azure.com بدلا من ذلك. لمزيد من المعلومات، راجع سائقي CSI على AKS. |
| طلبات الموارد | container <container_name> has no resource requests |
أضف طلبات المعالج والذاكرة إلى الحاوية. |
| قواعد مكافحة الألفة | Deployment with 2 replicas should have either podAntiAffinity or topologySpreadConstraints set to avoid disruptions due to nodes crashing |
حدد podAntiAffinity أو topologySpreadConstraints على عبء العمل. |
| العلامات المقيدة | Label kubernetes.azure.com is reserved for AKS use only |
أزل الملصق من عبء عملك. |
| تعديلات العقد المقيدة | Tainting or labeling individual nodes is not recommended. Please use Azure CLI to taint/label node pools instead |
استخدم واجهة Azure CLI لتلوث أو تصنيف مجموعات العقد بدلا من العقد الفردية. |
| التلوث المقيد | Taint with key CriticalAddonsOnly is reserved for the system pool only |
لا تلوث مجموعة عقد المستخدم ب CriticalAddonsOnly. |
رسائل خطأ معايير أمان البودات
إشعار
يتم الآن تشغيل معايير أمان Pod الأساسية افتراضيا في AKS Automatic. لا يمكن إيقاف معايير أمان البودات الأساسية في AKS Automatic بشكل صحيح.
تدعم ضمانات النشر أيضا القدرة على تفعيل معايير أمان البودات الأساسية، المقيدة، والمميزة. لضمان نشر أحمال العمل بنجاح، تأكد من أن كل بيان يتوافق مع متطلبات أمان البودرة الأساسية أو المقيدة. افتراضيا، يستخدم Azure Kubernetes Service معايير أمان Privileged Pod.
| Policy | رسالة الخطأ | ضبط |
|---|---|---|
| AppArmor |
AppArmor annotation values must be undefined/nil, runtime/default, or localhost/* أو AppArmor profile type must be one of: undefined/nil, RuntimeDefault, or Localhost |
قم بإزالة أي مواصفات ل AppArmor. كوبيرنتيز يطبق إعدادات AppArmor بشكل افتراضي. على المضيفين المدعومين، يتم تطبيق ملف تعريف AppArmor في وقت التشغيل بشكل افتراضي. |
| مساحات أسماء المضيف |
Host network namespaces are disallowed: spec.hostNetwork is set to true أو Host PID namespaces are disallowed: spec.hostPID is set to true أو Host IPC namespaces are disallowed: spec.hostIPC is set to true |
قم بتعيين تلك القيم إلى false، أو قم بإزالة تحديد الحقول. |
| الحاويات المميزة | Privileged [ephemeral\|init\|N/A] containers are disallowed: spec.containers[*].securityContext.privileged is set to true |
قم بتعيين الحقل المناسب securityContext.privileged على false، أو قم بإزالة الحقل. |
| Capabilities | تبدأ الرسالة ب Disallowed capabilities detected |
قم بإزالة الإمكانية المعروضة من بيان الحاوية. |
| مجلدات HostPath | HostPath volumes are forbidden under restricted security policy unless containers mounting them are from allowed images |
قم بإزالة حجم الصوت وتركيب الصوت في HostPath. |
| المنافذ المضيفة | HostPorts are forbidden under baseline security policy |
قم بإزالة مواصفات منفذ المضيف من الحاوية المخالفة. |
| SELinux | SELinux type must be one of: undefined/empty, container_t, container_init_t, container_kvm_t, or container_engine_t |
اضبط حقل الحاوية securityContext.seLinuxOptions.type على إحدى القيم المسموح بها. |
| /proc نوع جبل | ProcMount must be undefined/nil or 'Default' in spec.containers[*].securityContext.procMount |
قم بضبطه spec.containers[*].securityContext.procMountDefault أو اتركه غير محدد. |
| سيكومب | Seccomp profile must not be explicitly set to Unconfined. Allowed values are: undefined/nil, RuntimeDefault, or Localhost |
قم بتعيين securityContext.seccompProfile.type الجراب أو الحاويات على إحدى القيم المسموح بها. |
| Sysctls | Disallowed sysctl detected. Only baseline Kubernetes pod security standard sysctls are permitted |
قم بإزالة أنظمة النظام المحظورة. للقائمة المحددة، راجع مواصفة معايير الأمان في وحدات Kubernetes. |
| أنواع الأحجام (محدودة فقط على PSS) | Only the following volume types are allowed under restricted policy: configMap, csi, downwardAPI, emptyDir, ephemeral, persistentVolumeClaim, projected, secret |
قم بإزالة أي مجلدات ليست من الأنواع المسموح بها. |
| تصعيد الامتيازات (مقيد فقط في PSS) | Privilege escalation must be set to false under restricted policy |
قم بتعيين spec.containers[*].securityContext.allowPrivilegeEscalation لكل false حاوية، initContainer، و ephemeralContainer. |
| التشغيل كغير جذر (محدود فقط ب PSS) | Containers must not run as root user in spec.containers[*].securityContext.runAsNonRoot |
قم بتعيين spec.containers[*].securityContext.runAsNonRoot لكل true حاوية، initContainer، و ephemeralContainer. |
| تشغيله كمستخدم غير جذر (مقيد فقط ب PSS) | Containers must not run as root user: spec.securityContext.runAsUser is set to 0 |
قم بتعيينه securityContext.runAsUser على قيمة غير صفرية، أو اتركه غير معرف لمستوى الوحدة وكل حاوية وinitContainer وephemeralContainer. |
| Seccomp (مقيد فقط على PSS) | Seccomp profile must be "RuntimeDefault" or "Localhost" under restricted policy |
قم بتعيين securityContext.seccompProfile.type الجراب أو الحاويات على إحدى القيم المسموح بها. يختلف هذا عن الأساس لأن السياسة المقيدة لا تسمح بقيمة غير معرفة. |
| القدرات (محدودة فقط على PSS) |
All containers must drop ALL capabilities under restricted policy أو Only NET_BIND_SERVICE may be added to capabilities under restricted policy |
يجب أن تسقط ALL جميع الحاويات قدرات ويسمح لها فقط بإضافة NET_BIND_SERVICE. |
تمكين ضمانات النشر
إشعار
يعني استخدام مستوى ضمانات Enforce النشر أنك تختار عمليات النشر التي يتم حظرها وتغييرها. فكر في كيفية عمل هذه السياسات مع مجموعة AKS الخاصة بك قبل تفعيل Enforce.
تمكين ضمانات النشر على نظام مجموعة موجود
قم بتمكين ضمانات التوزيع على نظام مجموعة موجود تم تمكين الوظيفة الإضافية لنهج Azure باستخدام az aks safeguard create الأمر مع العلامة --level . إذا كنت ترغب في تلقي تحذيرات بعدم التوافق، فقم بتعيين --level إلى Warn. إذا كنت تريد رفض أو تغيير كافة عمليات النشر غير المتوافقة، فقم بتعيينها إلى Enforce.
az aks safeguards create --resource-group <resource-group-name> --name <cluster-name> --level Enforce
يمكنك أيضا تمكين ضمانات النشر باستخدام --cluster العلامة وتحديد معرف مورد نظام المجموعة.
az aks safeguards create --cluster <ID> --level Enforce
إذا كنت ترغب في تحديث مستوى ضمانات النشر لنظام مجموعة موجود، فقم بتشغيل الأمر التالي بالقيمة الجديدة ل --level.
az aks safeguards update --resource-group <resource-group-name> --name <cluster-name> --level Warn
باستثناء مساحات الأسماء
يمكنك أيضا استبعاد بعض المساحات الاسمية من معايير حماية النشر ومعايير أمان الكبسولة. عند استبعاد مساحة اسم، لا يتأثر النشاط في مساحة الاسم هذه بتحذيرات ضمانات النشر أو إنفاذها.
إشعار
في مجموعات AKS التلقائية، يمكنك استبعاد المساحات الاسمية من معايير حماية النشر ومعايير أمان البود، لكن لا يمكنك تغيير الوضع من Enforce إلى Warn. يضمن هذا القيد استمرار تطبيق أفضل الممارسات على المجموعات التلقائية.
على سبيل المثال، لاستبعاد مساحات ns1 الأسماء و ns2، استخدم قائمة مفصولة بمساحات الأسماء مع العلم --excluded-ns ، كما هو موضح في المثال التالي:
az aks safeguards update --resource-group <resource-group-name> --name <cluster-name> --level Enforce --excluded-ns ns1 ns2
تشغيل معايير أمان البودات
إشعار
في مجموعات AKS Standard، معايير أمان البودات تكون افتراضية على المستوى نفسه Privileged ، وهذا لا يفرض أي قيود. لتطبيق معايير أمان البود، استخدم العلم --pss-level لضبط المستوى على Baseline أو Restricted. للعودة إلى الوضع الافتراضي، قم بتعيين --pss-level على Privileged.
في مجموعات AKS التلقائية، معايير أمان Pod تكون افتراضية على المستوى المطلوب Baseline .
az aks safeguards update --resource-group <resource-group-name> --name <cluster-name> --level Warn --pss-level <Baseline|Restricted|Privileged>
قم بتحديث إصدار حماية النشر الخاص بك
تلتزم ضمانات النشر بنظام تعيين إصدار الملحق AKS. كل إصدار جديد من حماية النشر سيتم إصداره كنسخة ثانوية جديدة في AKS. سيتم إرسال هذه التحديثات من خلال ملاحظات إصدار AKS GitHub وتنعكس في جدول "سياسات ضمانات النشر" في وثائقنا.
لمعرفة المزيد حول تعيين إصدار AKS والوظائف الإضافية، ارجع إلى الوثائق التالية: aks-component-versionsوaks-versioning-for-addons.
التحقق من التوافق عبر المجموعات
بعد نشر بيان Kubernetes الخاص بك، سترى تحذيرات أو رسالة رفض محتملة في واجهة سطر الأوامر (CLI) أو المحطة الطرفية إذا كانت المجموعة غير متوافقة مع ضمانات النشر، كما هو موضح في الأمثلة التالية:
تحذير
$ kubectl apply -f deployment.yaml
Warning: [azurepolicy-k8sazurev1antiaffinityrules-ceffa082711831ebffd1] Deployment with 2 replicas should have either podAntiAffinity or topologySpreadConstraints set to avoid disruptions due to nodes crashing
deployment.apps/simple-web created
فرض
مع طفرات حماية النشر، يقوم المستوى Enforce بتغيير موارد Kubernetes الخاصة بك عند الحاجة. ومع ذلك، لا تزال موارد Kubernetes الخاصة بك بحاجة إلى تمرير جميع الضمانات للنشر بنجاح. إذا فشلت أي نهج حماية، يتم رفض المورد الخاص بك ولن يتم نشره.
$ kubectl apply -f deployment.yaml
Error from server (Forbidden): error when creating "deployment.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [azurepolicy-k8sazurev1antiaffinityrules-ceffa082711831ebffd1] Deployment with 2 replicas should have either podAntiAffinity or topologySpreadConstraints set to avoid disruptions due to nodes crashing
إذا كانت موارد Kubernetes الخاصة بك تلبي ضمانات الطفرات المعمول بها واستوفيت جميع متطلبات الحماية الأخرى، نشرها بنجاح، كما هو موضح في المثال التالي:
$ kubectl apply -f deployment.yaml
deployment.apps/simple-web created
التحقق من التوافق عبر المجموعات باستخدام لوحة معلومات نهج Azure
للتحقق من تطبيق ضمانات التوزيع وللتحقق من توافق نظام المجموعة الخاص بك، انتقل إلى صفحة مدخل Microsoft Azure لنظام المجموعة الخاص بك وحدد النهج، ثم حدد الانتقال إلى نهج Azure.
من قائمة السياسات والمبادرات، حدد المبادرة المقترنة بضمانات النشر. ترى لوحة معلومات تعرض حالة التوافق عبر نظام مجموعة AKS.
إشعار
لتقييم التوافق بشكل صحيح عبر مجموعة AKS الخاصة بك، يجب تحديد نطاق مبادرة نهج Azure إلى مجموعة موارد نظام المجموعة.
تعطيل ضمانات النشر
لتعطيل ضمانات النشر على نظام المجموعة الخاص بك، استخدم الأمر delete .
az aks safeguards delete --resource-group <resource-group-name> --name <cluster-name>
الأسئلة المتداولة
هل يمكنني إنشاء الطفرات الخاصة بي؟
لا. إذا كانت لديك فكرة عن الحماية، فافتح مشكلة في مستودع AKS GitHub وأضف [Deployment Safeguards request] إلى بداية العنوان.
هل يمكنني اختيار واختيار الطفرات التي أريدها في الإنفاذ؟
لا. ضمانات النشر هي كل شيء أو لا شيء. بمجرد تفعيل تحذير أو تطبيق النظام، تصبح جميع إجراءات الحماية نشطة.
لماذا تم قبول مورد النشر الخاص بي على الرغم من أنه لم يكن يتبع أفضل الممارسات؟
تفرض ضمانات التوزيع معايير أفضل الممارسات من خلال عناصر تحكم نهج Azure ولديها نهج يتم التحقق من صحتها مقابل موارد Kubernetes. لتقييم مكونات نظام المجموعة وفرضها، يقوم نهج Azure بتوسيع Gatekeeper. كما يعمل تطبيق Gatekeeper حاليا في نموذجfail-open. وبما أنه لا يوجد ضمان بأن Gatekeeper سيستجيب لمكالمتنا الشبكية، نتأكد من أنه في هذه الحالة يتم تخطي التحقق حتى لا يمنع الرفض عمليات النشر الخاصة بك.
لمعرفة المزيد، راجع التحقق من صحة حمل العمل في Gatekeeper.
المحتوى ذو الصلة
- تعرف على المزيد حول أفضل الممارسات لتشغيل نظام مجموعة AKS.
- ما هو AKS Automatic؟