إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تحديثات الأمان جزء أساسي من الحفاظ على أمان مجموعة AKS الخاصة بك وامتثالها لأحدث الإصلاحات لنظام التشغيل الأساسي. تتضمن هذه التحديثات إصلاحات أمان نظام التشغيل أو تحديثات النواة. بعض التحديثات تتطلب إعادة تشغيل العقدة لإكمال العملية.
توضح لك هذه المقالة كيف يمكنك أتمتة عملية تحديث عقد AKS باستخدام GitHub Actions وAzure CLI لإنشاء مهمة تحديث تعتمد cron على التشغيل التلقائي.
إشعار
يمكنك أيضا إجراء ترقيات صورة العقدة تلقائيا وجدولة هذه الترقيات باستخدام الصيانة المخططة. لمزيد من المعلومات، راجع ترقية صور العقدة تلقائيا.
قبل البدء
- تفترض هذه المقالة أن لديك مجموعة AKS موجودة. إذا كنت بحاجة إلى نظام مجموعة AKS، قم بإنشاء مجموعة باستخدام Azure CLI أو Azure PowerShell أو مدخل Microsoft Azure.
- تفترض هذه المقالة أيضا أن لديك حسابا على GitHubومستودع ملف شخصي لاستضافة إجراءاتك. إذا لم يكن لديك مستودع، أنشئ واحدا بنفس اسم اسم المستخدم الخاص بك في GitHub.
- تحتاج إلى تثبيت الإصدار 2.0.59 من Azure CLI أو إصدار أحدث وتكوينه. قم بتشغيل
az --versionللعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
تحديث العقد مع az aks upgrade
az aks upgrade الأمر يعطيك طريقة بدون توقف لتطبيق التحديثات. يقوم الأمر بتنفيذ الإجراءات التالية:
- يطبق أحدث التحديثات على جميع عقد العنقود.
- القيود (تجعل العقدة غير متاحة لجدولة الأحمال الجديدة) وتحرك حركة المرور (تنقل الأحمال الموجودة إلى عقد أخرى) إلى العقد.
- تعيد تشغيل العقد.
- يتيح للعقد المحدثة استقبال حركة المرور مرة أخرى.
AKS لا يعيد تشغيل العقد تلقائيا إذا قمت بتحديثها بطريقة مختلفة.
إشعار
التشغيل az aks upgrade مع العلم --node-image-only يرفع فقط صور العقد. تشغيل الأمر بدون العلم يطور كل من صور العقد ونسخة مستوى التحكم في Kubernetes. لمزيد من المعلومات، راجع المستندات الخاصة بالترقيات المدارة على العقدوالمستندات الخاصة بترقيات العنقود.
تعمل جميع عقد Kubernetes في آلة افتراضية Azure القياسية المبنية على ويندوز أو لينكس. تستخدم الأجهزة الافتراضية المبنية على لينكس صورة أوبونتو مع إعداد نظام التشغيل للتحقق تلقائيا من التحديثات كل ليلة.
عند استخدام الأمر az aks upgrade ، يقوم Azure CLI بإنشاء تدفق من العقد الجديدة مع أحدث تحديثات الأمان والنواة. يتم تقييد هذه العقد الجديدة في البداية لمنع جدولة أي تطبيقات لها حتى اكتمال التحديث. بعد اكتمال التحديث، يقوم Azure بإغلاق وتفريغ العقد القديمة وإلغاء العقد الجديدة، وينقل جميع التطبيقات المجدولة إلى العقد الجديدة.
هذه العملية أفضل من تحديث النواة المعتمدة على لينكس يدويا لأن لينكس يتطلب إعادة تشغيل عند تثبيت تحديث نواة جديد. إذا قمت بتحديث النظام يدويا، ستحتاج أيضا إلى إعادة تشغيل الجهاز الافتراضي، مما يؤدي إلى تقييد واستنزاف جميع التطبيقات يدويا.
إنشاء إجراء مؤقت على GitHub
cron هي أداة تتيح لك تشغيل مجموعة من الأوامر، أو الوظائف، وفق جدول آلي. لإنشاء مهمة لتحديث عقد AKS الخاصة بك على جدول آلي، تحتاج إلى مستودع لاستضافة إجراءاتك. عادة ما يتم تكوين عمليات GitHub في نفس المستودع الذي تنظمه تطبيقك، لكن يمكنك استخدام أي مستودع.
انتقل إلى مستودعك على GitHub.
حدد الإجراءات.
اختر سير عمل> جديدوقم بإعداد سير عمل بنفسك.
أنشئ إجراء على GitHub باسم Upgrade cluster node صور مع جدول زمني ينفذ كل 15 يوما الساعة 3 صباحا. انسخ الرمز التالي إلى YAML:
name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *'أنشئ مهمة باسم upgrade-node تعمل على وكيل أوبونتو وتتصل بحساب Azure CLI الخاص بك لتنفيذ أمر ترقية العقدة. انسخ الرمز التالي إلى YAML تحت المفتاح
on:jobs: upgrade-node: runs-on: ubuntu-latest
إعداد واجهة زر زر Azure في سير العمل
في شريط البحث عن الأفعال ، ابحث عن Azure Login.
اختر تسجيل الدخول إلى Azure.
تحت قسم التثبيت، اختر إصدارا، مثل v1.4.6، وانسخ مقطع رمز التثبيت.
أضف المفتاح
stepsوالمعلومات التالية من مقتطف كود التثبيت إلى YAML:name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *' jobs: upgrade-node: runs-on: ubuntu-latest steps: - name: Azure Login uses: Azure/login@v1.4.6 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
إنشاء بيانات اعتماد ل Azure CLI
في نافذة متصفح جديدة، أنشئ مدير خدمة جديد باستخدام
az ad sp create-for-rbacالأمر. تأكد من استبدال*{subscriptionID}*معرف الاشتراك الخاص بك.إشعار
هذا المثال ينشئ الدور
Contributorعند نطاق الاشتراك . يمكنك توفير الدور والنطاق الذي يلبي احتياجاتك. لمزيد من المعلومات، انظر Azure -built-in rolesومستويات نطاق Azure RBAC.az ad sp create-for-rbac --role Contributor --scopes /subscriptions/{subscriptionID} -o jsonيجب أن يكون الإخراج مشابها لإخراج المثال التالي:
{ "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "xxxxx-xxx-xxxx-xx-xx-xx-xx-xx", "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }انسخ الإخراج وانتقل إلى مستودع GitHub الخاص بك.
اختر الإعدادات>الأسرار والمتغيرات>الإجراءات> سرمستودع جديد.
بالنسبة إلى الاسم، أدخل
AZURE_CREDENTIALS.بالنسبة ل Secret، انسخ محتوى الإخراج الذي استلمته عند إنشاء أصل الخدمة.
اختر إضافة سر.
إنشاء الخطوات اللازمة لتنفيذ أوامر Azure CLI
انتقل إلى نافذتك باستخدام سير العمل YAML.
في شريط البحث عن Actions في سوق البحث ، ابحث عن Azure CLI Action.
اختر Azure CLI Action.
تحت التثبيت، اختر إصدارا، مثل v1.0.8، وانسخ مقتطف رمز التثبيت.
قم بلصق محتوى الإجراء في YAML أسفل الخطوة
*Azure Login*، مشابها للمثال التالي:name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *' jobs: upgrade-node: runs-on: ubuntu-latest steps: - name: Azure Login uses: Azure/login@v1.4.6 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Upgrade node images uses: Azure/cli@v1.0.8 with: inlineScript: az aks upgrade --resource-group <resourceGroupName> --name <aksClusterName> --node-image-only --yesTip
يمكنك فصل معلمات
--resource-groupو--nameعن الأمر عن طريق إنشاء أسرار مستودعات جديدة كما فعلت فيAZURE_CREDENTIALS.إذا أنشأت أسرار لهذه المعايير، عليك استبدال
<resourceGroupName>ال و<aksClusterName>البدائل المؤقتة بنظيراتها السرية. على سبيل المثال،${{secrets.RESOURCE_GROUP_NAME}}و${{secrets.AKS_CLUSTER_NAME}}أعد تسمية YAML إلى
upgrade-node-images.yml.اختر التزام التغييرات...، أضف رسالة التزام، ثم اختر الالتزام بالتغييرات.
تشغيل إجراء GitHub يدويا
يمكنك تشغيل سير العمل يدويا بالإضافة إلى التشغيل المجدول عن طريق إضافة مشغل جديد on يسمى workflow_dispatch.
إشعار
إذا أردت ترقية تجمع عقد واحد بدلا من جميع مجموعات العقد في العنقود، أضف المعلمة --name إلى az aks nodepool upgrade الأمر لتحديد اسم تجمع العقد. على سبيل المثال:
az aks nodepool upgrade --resource-group <resourceGroupName> --cluster-name <aksClusterName> --name <nodePoolName> --node-image-only
أضف الزناد
workflow_dispatchتحت المفتاحon:name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *' workflow_dispatch:يجب أن تبدو YAML مشابهة للمثال التالي:
name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *' workflow_dispatch: jobs: upgrade-node: runs-on: ubuntu-latest steps: - name: Azure Login uses: Azure/login@v1.4.6 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Upgrade node images uses: Azure/cli@v1.0.8 with: inlineScript: az aks upgrade -g {resourceGroupName} -n {aksClusterName} --node-image-only --yes # Code for upgrading one or more node pools
الخطوات التالية
لمزيد من المعلومات حول ترقيات AKS، راجع المقالات والموارد التالية:
للحصول على مناقشة مفصلة حول أفضل ممارسات الترقية والاعتبارات الأخرى، راجع تصحيح AKS وإرشادات الترقية.