المعلمات المدعومة GitOps (Flux v2)

يوفر Azure إمكانية نشر التطبيقات التلقائية باستخدام GitOps التي تعمل مع Azure Kubernetes Service (AKS) ومجموعات Kubernetes الممكنة في Azure Arc. يتيح لك GitOps مع Flux v2 استخدام مستودع Git الخاص بك كمصدر للحقيقة لتكوين نظام المجموعة ونشر التطبيق. لمزيد من المعلومات، راجع عمليات نشر التطبيقات باستخدام GitOps (Flux v2) والبرنامج التعليمي: نشر التطبيقات باستخدام GitOps مع Flux v2.

تستخدم GitOps على Kubernetes الممكنة في Azure Arc أو Azure Kubernetes Service Flux، وهي مجموعة أدوات مفتوحة المصدر شائعة تدعم العديد من المعلمات لتمكين سيناريوهات مختلفة. للحصول على وصف لجميع المعلمات التي يدعمها Flux، راجع وثائق Flux الرسمية.

لمشاهدة جميع المعلمات التي يدعمها Flux في Azure، راجع az k8s-configuration الوثائق. لا يدعم هذا التنفيذ حاليا كل معلمة يدعمها Flux. أخبرنا ما إذا كانت المعلمة التي تحتاجها مفقودة من تنفيذ Azure.

توضح هذه المقالة بعض المعلمات والوسيطات المتوفرة az k8s-configuration flux create للأمر . يمكنك أيضا مشاهدة القائمة الكاملة للمعلمات الخاصة az k8s-configuration flux باستخدام المعلمة -h في Azure CLI (على سبيل المثال، az k8s-configuration flux -h أو az k8s-configuration flux create -h).

تلميح

الحل البديل لنشر موارد Flux مع معلمات غير مدعومة هو تحديد الموارد المخصصة Flux المطلوبة (مثل GitRepository أو Kustomization) داخل مستودع Git الخاص بك. انشر هذه الموارد باستخدام az k8s-configuration flux create الأمر . ستظل قادرا بعد ذلك على الوصول إلى موارد Flux الخاصة بك من خلال واجهة مستخدم Azure Arc.

وسيطات التكوين العامة

المحددة تنسيق الملاحظات
--cluster-name -c السلسلة‬ اسم مورد نظام المجموعة في Azure.
--cluster-type -t القيم المسموح بها: connectedClusters، managedClusters استخدم connectedClusters لمجموعات Kubernetes الممكنة في Azure Arc أو managedClusters لمجموعة AKS.
--resource-group -g السلسلة‬ اسم مجموعة موارد Azure التي تحتوي على مورد نظام المجموعة.
--name -n السلسلة‬ اسم تكوين Flux في Azure.
--namespace --ns السلسلة‬ اسم مساحة الاسم لنشر التكوين. افتراضي: default.
--scope -s السلسلة‬ نطاق الإذن للمشغلين. القيم المحتملة هي cluster (الوصول الكامل) أو namespace (الوصول المقيد). افتراضي: cluster.
--suspend flag تعليق كافة التسويات المصدر وkustomize المحددة في تكوين Flux هذا. وستستمر التسويات التي كانت نشطة وقت التعليق.

الوسيطات العامة المصدر

المحددة تنسيق الملاحظات
--kind السلسلة‬ نوع المصدر الذي يجب التوفيق بينه وبينه. القيم المسموح بها: bucket، ، git. azblob افتراضي: git.
--timeout تنسيق مدة golang الحد الأقصى للوقت لمحاولة التوفيق بين المصدر قبل انتهاء المهلة. الافتراضي: 10m.
--sync-interval --interval تنسيق مدة golang الوقت بين تسوية المصدر على نظام المجموعة. افتراضي: 10m.

وسيطات مرجع مصدر مستودع Git

المحددة تنسيق الملاحظات
--branch السلسلة‬ فرع داخل مصدر Git للمزامنة مع نظام المجموعة. افتراضي: master. قد يكون للمستودعات الأحدث فرع جذر يسمى main، وفي هذه الحالة تحتاج إلى تعيين --branch=main.
--tag السلسلة‬ ضع علامة داخل مصدر Git للمزامنة مع نظام المجموعة. مثال:--tag=3.2.0.
--semver السلسلة‬ نطاق علامة semver Git داخل مصدر Git للمزامنة مع نظام المجموعة. مثال:--semver=">=3.1.0-rc.1 <3.2.0".
--commit السلسلة‬ يقوم Git بتثبيت SHA داخل مصدر Git للمزامنة مع نظام المجموعة. مثال:--commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a.

