KubernetesManifest@0 - التوزيع إلى مهمة Kubernetes v0

استخدم مهمة بيان Kubernetes في البنية الأساسية لبرنامج ربط العمليات التجارية للبناء أو الإصدار لخبز البيانات ونشرها في مجموعات Kubernetes باستخدام مخططات Helm.

بناء الجملة

# Deploy to Kubernetes v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection. 
    #namespace: # string. Namespace. 
    #strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
    #trafficSplitMethod: 'pod' # 'pod' | 'smi'. Optional. Use when strategy = canary. Traffic split method. Default: pod.
    #percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
    #baselineAndCanaryReplicas: '1' # string. Required when strategy = Canary && action = deploy && trafficSplitMethod = SMI. Baseline and canary replicas. Default: 1.
    #manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests. 
    #containers: # string. Optional. Use when action = deploy || action = promote || action = bake. Containers. 
    #imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets. 
    #renderType: 'helm' # 'helm' | 'kompose' | 'kustomize'. Optional. Use when action = bake. Render Engine. Default: helm.
    #dockerComposeFile: # string. Required when action = bake && renderType = kompose. Path to docker compose file. 
    #helmChart: # string. Required when action = bake && renderType = helm. Helm Chart. 
    #releaseName: # string. Optional. Use when action = bake && renderType = helm. Helm Release Name. 
    #overrideFiles: # string. Optional. Use when action = bake && renderType = helm. Override Files. 
    #overrides: # string. Optional. Use when action = bake && renderType = helm. Overrides. 
    #kustomizationPath: # string. Optional. Use when action = bake && renderType = kustomize. Kustomization Path. 
    #resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
    #resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path. 
    #kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind. 
    #name: # string. Required when action = scale || resourceToPatch = name. Name. 
    #replicas: # string. Required when action = scale. Replica count. 
    #mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
    #arguments: # string. Optional. Use when action = delete. Arguments. 
    #patch: # string. Required when action = patch. Patch. 
    #secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
    #secretName: # string. Optional. Use when action = createSecret. Secret name. 
    #secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments. 
    #dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection. 
    #rolloutStatusTimeout: '0' # string. Optional. Use when action = deploy || action = patch || action = scale || action = promote. Timeout for rollout status. Default: 0.
# Deploy Kubernetes manifests v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection. 
    #namespace: 'default' # string. Required when action != bake. Namespace. Default: default.
    #strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
    #percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
    #manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests. 
    #containers: # string. Optional. Use when action = deploy || action = promote. Containers. 
    #imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets. 
    #renderType: 'helm2' # 'helm2'. Optional. Use when action = bake. Render Engine. Default: helm2.
    #helmChart: # string. Required when action = bake && renderType = helm2. Helm Chart. 
    #releaseName: # string. Optional. Use when action = bake && renderType = helm2. Helm Release Name. 
    #overrideFiles: # string. Optional. Use when action = bake && renderType = helm2. Override Files. 
    #overrides: # string. Optional. Use when action = bake && renderType = helm2. Overrides. 
    #resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
    #resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path. 
    #kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind. 
    #name: # string. Required when action = scale || resourceToPatch = name. Name. 
    #replicas: # string. Required when action = scale. Replica count. 
    #mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
    #arguments: # string. Optional. Use when action = delete. Arguments. 
    #patch: # string. Required when action = patch. Patch. 
    #secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
    #secretName: # string. Optional. Use when action = createSecret. Secret name. 
    #secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments. 
    #dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection.

الإدخالات

action - العمل
string. القيم المسموح بها: bake، (إنشاء بيانات سرية)، delete، deploy، promotepatch، ، . rejectscalecreateSecret القيمة الافتراضية: deploy.

يحدد الإجراء الذي سيتم تنفيذه.


kubernetesServiceConnection - اتصال خدمة Kubernetes
string. مطلوب عند action != bake.

يحدد اتصال خدمة Kubernetes.


namespace - مساحه الاسم
string.

يحدد مساحة الاسم للأوامر باستخدام العلامة –namespace . إذا لم يتم توفير مساحة الاسم، فسيتم تشغيل الأوامر في مساحة الاسم الافتراضية.


namespace - مساحه الاسم
string. مطلوب عند action != bake. القيمة الافتراضية: default.

يحدد مساحة الاسم للأوامر باستخدام العلامة –namespace . إذا لم يتم توفير مساحة الاسم، فسيتم تشغيل الأوامر في مساحة الاسم الافتراضية.


strategy - استراتيجيه
string. ‏‏اختياري. استخدم عندما action = deploy || action = promote || action = reject. القيم المسموح بها: canary، . none القيمة الافتراضية: none.

تحديد استراتيجية التوزيع المستخدمة في deploy الإجراء قبل promote إجراء أو reject إجراء. حاليا، canary هي استراتيجية التوزيع المقبولة الوحيدة.


trafficSplitMethod - أسلوب تقسيم نسبة استخدام الشبكة
string. ‏‏اختياري. استخدم عندما strategy = canary. القيم المسموح بها: pod، . smi القيمة الافتراضية: pod.

بالنسبة للقيمة smi، يتم تقسيم نسبة استخدام الشبكة على مستوى الطلب باستخدام شبكة خدمة. يجب إعداد شبكة خدمة بواسطة مسؤول نظام المجموعة. تعالج هذه المهمة تنسيق عناصر SMI TrafficSplit .

بالنسبة للقيمة pod، لا يمكن تقسيم النسبة المئوية على مستوى الطلب في حالة عدم وجود شبكة خدمة. بدلا من ذلك، يتم استخدام إدخال النسبة المئوية لحساب النسخ المتماثلة للأساس والكناري. الحساب هو نسبة مئوية من النسخ المتماثلة المحددة في بيانات الإدخال للمتغير الثابت.


percentage - النسبه المئويه
string. مطلوب عند strategy = Canary && action = deploy. القيمة الافتراضية: 0.

النسبة المئوية المستخدمة لحساب عدد النسخ المتماثلة للمتغير الأساسي والمتغير الكناري لأحمال العمل المضمنة في ملفات البيان.

بالنسبة لإدخال النسبة المئوية المحددة، احسب:

(النسبة المئوية × عدد النسخ المتماثلة) / 100

إذا لم تكن النتيجة عددا صحيحا، يتم استخدام الأرضية الرياضية للنتيجة عند إنشاء متغيرات الأساس والكناري.

على سبيل المثال، افترض أن التوزيع hello-world موجود في ملف بيان الإدخال وأن الأسطر التالية موجودة في إدخال المهمة:

replicas: 4
strategy: canary
percentage: 25

في هذه الحالة، يتم إنشاء عمليات hello-world-baseline التوزيع و hello-world-canary بنسخة متماثلة واحدة لكل منها. يتم إنشاء متغير الأساس بنفس الصورة والعلامة مثل الإصدار الثابت، وهو المتغير المكون من أربع نسخ متماثلة قبل التوزيع. يتم إنشاء متغير الكناري مع الصورة والعلامة المقابلة للتغييرات المنشورة حديثا.


baselineAndCanaryReplicas - النسخ المتماثلة الأساسية والكنارية
string. مطلوب عند strategy = Canary && action = deploy && trafficSplitMethod = SMI. القيمة الافتراضية: 1.

عند التعيين trafficSplitMethod إلى smi، يتم التحكم في تقسيم نسبة استخدام الشبكة في مستوى شبكة الخدمة. يمكنك التحكم في العدد الفعلي للنسخ المتماثلة للمتغيرات الكنارية والأساسية بشكل مستقل عن تقسيم نسبة استخدام الشبكة.

على سبيل المثال، افترض أن بيان توزيع الإدخال يحدد 30 نسخة متماثلة للمتغير الثابت. افترض أيضا أنك تحدد الإدخال التالي للمهمة:

strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1

في هذه الحالة، يتلقى المتغير الثابت 80٪ من نسبة استخدام الشبكة، بينما يتلقى كل من المتغيرات الأساسية والكنارية نصف 20٪. لا تتلقى المتغيرات الأساسية والكنارية ثلاث نسخ متماثلة لكل منهما. بدلا من ذلك، يتلقون العدد المحدد من النسخ المتماثلة، ما يعني أن كل منها يتلقى نسخة متماثلة واحدة.


manifests - بيانات
string. مطلوب عند action = deploy || action = promote || action = reject.

يحدد المسار إلى ملفات البيان التي سيتم استخدامها للتوزيع. يمثل كل سطر مسارا واحدا. نمط مطابقة الملفات هو قيمة مقبولة لكل سطر.


containers - الحاويات
string. ‏‏اختياري. استخدم عندما action = deploy || action = promote || action = bake.

يحدد عنوان URL للمورد المؤهل بالكامل للصورة لاستخدامها في الاستبدالات على ملفات البيان. عنوان URL contosodemo.azurecr.io/helloworld:test مثال على ذلك.


containers - الحاويات
string. ‏‏اختياري. استخدم عندما action = deploy || action = promote.

يحدد عنوان URL المؤهل بالكامل للصورة لاستخدامه في الاستبدالات على ملفات البيان. يقبل هذا الإدخال مواصفات استبدالات البيانات الاصطناعية المتعددة في نموذج مفصول بخطوط جديدة. وفيما يلي مثال على ذلك:

containers: |
  contosodemo.azurecr.io/foo:test1
  contosodemo.azurecr.io/bar:test2

في هذا المثال، يتم البحث عن جميع المراجع إلى contosodemo.azurecr.io/foo و contosodemo.azurecr.io/bar في حقل الصورة لملفات بيان الإدخال. لكل تطابق تم العثور عليه، العلامة test1 أو test2 استبدال المرجع المطابق.


imagePullSecrets - ImagePullSecrets
string. ‏‏اختياري. استخدم عندما action = deploy || action = promote.

يحدد إدخالا متعدد الأسطر حيث يحتوي كل سطر على اسم سر سجل Docker الذي تم إعداده بالفعل داخل نظام المجموعة. تتم إضافة كل اسم سري ضمن imagePullSecrets لأحمال العمل الموجودة في ملفات بيان الإدخال.


renderType - محرك العرض
string. ‏‏اختياري. استخدم عندما action = bake. القيم المسموح بها: helm، ، kompose. kustomize القيمة الافتراضية: helm.

يحدد نوع العرض المستخدم لإنتاج ملفات البيان.


renderType - محرك العرض
string. ‏‏اختياري. استخدم عندما action = bake. القيم المسموح بها: helm2 (Helm 2). القيمة الافتراضية: helm2.

يحدد نوع العرض المستخدم لإنتاج ملفات البيان.


dockerComposeFile - المسار إلى ملف docker compose
string. مطلوب عند action = bake && renderType = kompose.

يحدد مسار ملف docker-compose.


helmChart - مخطط Helm
string. مطلوب عند action = bake && renderType = helm.

يحدد مسار مخطط Helm للخبز.


helmChart - مخطط Helm
string. مطلوب عند action = bake && renderType = helm2.

يحدد مسار مخطط Helm للخبز.


releaseName - اسم إصدار Helm
string. ‏‏اختياري. استخدم عندما action = bake && renderType = helm.

يحدد اسم إصدار Helm لاستخدامه.


releaseName - اسم إصدار Helm
string. ‏‏اختياري. استخدم عندما action = bake && renderType = helm2.

يحدد اسم إصدار Helm لاستخدامه.


overrideFiles - تجاوز الملفات
string. ‏‏اختياري. استخدم عندما action = bake && renderType = helm.

تحديد إدخال متعدد الأسطر يقبل المسار إلى ملفات التجاوز. يتم استخدام الملفات عند خبز ملفات البيان من مخططات Helm.