لمزيد من المعلومات، راجع وثائق Flux حول استراتيجيات سحب مستودع Git.

مستودع Git العام

المحددة تنسيق الملاحظات
--url -u http[s]://server/repo[.git] عنوان URL لمصدر مستودع Git للتصالح مع نظام المجموعة.

مستودع Git الخاص مع SSH

هام

أعلن Azure DevOps عن إهمال SSH-RSA كطريقة تشفير مدعومة للاتصال بمستودعات Azure باستخدام SSH. إذا كنت تستخدم مفاتيح SSH للاتصال بمستودعات Azure في تكوينات Flux، نوصي بالانتقال إلى مفاتيح RSA-SHA2-256 أو RSA-SHA2-512 أكثر أمانا. لمزيد من المعلومات، راجع إهمال Azure DevOps SSH-RSA.

مستودع Git الخاص مع مفاتيح SSH و Flux التي تم إنشاؤها

أضف المفتاح العام الذي تم إنشاؤه بواسطة Flux إلى حساب المستخدم في مزود خدمة Git الخاص بك.

المحددة تنسيق الملاحظات
--url -u ssh://user@server/repo[.git] git@ يجب استبدال user@ إذا كان المفتاح العام مقترنا بالمستودع بدلا من حساب المستخدم.

مستودع Git الخاص مع SSH والمفاتيح التي يوفرها المستخدم

استخدم المفتاح الخاص بك مباشرة أو من ملف. يجب أن يكون المفتاح بتنسيق PEM وينتهي بخط جديد (\n).

أضف المفتاح العام المرتبط إلى حساب المستخدم في مزود خدمة Git الخاص بك.

المحددة تنسيق الملاحظات
--url -u ssh://user@server/repo[.git] git@ يجب استبدال user@ إذا كان المفتاح العام مقترنا بالمستودع بدلا من حساب المستخدم.
--ssh-private-key مفتاح Base64 بتنسيق PEM قم بتوفير المفتاح مباشرة.
--ssh-private-key-file المسار الكامل إلى الملف المحلي قم بتوفير المسار الكامل للملف المحلي الذي يحتوي على مفتاح تنسيق PEM.

مضيف Git الخاص مع SSH والمضيفين المعروفين المقدمين من المستخدم

يحتفظ عامل تشغيل Flux بقائمة من مضيفي Git الشائعين في ملفه known_hosts . يستخدم Flux هذه المعلومات لمصادقة مستودع Git قبل إنشاء اتصال SSH. إذا كنت تستخدم مستودع Git غير شائع أو مضيف Git الخاص بك، يمكنك توفير مفتاح المضيف بحيث يمكن ل Flux تحديد مستودعك.

تماما مثل المفاتيح الخاصة، يمكنك توفير المحتوى الخاص بك known_hosts مباشرة أو في ملف. عند توفير المحتوى الخاص بك، استخدم مواصفات تنسيق المحتوى known_hosts، جنبا إلى جنب مع أي من سيناريوهات مفتاح SSH السابقة.

المحددة تنسيق الملاحظات
--url -u ssh://user@server/repo[.git] git@ يمكن استبدال user@.
--known-hosts سلسلة Base64 توفير known_hosts المحتوى مباشرة.
--known-hosts-file المسار الكامل إلى الملف المحلي توفير known_hosts محتوى في ملف محلي.

مستودع Git الخاص مع مستخدم ومفتاح HTTPS

المحددة تنسيق الملاحظات
--url -u https://server/repo[.git] HTTPS مع المصادقة الأساسية.
--https-user سلسلة أولية اسم مستخدم HTTPS.
--https-key سلسلة أولية الرمز المميز للوصول الشخصي ل HTTPS أو كلمة المرور.

مستودع Git الخاص مع شهادة HTTPS CA

المحددة تنسيق الملاحظات
--url -u https://server/repo[.git] HTTPS مع المصادقة الأساسية.
--https-ca-cert سلسلة Base64 شهادة CA لاتصال TLS.
--https-ca-cert-file المسار الكامل إلى الملف المحلي توفير محتوى شهادة المرجع المصدق في ملف محلي.