overrideFiles - تجاوز الملفات
string. ‏‏اختياري. استخدم عندما action = bake && renderType = helm2.

تحديد إدخال متعدد الأسطر يقبل المسار إلى ملفات التجاوز. يتم استخدام الملفات عند خبز ملفات البيان من مخططات Helm.


overrides - يتجاوز
string. ‏‏اختياري. استخدم عندما action = bake && renderType = helm.

يحدد قيم التجاوز المراد تعيينها.


overrides - يتجاوز
string. ‏‏اختياري. استخدم عندما action = bake && renderType = helm2.

يحدد قيم تجاوز إضافية يتم استخدامها عبر مفتاح --set سطر الأوامر عند خبز ملفات البيان التي تستخدم Helm.

حدد قيم التجاوز كأزواج key-value بالتنسيق key:value. إذا كنت تستخدم أزواج تجاوز key-value متعددة، فحدد كل key-value زوج في سطر منفصل. استخدم حرف سطر جديد كمحدد بين أزواج مختلفة key-value .


kustomizationPath - مسار Kustomization
string. ‏‏اختياري. استخدم عندما action = bake && renderType = kustomize.

يحدد الوسيطة التي يجب أن تكون المسار إلى الدليل الذي يحتوي على الملف، أو عنوان URL لمستودع git مع لاحقة مسار تحدد same فيما يتعلق بجذر المستودع.


resourceToPatch - المورد المراد تصحيحه
string. مطلوب عند action = patch. القيم المسموح بها: file، . name القيمة الافتراضية: file.

يشير إلى إحدى طرق التصحيح التالية:

  • يحدد ملف البيان الكائنات المراد تصحيحها.
  • يتم تحديد كائن فردي حسب النوع والاسم كهدف التصحيح.

القيم المقبولة هي ملفواسم.


resourceFileToPatch - مسار الملف
string. مطلوب عند action = patch && resourceToPatch = file.

يحدد المسار إلى الملف المستخدم للتصحيح.


kind - نوع
string. مطلوب عند action = scale || resourceToPatch = name. القيم المسموح بها: deployment، ، replicaset. statefulset

يحدد نوع كائن K8s، مثل deploymentوالمزيد replicaSet .


name - اسم
string. مطلوب عند action = scale || resourceToPatch = name.

يحدد اسم كائن K8s.


replicas - العدد الخاص بالنسخ المتماثلة
string. مطلوب عند action = scale.

يحدد عدد النسخ المتماثلة التي يجب التحجيم إليها.


mergeStrategy - استراتيجية الدمج
string. مطلوب عند action = patch. القيم المسموح بها: json، ، merge. strategic القيمة الافتراضية: strategic.

يحدد نوع التصحيح الذي يتم توفيره.


arguments - الحجج
string. ‏‏اختياري. استخدم عندما action = delete.

يحدد وسيطات kubectl delete الأمر . مثال على ذلك: arguments: deployment hello-world foo-bar


patch - التصحيح
string. مطلوب عند action = patch.

يحدد محتويات التصحيح.


secretType - نوع البيانات السرية
string. مطلوب عند action = createSecret. القيم المسموح بها: dockerRegistry، . generic القيمة الافتراضية: dockerRegistry.

إنشاء أو تحديث عام أو docker imagepullsecret. حدد dockerRegistry لإنشاء السجل المحدد أو تحديثه imagepullsecret . imagePullSecret هي طريقة لتمرير سر يحتوي على كلمة مرور سجل حاوية إلى Kubelet، حتى تتمكن من سحب صورة خاصة نيابة عن Pod الخاص بك.


secretName - اسم البيانات السرية
string. ‏‏اختياري. استخدم عندما action = createSecret.

يحدد اسم السر. يمكنك استخدام هذا الاسم السري في ملف تكوين Kubernetes YAML.


secretArguments - الحجج
string. ‏‏اختياري. استخدم عندما action = createSecret && secretType = generic.

يحدد المفاتيح والقيم الحرفية لإدراجها في البيانات السرية. على سبيل المثال، --from-literal=key1=value1--from-literal=key2="top secret".


dockerRegistryEndpoint - اتصال خدمة تسجيل Docker
string. ‏‏اختياري. استخدم عندما action = createSecret && secretType = dockerRegistry.

يحدد بيانات اعتماد اتصال الخدمة المحددة المستخدمة لإنشاء سر سجل Docker داخل نظام المجموعة. يمكن أن تشير ملفات البيان ضمن imagePullSecrets الحقل بعد ذلك إلى اسم هذا السر.


rolloutStatusTimeout - مهلة حالة الإطلاق
string. ‏‏اختياري. استخدم عندما action = deploy || action = patch || action = scale || action = promote. القيمة الافتراضية: 0.

يحدد طول الوقت (بالثوان) للانتظار قبل حالة الانتهاء watch on rollout .


خيارات التحكم بالمهمة

تحتوي جميع المهام على خيارات التحكم بالإضافة إلى مدخلات المهام الخاصة بها. لمزيد من المعلومات، راجع خيارات التحكم وخصائص المهمة الشائعة.

متغيرات الإخراج

تحدد هذه المهمة متغيرات الإخراج التالية، والتي يمكنك استهلاكها في خطوات انتقال البيانات من الخادم والوظائف والمراحل.

manifestsBundle
يحدد موقع حزم البيان التي تم إنشاؤها بواسطة إجراء الخبز.

الملاحظات

ملاحظة

يتوفر إصدار أحدث من هذه المهمة يوفر دعما إضافيا لاستهداف مجموعة Kubernetes بطرق مختلفة، باستخدام الخاصية connectionType . لمزيد من المعلومات، راجع ملاحظاتاتصال الخدمة KubernetesManifest@1 KubernetesManifest@1

استخدم مهمة بيان Kubernetes في البنية الأساسية لبرنامج ربط العمليات التجارية للبناء أو الإصدار لخبز البيانات ونشرها في مجموعات Kubernetes.