وسيطات مصدر المستودع

إذا كنت تستخدم bucket المصدر، فإليك وسيطات الأمر الخاصة بالمستودع.

المحددة تنسيق الملاحظات
--url -u سلسلة URL عنوان URL ل bucket. التنسيقات المدعومة: http://، . https://
--bucket-name السلسلة‬ اسم للمزامنة bucket .
--bucket-access-key السلسلة‬ معرف مفتاح الوصول المستخدم للمصادقة باستخدام bucket.
--bucket-secret-key السلسلة‬ المفتاح السري المستخدم للمصادقة باستخدام bucket.
--bucket-insecure Boolean التواصل مع bucket بدون TLS. إذا لم يتم توفيرها، يفترض خطأ؛ إذا تم توفيره، يفترض أنه صحيح.

وسيطات مصدر حساب تخزين Azure Blob

إذا كنت تستخدم azblob المصدر، فإليك وسيطات الأمر الخاصة بكائن ثنائي كبير الحجم.

المحددة تنسيق الملاحظات
--url -u سلسلة URL عنوان URL ل azblob.
--container-name السلسلة‬ اسم حاوية Azure Blob Storage المراد مزامنتها
--sp_client_id السلسلة‬ معرف العميل لمصادقة كيان خدمة باستخدام Azure Blob، مطلوب لأسلوب المصادقة هذا
--sp_tenant_id السلسلة‬ معرف المستأجر لمصادقة كيان خدمة باستخدام Azure Blob، مطلوب لأسلوب المصادقة هذا
--sp_client_secret السلسلة‬ سر العميل لمصادقة كيان الخدمة باستخدام Azure Blob
--sp_client_cert السلسلة‬ شهادة العميل المشفرة Base64 لمصادقة كيان خدمة باستخدام Azure Blob
--sp_client_cert_password السلسلة‬ كلمة المرور لشهادة العميل المستخدمة لمصادقة كيان خدمة باستخدام Azure Blob
--sp_client_cert_send_chain السلسلة‬ تحديد ما إذا كان يجب تضمين رأس x5c في مطالبات العميل عند الحصول على رمز مميز لتمكين المصادقة المستندة إلى اسم الموضوع / المصدر لشهادة العميل
--account_key السلسلة‬ مفتاح Azure Blob المشترك للمصادقة
--sas_token السلسلة‬ رمز SAS المميز ل Azure Blob للمصادقة
--managed-identity-client-id السلسلة‬ معرف العميل للهوية المدارة للمصادقة باستخدام Azure Blob

هام

عند استخدام مصادقة الهوية المدارة لمجموعات AKS والمصدر azblob ، يجب تعيين الهوية المدارة كحد أدنى لدور Storage Blob Data Reader . المصادقة باستخدام هوية مدارة غير متوفرة بعد لمجموعات Kubernetes التي تدعم Azure Arc.

سر محلي للمصادقة مع المصدر

يمكنك استخدام سر Kubernetes محلي للمصادقة مع gitأو bucketazBlob مصدر. يجب أن يحتوي السر المحلي على جميع معلمات المصادقة المطلوبة للمصدر ويجب إنشاؤها في نفس مساحة الاسم مثل تكوين Flux.

المحددة تنسيق الملاحظات
--local-auth-ref --local-ref السلسلة‬ مرجع محلي إلى سر Kubernetes في مساحة اسم تكوين Flux لاستخدامها للمصادقة مع المصدر.

لمصادقة HTTPS، يمكنك إنشاء سر باستخدام username و password:

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-literal=username=<my-username> --from-literal=password=<my-password-or-key>

لمصادقة SSH، يمكنك إنشاء سر مع الحقلين identity و known_hosts :

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-file=identity=./id_rsa --from-file=known_hosts=./known_hosts

هام

أعلن Azure DevOps عن إهمال SSH-RSA كطريقة تشفير مدعومة للاتصال بمستودعات Azure باستخدام SSH. إذا كنت تستخدم مفاتيح SSH للاتصال بمستودعات Azure في تكوينات Flux، نوصي بالانتقال إلى مفاتيح RSA-SHA2-256 أو RSA-SHA2-512 أكثر أمانا. لمزيد من المعلومات، راجع إهمال Azure DevOps SSH-RSA.