تدعم هذه المهمة ما يلي:

  • استبدال البيانات الاصطناعية: يأخذ إجراء النشر كإدخل قائمة بصور الحاوية التي يمكنك تحديدها جنبا إلى جنب مع علاماتها وملخصاتها. يتم استبدال نفس الإدخال في ملفات البيان غير المدمجة قبل التطبيق إلى نظام المجموعة. يضمن هذا الاستبدال أن تسحب عقد نظام المجموعة الإصدار الصحيح من الصورة.

  • استقرار البيان: يتم التحقق من حالة الإطلاق لعناصر Kubernetes المنشورة. يتم دمج عمليات التحقق من الاستقرار لتحديد ما إذا كانت حالة المهمة ناجحة أو فاشلة.

  • التعليقات التوضيحية لقابلية التتبع: تتم إضافة تعليقات توضيحية إلى كائنات Kubernetes المنشورة لتراكب معلومات التتبع. يتم دعم التعليقات التوضيحية التالية:

    • azure-pipelines/org
    • azure-pipelines/project
    • azure-pipelines/pipeline
    • azure-pipelines/pipelineId
    • azure-pipelines/execution
    • azure-pipelines/executionuri
    • azure-pipelines/jobName
  • معالجة البيانات السرية: createSecret يتيح الإجراء إنشاء أسرار سجل Docker باستخدام اتصالات خدمة سجل Docker. كما يتيح إنشاء أسرار عامة باستخدام متغيرات النص العادي أو المتغيرات السرية. قبل التوزيع إلى نظام المجموعة، يمكنك استخدام secrets الإدخال جنبا إلى جنب مع deploy الإجراء لزيادة ملفات بيان الإدخال بالقيمة المناسبة imagePullSecrets .

  • بيان الخبز: bake يسمح إجراء المهمة بخبز القوالب في ملفات بيان Kubernetes. يستخدم الإجراء أدوات مثل Helm و Compose و Kustomize. مع الخبز، تكون ملفات بيان Kubernetes هذه قابلة للاستخدام لعمليات التوزيع إلى نظام المجموعة.

  • استراتيجية التوزيع: يؤدي اختيار الاستراتيجية canarydeploy مع الإجراء إلى إنشاء أسماء أحمال العمل اللاحقة ب -baseline و -canary. تدعم المهمة طريقتين لتقسيم نسبة استخدام الشبكة:

    • واجهة شبكة الخدمة: يسمح تجريد واجهة شبكة الخدمة (SMI) بالتكوين مع موفري شبكة الخدمة مثل Linkerd و Istio. تعين مهمة بيان Kubernetes عناصر SMI TrafficSplit إلى خدمات مستقرة وأساسية وكنارية أثناء دورة حياة استراتيجية التوزيع.

      عمليات توزيع الكناري التي تستند إلى شبكة خدمة وتستخدم هذه المهمة أكثر دقة. ترجع هذه الدقة إلى كيفية تمكين موفري شبكة الخدمة للتقسيم الدقيق لنسبة استخدام الشبكة المستندة إلى النسبة المئوية. تستخدم شبكة الخدمة سجل الخدمة وحاويات sidecar التي يتم حقنها في pods. يحدث هذا الحقن جنبا إلى جنب مع حاويات التطبيق لتحقيق تقسيم نسبة استخدام الشبكة الدقيقة.

    • Kubernetes بدون شبكة خدمة: في حالة عدم وجود شبكة خدمة، قد لا تحصل على تقسيم النسبة المئوية الدقيق الذي تريده على مستوى الطلب. ومع ذلك، يمكنك إجراء عمليات توزيع الكناري باستخدام متغيرات الأساس والكناري بجوار المتغير المستقر.

      ترسل الخدمة طلبات إلى pods من جميع متغيرات حمل العمل الثلاثة حيث يتم استيفاء قيود تسمية المحدد. يكرم بيان Kubernetes هذه الطلبات عند إنشاء متغيرات الأساس والكناري. يحقق سلوك التوجيه هذا التأثير المقصود لتوجيه جزء فقط من إجمالي الطلبات إلى الكناري.

    قارن أحمال العمل الأساسية وأحمال عمل الكناري باستخدام إما مهمة التدخل اليدوي في مسارات الإصدار أو مهمة تأخير في مسارات YAML. قم بإجراء المقارنة قبل استخدام إجراء ترقية المهمة أو رفضها.

نشر الإجراء

التعليمات البرمجية YAML التالية هي مثال على التوزيع إلى مساحة اسم Kubernetes باستخدام ملفات البيان:

steps:
- task: KubernetesManifest@0
  displayName: Deploy
  inputs:
    kubernetesServiceConnection: someK8sSC1
    namespace: default
    manifests: |
      manifests/deployment.yml
      manifests/service.yml
    containers: |
      foo/demo:$(tagVariable1)
      bar/demo:$(tagVariable2)
    imagePullSecrets: |
      some-secret
      some-other-secret

في المثال أعلاه، تحاول المهمة العثور على تطابقات للصور foo/demo وفي bar/demo حقول الصور لملفات البيان. لكل تطابق تم العثور عليه، يتم إلحاق قيمة إما tagVariable1 أو tagVariable2 كعلامة باسم الصورة. يمكنك أيضا تحديد الملخصات في إدخال الحاويات لاستبدال البيانات الاصطناعية.

ملاحظة

بينما يمكنك تأليف deploypromotereject وإجراءات باستخدام إدخال YAML المتعلق باستراتيجية النشر، فإن دعم مهمة التدخل اليدوي غير متوفر حاليا للبنية الأساسية لبرنامج ربط العمليات التجارية للبناء.

بالنسبة للبنية الأساسية لبرنامج ربط العمليات التجارية للإصدار، ننصحك باستخدام الإجراءات والمدخلات المتعلقة باستراتيجية التوزيع بالتسلسل التالي:

  1. إجراء توزيع محدد مع strategy: canary و percentage: $(someValue).
  2. مهمة التدخل اليدوي بحيث يمكنك إيقاف البنية الأساسية لبرنامج ربط العمليات التجارية مؤقتا ومقارنة متغير الأساس بمتغير الكناري.
  3. إجراء ترقية يتم تشغيله إذا تم استئناف مهمة التدخل اليدوي وإجراء رفض يتم تشغيله إذا تم رفض مهمة التدخل اليدوي.

إنشاء إجراء سري

تظهر التعليمات البرمجية YAML التالية إنشاء عينة من أسرار سجل Docker باستخدام اتصال خدمة Docker Registry:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: dockerRegistry
    secretName: foobar
    dockerRegistryEndpoint: demoACR
    kubernetesServiceConnection: someK8sSC
    namespace: default

تظهر التعليمات البرمجية YAML هذه إنشاء عينة من الأسرار العامة:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: generic
    secretName: some-secret
    secretArguments: --from-literal=key1=value1
    kubernetesServiceConnection: someK8sSC
    namespace: default

إجراء الخبز

التعليمات البرمجية YAML التالية هي مثال على ملفات بيان الخبز من مخططات Helm. لاحظ استخدام إدخال اسم في المهمة الأولى. تتم الإشارة إلى هذا الاسم لاحقا من خطوة التوزيع لتحديد المسار إلى البيانات التي تم إنتاجها بواسطة خطوة الخبز.

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from Helm chart
  inputs:
    action: bake
    helmChart: charts/sample
    overrides: 'image.repository:nginx'

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: someK8sSC
    namespace: default
    manifests: $(bake.manifestsBundle)
    containers: |
      nginx: 1.7.9

ملاحظة

لاستخدام Helm مباشرة لإدارة الإصدارات والتراجع، راجع مهمة حزمة مخططات Helm وتوزيعها.

مثال Kustomize

التعليمات البرمجية YAML التالية هي مثال على ملفات بيان الخبز التي تم إنشاؤها باستخدام Kustomize التي تحتوي على kustomization.yaml ملف.

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from kustomization path
  inputs:
    action: bake
    renderType: kustomize
    kustomizationPath: folderContainingKustomizationFile

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: k8sSC1
    manifests: $(bake.manifestsBundle)

مثال على Kompose

التعليمات البرمجية YAML التالية هي مثال على ملفات بيان الخبز التي تم إنشاؤها باستخدام Kompose، وهي أداة تحويل ل Docker Compose.

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from Docker Compose
  inputs:
    action: bake
    renderType: kompose
    dockerComposeFile: docker-compose.yaml

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: k8sSC1
    manifests: $(bake.manifestsBundle)

إجراء تغيير الحجم

توضح التعليمات البرمجية YAML التالية مثالا على تحجيم الكائنات:

steps:
- task: KubernetesManifest@0
  displayName: Scale
  inputs: 
    action: scale
    kind: deployment
    name: bootcamp-demo
    replicas: 5
    kubernetesServiceConnection: someK8sSC
    namespace: default

إجراء التصحيح

تعرض التعليمات البرمجية YAML التالية مثالا على تصحيح الكائنات:

steps:
- task: KubernetesManifest@0
  displayName: Patch
  inputs: 
    action: patch
    kind: pod
    name: demo-5fbc4d6cd9-pgxn4
    mergeStrategy: strategic
    patch: '{"spec":{"containers":[{"name":"demo","image":"foobar/demo:2239"}]}}'
    kubernetesServiceConnection: someK8sSC
    namespace: default

إجراء الحذف

تعرض التعليمة البرمجية YAML هذه عينة حذف كائن:

steps:
- task: KubernetesManifest@0
  displayName: Delete
  inputs:
    action: delete
    arguments: deployment expressapp
    kubernetesServiceConnection: someK8sSC
    namespace: default

استكشاف الأخطاء وإصلاحها