لكلتا الحالتين، عند إنشاء تكوين Flux، استخدم --local-auth-ref my-custom-secret بدلا من معلمات المصادقة الأخرى:

az k8s-configuration flux create -g <cluster_resource_group> -c <cluster_name> -n <config_name> -t connectedClusters --scope cluster --namespace flux-config -u <git-repo-url> --kustomization name=kustomization1 --local-auth-ref my-custom-secret

تعرف على المزيد حول استخدام سر Kubernetes محلي مع أساليب المصادقة هذه:

إشعار

إذا كنت بحاجة إلى Flux للوصول إلى المصدر من خلال الوكيل الخاص بك، يجب تحديث عوامل Azure Arc بإعدادات الوكيل. لمزيد من المعلومات، راجع الاتصال باستخدام خادم وكيل صادر.

تنفيذ Git

لدعم العديد من موفري المستودعات الذين ينفذون Git، يمكن تكوين Flux لاستخدام إحدى مكتبتي Git: go-git أو libgit2. للحصول على التفاصيل، راجع وثائق Flux.

يحدد تنفيذ GitOps ل Flux v2 تلقائيا المكتبة التي يجب استخدامها لمستودعات السحابة العامة:

  • بالنسبة لمستودعات GitHub وGitLab وBitBucket، يستخدم go-gitFlux .
  • بالنسبة إلى Azure DevOps وجميع المستودعات الأخرى، يستخدم libgit2Flux .

بالنسبة للمستودعات المحلية، يستخدم libgit2Flux .

Kustomization

Kustomization هو إعداد تم إنشاؤه لتكوينات Flux التي تتيح لك اختيار مسار معين في مستودع المصدر الذي يتم التوفيق بينه وبين نظام المجموعة. لا تحتاج إلى إنشاء ملف 'kustomization.yaml على هذا المسار المحدد. بشكل افتراضي، تتم تسوية جميع البيانات في هذا المسار. ومع ذلك، إذا كنت تريد أن يكون لديك تراكب Kustomize للتطبيقات المتوفرة على مسار المستودع هذا، يجب عليك إنشاء ملفات Kustomize في git لتكوين Flux للاستفادة منها.

باستخدام az k8s-configuration flux kustomization create، يمكنك إنشاء واحد أو أكثر من kustomizations أثناء التكوين.

المحددة تنسيق الملاحظات
--kustomization لا توجد قيمة بداية سلسلة من المعلمات التي تقوم بتكوين kustomization. يمكنك استخدامه عدة مرات لإنشاء kustomizations متعددة.
name السلسلة‬ اسم فريد لهذا kustomization.
path السلسلة‬ المسار داخل مستودع Git للتوفيق مع نظام المجموعة. الافتراضي هو المستوى الأعلى للفرع.
prune Boolean القيمة الافتراضية هي false. قم بتعيين prune=true للتأكد من أن الكائنات التي تم نشرها في Flux إلى نظام المجموعة يتم تنظيفها إذا تمت إزالتها من المستودع أو إذا تم حذف تكوين Flux أو kustomizations. يعد الاستخدام prune=true مهما للبيئات التي لا يمتلك فيها المستخدمون حق الوصول إلى المجموعات ويمكنهم إجراء تغييرات فقط من خلال مستودع Git.
depends_on السلسلة‬ اسم واحد أو أكثر من kustomizations (ضمن هذا التكوين) التي يجب أن توفق قبل أن يمكن التوفيق بين kustomization هذا. على سبيل المثال: depends_on=["kustomization1","kustomization2"]. إذا قمت بإزالة kustomization يحتوي على kustomizations تابعة، تصبح حالة kustomizations التابعة DependencyNotReady، وتتوقف التسوية.
timeout تنسيق مدة golang افتراضي: 10m.
sync_interval تنسيق مدة golang افتراضي: 10m.
retry_interval تنسيق مدة golang افتراضي: 10m.
validation السلسلة‬ القيم: none، client، . server افتراضي: none. راجع وثائق Flux للحصول على التفاصيل.
force Boolean افتراضي: false. قم بتعيين force=true لإرشاد وحدة التحكم kustomize لإعادة إنشاء الموارد عند فشل التصحيح بسبب تغيير حقل غير قابل للتغيير.

يمكنك أيضا استخدام az k8s-configuration flux kustomization لتحديث kustomizations وإدراجها وإظهارها وحذفها في تكوين Flux.

الخطوات التالية