يوجد نظام مجموعة Kubernetes الخاص بي خلف جدار حماية وأنا أستخدم وكلاء مستضافين. كيف يمكنني التوزيع إلى هذه المجموعة؟

يمكنك منح الوكلاء المستضافين حق الوصول من خلال جدار الحماية الخاص بك عن طريق السماح بعناوين IP للوكلاء المستضافين. لمزيد من التفاصيل، راجع نطاقات IP للعامل.

كيف تعمل الطلبات على مسارات خدمة مستقرة ومتغيرة مع عمليات توزيع الكناري؟

تسمح علاقة محدد التسمية بين القرون والخدمات في Kubernetes بإعداد عمليات التوزيع بحيث توجه خدمة واحدة الطلبات إلى كل من المتغيرات الثابتة والمتغيرات الكنارية. تستخدم مهمة بيان Kubernetes هذا لعمليات توزيع الكناري.

إذا كانت المهمة تتضمن مدخلات action: deploy و strategy: canary، لكل حمل عمل (النشر، ReplicaSet، Pod، ...) المعرفة في ملفات بيان الإدخال، -baseline يتم إنشاء متغير و -canary للتوزيع. في هذا المثال، هناك توزيع sampleapp في ملف بيان الإدخال وأنه بعد إكمال رقم التشغيل 22 من البنية الأساسية لبرنامج ربط العمليات التجارية، يتم نشر المتغير الثابت لهذا التوزيع المسمى sampleapp في نظام المجموعة. في التشغيل اللاحق (في هذه الحالة رقم التشغيل 23)، مهمة بيان Kubernetes مع action: deploy و strategy: canary ستؤدي إلى إنشاء عمليات توزيع sampleapp-baseline و sampleapp-canary التي يتم تحديد عدد النسخ المتماثلة الخاصة بها بواسطة percentage منتج إدخال المهمة بقيمة العدد المطلوب من النسخ المتماثلة للمتغير sampleapp الثابت النهائي وفقا لملفات بيان الإدخال.

باستثناء عدد النسخ المتماثلة، يحتوي الإصدار الأساسي على نفس التكوين مثل المتغير الثابت بينما يحتوي إصدار الكناري على التغييرات الجديدة التي يتم تقديمها بواسطة التشغيل الحالي (في هذه الحالة، رقم التشغيل 23). إذا تم إعداد تدخل يدوي في البنية الأساسية لبرنامج ربط العمليات التجارية بعد الخطوة المذكورة أعلاه، فسيسمح ذلك بفرصة إيقاف البنية الأساسية لبرنامج ربط العمليات التجارية مؤقتا بحيث يمكن لمسؤول البنية الأساسية لبرنامج ربط العمليات التجارية تقييم المقاييس الرئيسية للإصدارات الأساسية والإصدارات الكنارية واتخاذ القرار بشأن ما إذا كانت تغييرات الكناري آمنة وجيدة بما يكفي لبدء التشغيل الكامل.

action: promote يمكن استخدام إدخالات و strategy: canary و action: rejectstrategy: canary لمهام بيان Kubernetes للترويج للتغييرات الكنارية أو رفضها على التوالي. لاحظ أنه في كلتا الحالتين، في نهاية هذه الخطوة، سيتم نشر المتغير المستقر فقط لأحمال العمل المعلن عنها في ملفات بيان الإدخال في نظام المجموعة، بينما يتم تنظيف الأساس المؤقت وإصدارات الكناري.

المتطلبات

المتطلبات الوصف
أنواع البنية الأساسية لبرنامج ربط العمليات التجارية YAML، الإصدار الكلاسيكي، الإصدار الكلاسيكي
يعمل على Agent, DeploymentGroup
المطالب بلا
القدرات لا تفي هذه المهمة بأي طلبات للمهام اللاحقة في الوظيفة.
قيود الأوامر أي
متغيرات Settable أي
إصدار الوكيل جميع إصدارات العامل المدعومة.
فئة المهمة نشر