إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يصف هذا البرنامج التعليمي كيفية استخدام GitOps في مجموعة Kubernetes. يتم تمكين GitOps مع Flux v2 كملحق نظام مجموعة في مجموعات Kubernetes الممكنة في Azure Arc أو مجموعات Azure Kubernetes Service (AKS).
microsoft.flux بعد تثبيت ملحق نظام المجموعة، يمكنك إنشاء مورد واحد أو أكثر fluxConfigurations يقوم بمزامنة مصادر مستودع Git إلى نظام المجموعة وتسوية نظام المجموعة مع الحالة المطلوبة. باستخدام GitOps، يمكنك استخدام مستودع Git الخاص بك كمصدر للحقيقة لتكوين نظام المجموعة ونشر التطبيق.
في هذا البرنامج التعليمي، نستخدم مثال على تكوين GitOps مع اثنين من kustomizations، بحيث يمكنك معرفة كيف يمكن أن يكون ل kustomization واحد تبعية على آخر. يمكنك إضافة المزيد من kustomizations والتبعيات حسب الحاجة، اعتمادا على السيناريو الخاص بك.
قبل الغوص، خذ لحظة لمعرفة كيفية عمل GitOps مع Flux من الناحية المفاهيمية.
تلميح
في حين أن المصدر في هذا البرنامج التعليمي هو مستودع Git، يوفر Flux أيضا الدعم لمصادر الملفات الشائعة الأخرى مثل مستودعات Helm والمستودعات وتخزين Azure Blob.
يمكنك أيضا إنشاء تكوينات Flux باستخدام Bicep أو قوالب ARM أو موفر Terraform AzAPI. لمزيد من المعلومات، راجع Microsoft.KubernetesConfiguration fluxConfigurations.
ضع في اعتبارك بدلا من ذلك تجربة استخدام ملحق Microsoft GitOps ArgoCD الجديد. Argo CD هي أداة GitOps مفتوحة المصدر شائعة توفر مجموعة مختلفة من الميزات والقدرات مقارنة ب Flux v2.
المتطلبات الأساسية
لنشر التطبيقات باستخدام GitOps مع Flux v2، تحتاج إلى:
مجموعات Kubernetes التي تدعم Azure Arc
مجموعة Kubernetes المتصلة التي تدعم Azure Arc والتي يتم تشغيلها. يتم دعم المجموعات المستندة إلى Arm64 بدءا من
microsoft.fluxالإصدار 1.7.0.تعرف على كيفية توصيل مجموعة Kubernetes ب Azure Arc. إذا كنت بحاجة إلى الاتصال من خلال وكيل صادر، فتأكد من تثبيت عوامل Arc بإعدادات الوكيل.
أذونات القراءة والكتابة على
Microsoft.Kubernetes/connectedClustersنوع المورد.
مجموعات خدمة Azure Kubernetes
نظام مجموعة AKS المستند إلى MSI قيد التشغيل.
هام
تأكد من إنشاء نظام مجموعة AKS باستخدام MSI (وليس SPN)، لأن الملحق
microsoft.fluxلا يعمل مع مجموعات AKS المستندة إلى SPN. بالنسبة لمجموعات AKS الجديدة التي تم إنشاؤها باستخدامaz aks create، فإن نظام المجموعة يستند إلى MSI بشكل افتراضي. لتحويل المجموعات المستندة إلى SPN إلى MSI، قم بتشغيلaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. لمزيد من المعلومات، راجع استخدام هوية مدارة في AKS.أذونات القراءة والكتابة على
Microsoft.ContainerService/managedClustersنوع المورد.
شائع لكلا نوعي نظام المجموعة
أذونات القراءة والكتابة على أنواع الموارد هذه:
Microsoft.KubernetesConfiguration/extensionsMicrosoft.KubernetesConfiguration/fluxConfigurations
الإصدار 2.15 من Azure CLI أو أحدث. قم بتثبيت Azure CLI أو استخدم الأوامر التالية للتحديث إلى أحدث إصدار:
az version az upgradeعميل سطر أوامر Kubernetes، kubectl.
kubectlسيكون مثبتاً بالفعل في حال كنت تستخدم Azure Cloud Shell.قم بتثبيت
kubectlمحلياً باستخدام أمرaz aks install-cli:az aks install-cliتسجيل موفري موارد Azure التاليين:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationالتسجيل هو عملية غير متزامنة ويجب أن ينتهي في غضون 10 دقائق. لمراقبة عملية التسجيل، استخدم الأمر التالي:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
دعم الإصدار والمنطقة
يتم دعم GitOps حاليا في جميع المناطق التي يدعمها Kubernetes الممكن ل Azure Arc. GitOps مدعوم حاليا في مجموعة فرعية من المناطق التي تدعمها AKS. تضيف خدمة GitOps مناطق مدعومة جديدة على إيقاع منتظم.
يتم دعم أحدث إصدار من ملحق Flux v2 والإصدارين السابقين (N-2). نوصي بشكل عام باستخدام أحدث إصدار من الملحق.
متطلبات الشبكة
تتطلب عوامل GitOps TCP الصادرة (الخروج) إلى مصدر المستودع على المنفذ 22 (SSH) أو المنفذ 443 (HTTPS) للعمل. تتطلب العوامل أيضا الوصول إلى عناوين URL الصادرة التالية:
| نقطة النهاية (DNS) | الوصف |
|---|---|
https://management.azure.com |
مطلوب للعامل للاتصال بخدمة تكوين Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
نقطة نهاية مستوى البيانات للعامل لدفع الحالة وجلب معلومات التكوين. يعتمد على <region> (المناطق المدعومة المذكورة سابقا). |
https://login.microsoftonline.com |
مطلوب لإحضار وتحديث رموز Azure Resource Manager المميزة. |
https://mcr.microsoft.com |
مطلوب لسحب صور الحاوية لوحدات تحكم Flux. |
تمكين ملحقات CLI
تثبيت أحدث k8s-configuration حزم ملحق وCLI k8s-extension :
az extension add -n k8s-configuration
az extension add -n k8s-extension
لتحديث هذه الحزم إلى أحدث الإصدارات:
az extension update -n k8s-configuration
az extension update -n k8s-extension
للاطلاع على قائمة بجميع ملحقات Azure CLI المثبتة وإصداراتها، استخدم الأمر التالي:
az extension list -o table
Experimental ExtensionType Name Path Preview Version
------------- -------------- ----------------- ----------------------------------------------------- -------- --------
False whl connectedk8s C:\Users\somename\.azure\cliextensions\connectedk8s False 1.2.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 1.5.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.1.0
تلميح
للمساعدة في حل أي أخطاء، راجع قسم GitOps (Flux v2) في استكشاف مشكلات الملحق وإصلاحها لمجموعات Kubernetes الممكنة في Azure Arc.
تطبيق تكوين Flux
k8s-configuration استخدم ملحق Azure CLI أو مدخل Azure لتمكين GitOps في نظام مجموعة Kubernetes ممكن ل AKS أو Arc. للحصول على عرض توضيحي، استخدم مستودع gitops-flux2-kustomize-helm-mt العام.
هام
تم تصميم مستودع العرض التوضيحي لتبسيط استخدامك لهذا البرنامج التعليمي وتوضيح المبادئ الرئيسية. لمواكبة آخر التحديثات، يمكن أن يحصل المستودع أحيانا على تغييرات فاصلة من ترقيات الإصدار. لا تؤثر هذه التغييرات على الاستخدام الجديد لهذا البرنامج التعليمي، بل التطبيقات السابقة فقط. لمزيد من المعلومات، راجع إخلاء المسؤولية عن التغيير العاجل.
يستخدم az k8s-configuration flux create المثال التالي الأمر لتطبيق تكوين Flux على نظام مجموعة، باستخدام القيم والإعدادات التالية:
- مجموعة الموارد التي تحتوي على نظام المجموعة هي
flux-demo-rg. - اسم مجموعة Azure Arc هو
flux-demo-arc. - نوع نظام المجموعة هو Azure Arc (
-t connectedClusters)، ولكن هذا المثال يعمل أيضا مع AKS (-t managedClusters). - اسم تكوين Flux هو
cluster-config. - مساحة الاسم لتثبيت التكوين هي
cluster-config. - عنوان URL لمستودع Git العام هو
https://github.com/Azure/gitops-flux2-kustomize-helm-mt. - فرع مستودع Git هو
main. - نطاق التكوين هو
cluster. يمنح هذا النطاق عوامل التشغيل أذونات لإجراء تغييرات في جميع أنحاء نظام المجموعة. لاستخدامnamespaceالنطاق مع هذا البرنامج التعليمي، راجع التغييرات المطلوبة. - يتم تحديد اثنين من kustomizations مع الأسماء
infraوapps. يرتبط كل منها بمسار في المستودع. -
appsيعتمد kustomization علىinfrakustomization.infra(يجب أن ينتهي kustomization قبلappsتشغيل kustomization.) - تعيين
prune=trueعلى كل من kustomizations. يضمن هذا الإعداد تنظيف الكائنات التي نشرتها Flux في نظام المجموعة إذا تمت إزالتها من المستودع، أو إذا تم حذف تكوين Flux أو kustomizations.
az k8s-configuration flux create -g flux-demo-rg \
-c flux-demo-arc \
-n cluster-config \
--namespace cluster-config \
-t connectedClusters \
--scope cluster \
-u https://github.com/Azure/gitops-flux2-kustomize-helm-mt \
--branch main \
--kustomization name=infra path=./infrastructure prune=true \
--kustomization name=apps path=./apps/staging prune=true dependsOn=\["infra"\]
microsoft.flux يتم تثبيت الملحق على نظام المجموعة (إذا لم يكن مثبتا بالفعل في نشر GitOps سابق).
تلميح
يقوم az k8s-configuration flux create الأمر بنشر الملحق microsoft.flux إلى نظام المجموعة وإنشاء التكوين. في بعض السيناريوهات، قد تحتاج إلى إنشاء مثيل ملحق flux بشكل منفصل قبل إنشاء موارد التكوين الخاصة بك. للقيام بذلك، استخدم az k8s-extension create الأمر لإنشاء مثيل للملحق على نظام المجموعة الخاص بك.
عند تثبيت تكوين flux لأول مرة، قد تكون Pending حالة التوافق الأولية أو Non-compliant لأن التسوية لا تزال مستمرة. بعد دقيقة أو نحو ذلك، استعلم عن التكوين مرة أخرى لمشاهدة حالة التوافق النهائية.
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
للتأكد من نجاح النشر، قم بتشغيل الأمر التالي:
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
مع النشر الناجح، يتم إنشاء مساحات الأسماء التالية:
-
flux-system: يحتفظ بوحدات تحكم ملحق Flux. -
cluster-config: يحتفظ بعناصر تكوين Flux. -
nginx، ،podinforedis: مساحات الأسماء لأحمال العمل الموضحة في البيانات في مستودع Git.
لتأكيد مساحات الأسماء، قم بتشغيل الأمر التالي:
kubectl get namespaces
flux-system تحتوي مساحة الاسم على كائنات ملحق Flux:
- وحدات تحكم Azure Flux:
fluxconfig-agent،fluxconfig-controller - وحدات تحكم OSS Flux:
source-controller، ،kustomize-controller،helm-controllernotification-controller
يجب أن يكون عامل Flux ووحدات التحكم في حالة تشغيل. تأكد من ذلك باستخدام الأمر التالي:
kubectl get pods -n flux-system
NAME READY STATUS RESTARTS AGE
fluxconfig-agent-9554ffb65-jqm8g 2/2 Running 0 21m
fluxconfig-controller-9d99c54c8-nztg8 2/2 Running 0 21m
helm-controller-59cc74dbc5-77772 1/1 Running 0 21m
kustomize-controller-5fb7d7b9d5-cjdhx 1/1 Running 0 21m
notification-controller-7d45678bc-fvlvr 1/1 Running 0 21m
source-controller-df7dc97cd-4drh2 1/1 Running 0 21m
تحتوي مساحة cluster-config الاسم على كائنات تكوين Flux.
kubectl get crds
NAME CREATED AT
alerts.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
arccertificates.clusterconfig.azure.com 2022-03-28T21:45:19Z
azureclusteridentityrequests.clusterconfig.azure.com 2022-03-28T21:45:19Z
azureextensionidentities.clusterconfig.azure.com 2022-03-28T21:45:19Z
buckets.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
connectedclusters.arc.azure.com 2022-03-28T21:45:19Z
customlocationsettings.clusterconfig.azure.com 2022-03-28T21:45:19Z
extensionconfigs.clusterconfig.azure.com 2022-03-28T21:45:19Z
fluxconfigs.clusterconfig.azure.com 2022-04-06T17:15:48Z
gitconfigs.clusterconfig.azure.com 2022-03-28T21:45:19Z
gitrepositories.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmcharts.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmreleases.helm.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmrepositories.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imagepolicies.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imagerepositories.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imageupdateautomations.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
kustomizations.kustomize.toolkit.fluxcd.io 2022-04-06T17:15:48Z
providers.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
receivers.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
volumesnapshotclasses.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
volumesnapshotcontents.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
volumesnapshots.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
websites.extensions.example.com 2022-03-30T23:42:32Z
قم بتأكيد التفاصيل الأخرى للتكوين باستخدام الأوامر التالية.
kubectl get fluxconfigs -A
NAMESPACE NAME SCOPE URL PROVISION AGE
cluster-config cluster-config cluster https://github.com/Azure/gitops-flux2-kustomize-helm-mt Succeeded 44m
kubectl get gitrepositories -A
NAMESPACE NAME URL READY STATUS AGE
cluster-config cluster-config https://github.com/Azure/gitops-flux2-kustomize-helm-mt True Fetched revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 45m
kubectl get helmreleases -A
NAMESPACE NAME READY STATUS AGE
cluster-config nginx True Release reconciliation succeeded 66m
cluster-config podinfo True Release reconciliation succeeded 66m
cluster-config redis True Release reconciliation succeeded 66m
kubectl get kustomizations -A
NAMESPACE NAME READY STATUS AGE
cluster-config cluster-config-apps True Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 65m
cluster-config cluster-config-infra True Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 65m
يتم نشر أحمال العمل من البيانات في مستودع Git.
kubectl get deploy -n nginx
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-ingress-controller 1/1 1 1 67m
nginx-ingress-controller-default-backend 1/1 1 1 67m
kubectl get deploy -n podinfo
NAME READY UP-TO-DATE AVAILABLE AGE
podinfo 1/1 1 1 68m
kubectl get all -n redis
NAME READY STATUS RESTARTS AGE
pod/redis-master-0 1/1 Running 0 68m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/redis-headless ClusterIP None <none> 6379/TCP 68m
service/redis-master ClusterIP 10.0.13.182 <none> 6379/TCP 68m
NAME READY AGE
statefulset.apps/redis-master 1/1 68m
التحكم في وحدات التحكم التي يتم نشرها مع ملحق نظام مجموعة Flux
بالنسبة لبعض السيناريوهات، قد ترغب في تغيير وحدات تحكم Flux المثبتة مع ملحق نظام مجموعة Flux.
sourceيتم تثبيت وحدات التحكم و helmkustomizeو و Flux notification بشكل افتراضي.
image-automation يجب تمكين وحدات التحكم وimage-reflector، المستخدمة لتحديث مستودع Git عند توفر صور حاوية جديدة، بشكل صريح.
يمكنك استخدام k8s-extension الأمر لتغيير الخيارات الافتراضية:
-
--config source-controller.enabled=<true/false>(افتراضيtrue) -
--config helm-controller.enabled=<true/false>(افتراضيtrue) -
--config kustomize-controller.enabled=<true/false>(افتراضيtrue) -
--config notification-controller.enabled=<true/false>(افتراضيtrue) -
--config image-automation-controller.enabled=<true/false>(افتراضيfalse) -
--config image-reflector-controller.enabled=<true/false>(افتراضيfalse)
على سبيل المثال، لتعطيل الإعلامات، يمكنك تعيين notification-controller.enabled إلى false.
يقوم هذا الأمر المثال بتثبيت image-reflector وحدات التحكم و image-automation . إذا تم إنشاء ملحق Flux تلقائيا عند إنشاء تكوين Flux لأول مرة، فإن اسم الملحق هو flux.
az k8s-extension create -g <cluster_resource_group> -c <cluster_name> -t <connectedClusters or managedClusters or provisionedClusters> --name flux --extension-type microsoft.flux --config image-automation-controller.enabled=true image-reflector-controller.enabled=true
استخدام هوية Kubelet كطريقة مصادقة لمجموعات AKS
بالنسبة لمجموعات AKS، أحد خيارات المصادقة التي يجب استخدامها هو هوية kubelet. بشكل افتراضي، تقوم AKS بإنشاء هوية kubelet الخاصة بها في مجموعة الموارد المدارة. إذا كنت تفضل ذلك، يمكنك استخدام هوية مدارة بواسطة kubelet تم إنشاؤها مسبقا. للقيام بذلك، أضف المعلمة --config useKubeletIdentity=true في وقت تثبيت ملحق Flux.
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true
إرشادات إلحاق Red Hat OpenShift
تتطلب وحدات تحكم Flux قيد سياق أمانغير مقتبس لتوفير الحجيرات بشكل صحيح على نظام المجموعة. يجب إضافة هذه القيود إلى نظام المجموعة قبل نشر الملحق microsoft.flux .
NS="flux-system"
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:kustomize-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:helm-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:source-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:notification-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-automation-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-reflector-controller
لمزيد من المعلومات حول إرشادات OpenShift لإلحاق Flux، راجع وثائق Flux.
العمل مع المعلمات
يدعم Flux العديد من المعلمات لتمكين السيناريوهات المختلفة. للحصول على وصف لجميع المعلمات التي يدعمها Flux، راجع وثائق Flux الرسمية. Flux في Azure لا يدعم جميع المعلمات حتى الآن. أخبرنا ما إذا كانت المعلمة التي تحتاجها مفقودة من تنفيذ Azure.
للحصول على معلومات حول المعلمات المتوفرة وكيفية استخدامها، راجع المعلمات المدعومة GitOps (Flux v2).
العمل مع مرجع مصادقة البيانات السرية المحلية
لاستخدام مرجع مصادقة سرية محلية، يجب أن يكون السر موجودا داخل نفس مساحة الاسم حيث fluxConfiguration يتم نشر . يجب أن يحتوي السر أيضا على جميع معلمات المصادقة المطلوبة للمصدر.
للحصول على معلومات حول إنشاء أسرار لمصادر مختلفة fluxConfiguration ، راجع البيانات السرية المحلية للمصادقة مع المصدر.
إدارة تكوين نظام المجموعة باستخدام وحدة تحكم Flux Kustomize
يتم تثبيت وحدة تحكم Flux Kustomize كجزء من microsoft.flux ملحق نظام المجموعة. يسمح بالإدارة التعريفية لتكوين نظام المجموعة ونشر التطبيق باستخدام بيانات Kubernetes المتزامنة من مستودع Git. يمكن أن تتضمن بيانات Kubernetes هذه ملف kustomize.yaml اختياريا.
للحصول على تفاصيل الاستخدام، راجع الموارد التالية:
- وحدة تحكم Flux Kustomize
- Kustomize reference documents
- ملف kustomization
- Kustomize project
- Kustomize guides
إدارة إصدارات مخطط Helm باستخدام وحدة تحكم Flux Helm
يتم تثبيت وحدة تحكم Flux Helm كجزء من microsoft.flux ملحق نظام المجموعة. يسمح لك بإدارة إصدارات مخطط Helm بشكل تعريفي باستخدام بيانات Kubernetes التي تحتفظ بها في مستودع Git الخاص بك.
للحصول على تفاصيل الاستخدام، راجع الموارد التالية:
تلميح
نظرا لكيفية تعامل Helm مع ملفات الفهرس، فإن معالجة مخططات Helm عملية مكلفة ويمكن أن يكون لها بصمة ذاكرة عالية. ونتيجة لذلك، يمكن أن يؤدي التوفيق بين عدد كبير من مخططات Helm في وقت واحد إلى ارتفاعات في الذاكرة وأخطاء OOMKilled . بشكل افتراضي، تعين وحدة التحكم حد الذاكرة الخاص بها عند 1Gi وطلبات الذاكرة الخاصة بها عند 64Mi. لزيادة هذا الحد والطلبات بسبب عدد كبير من تسويات مخطط Helm الكبيرة، قم بتشغيل الأمر التالي بعد تثبيت ملحق microsoft.flux:
az k8s-extension update -g <resource-group> -c <cluster-name> -n flux -t connectedClusters --config source-controller.resources.limits.memory=2Gi source-controller.resources.requests.memory=300Mi
استخدام مصدر GitRepository لمخططات Helm
إذا تم تخزين مخططات Helm في GitRepository المصدر الذي قمت بتكوينه كجزء من fluxConfigurations المورد، يمكنك الإشارة إلى أنه يجب استخدام المصدر المكون كمصدر لمخططات Helm عن طريق إضافة clusterconfig.azure.com/use-managed-source: "true" إلى ملف HelmRelease.yaml، كما هو موضح في المثال التالي:
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: somename
namespace: somenamespace
annotations:
clusterconfig.azure.com/use-managed-source: "true"
spec:
...
عند استخدام هذا التعليق التوضيحي، يتم تصحيح HelmRelease المنشور مع الإشارة إلى المصدر المكون. حاليا، المصدر فقط GitRepository مدعوم.
اكتشاف انحراف Helm
لا يتم تمكين الكشف عن الانجراف لإصدارات Helm بشكل افتراضي.
microsoft.flux بدءا من الإصدار 1.7.5، يمكنك تمكين اكتشاف انحراف Helm عن طريق تشغيل الأمر التالي:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true
استبدال متغير ما بعد الإنشاء الصارم
يتوفر استبدال متغير صارم بعد الإنشاء بدءا من microsoft.flux الإصدار 1.13.1.
لإنشاء ملحق Flux مع تمكين نهج استبدال صارم، قم بتشغيل هذا الأمر:
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config kustomize-controller.strict-substitution-mode=true
لتحديث ملحق Flux موجود لتمكين نهج استبدال صارم، قم بتشغيل هذا الأمر:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.strict-substitution-mode=true
تحجيم عمودي
يتوفر دعم التحجيم العمودي بدءا من microsoft.flux الإصدار 1.12.0. حاليا، يتم دعم المعلمات المحددة الموضحة في وثائق التحجيم العمودي Flux فقط في الأصل. قد يتم تطبيق معلمات أخرى يدويا على نظام المجموعة.
لزيادة حدود الموارد على وحدات التحكم بما يتجاوز الحدود الحالية، قم بتشغيل هذا الأمر، مع تغيير نوع المورد والقيمة المحددين حسب الحاجة:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.resources.limits.memory=2Gi kustomize-controller.resources.limits.cpu=2000m
لزيادة عدد التسويات التي يمكن إجراؤها بالتوازي، قم بتشغيل هذا الأمر:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.concurrent=6 kustomize-controller.requeue-dependency=50s
لتمكين الإنشاء في الذاكرة، قم بتشغيل هذا الأمر:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.enable-in-memory-build=true
ساعة Helm OOM
بدءا من microsoft.flux الإصدار 1.7.5]، يمكنك تمكين ساعة Helm OOM. لمزيد من المعلومات، راجع تمكين Helm بالقرب من الكشف عن OOM.
تأكد من مراجعة استراتيجيات المعالجة المحتملة وتطبيقها حسب الحاجة عند تمكين هذه الميزة.
لتمكين مراقبة OOM، قم بتشغيل الأمر التالي:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.outOfMemoryWatch.enabled=true helm-controller.outOfMemoryWatch.memoryThreshold=70 helm-controller.outOfMemoryWatch.interval=700ms
إذا لم تحدد قيم memoryThreshold و outOfMemoryWatch، يتم تعيين حد الذاكرة الافتراضي إلى 95%، مع الفاصل الزمني للتحقق من تعيين استخدام الذاكرة إلى 500 مللي ثانية.
معلمات مستوى السجل القابلة للتكوين
بشكل افتراضي، log-level يتم تعيين لوحدات تحكم Flux إلى info.
microsoft.flux بدءا من الإصدار 1.8.3، يمكنك تعديل هذه الإعدادات الافتراضية k8s-extension باستخدام الأمر كما يلي:
--config helm-controller.log-level=<info/error/debug>
--config source-controller.log-level=<info/error/debug>
--config kustomize-controller.log-level=<info/error/debug>
--config notification-controller.log-level=<info/error/debug>
--config image-automation-controller.log-level=<info/error/debug>
--config image-reflector-controller.log-level=<info/error/debug>
القيم الصالحة هي debugأو infoأو error. على سبيل المثال، لتغيير log-level ل source-controller و kustomize-controller، استخدم الأمر التالي:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config source-controller.log-level=error kustomize-controller.log-level=error
بدءا من microsoft.flux الإصدار 1.9.1، fluxconfig-agent ومستويات fluxconfig-controller الدعم info والسجل error (ولكن ليس debug). لتعديل هذه الخيارات، استخدم k8s-extension الأمر :
--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>
على سبيل المثال، يتغير log-level الأمر التالي إلى error:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config fluxconfig-agent.log-level=error fluxconfig-controller.log-level=error
تكوين التعليق التوضيحي على قرون ملحق Flux
عند تكوين حل آخر غير Azure Firewall، تكون قواعد الشبكة وFQDN/التطبيق مطلوبة لمجموعة AKS.
microsoft.flux بدءا من الإصدار 1.11.1، يمكن الآن لوحدات تحكم Flux تعيين التعليق التوضيحي kubernetes.azure.com/set-kube-service-host-fqdn في مواصفات الجراب الخاصة بها. يسمح هذا التعليق التوضيحي بحركة المرور إلى اسم مجال خادم API حتى عندما يكون جدار حماية الطبقة 7 موجودا، ما يسهل عمليات النشر أثناء تثبيت الملحق. لتكوين هذا التعليق التوضيحي عند استخدام ملحق Flux، استخدم الأوامر التالية.
# Create flux extension with annotation
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config setKubeServiceHostFqdn=true
# Update flux extension with annotation
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config setKubeServiceHostFqdn=true
هوية حمل العمل في مجموعات Kubernetes الممكنة بواسطة Arc ومجموعات AKS
يمكنك إنشاء تكوينات Flux في مجموعات مع تمكين هوية حمل العمل. يتم دعم تكوينات Flux في مجموعات AKS مع تمكين هوية حمل العمل بدءا microsoft.flux من الإصدار 1.8.0، وفي المجموعات الممكنة بواسطة Azure Arc مع تمكين هوية حمل العمل بدءا microsoft.flux من v.1.15.1.
لإنشاء تكوينات Flux في مجموعات مع تمكين هوية حمل العمل، قم بتعديل الملحق كما هو موضح في الخطوات التالية.
استرداد عنوان URL لمصدر OIDC لنظام مجموعة AKS أو مجموعة Kubernetes الممكنة بواسطة Arc.
إنشاء هوية مدارة وملاحظة معرف العميل ومعرف المستأجر.
إنشاء ملحق flux على نظام المجموعة، باستخدام الأمر التالي:
az k8s-extension create --resource-group <resource_group_name> --cluster-name <aks_cluster_name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config workloadIdentity.enable=true workloadIdentity.azureClientId=<user_assigned_client_id> workloadIdentity.azureTenantId=<tenant_id>إنشاء بيانات اعتماد هوية موحدة لنظام مجموعة AKS أو مجموعة Kubernetes الممكنة بواسطة Arc. على سبيل المثال:
# For source-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"source-controller" --audience api://AzureADTokenExchange # For image-reflector controller if you plan to enable it during extension creation, it is not deployed by default az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-controller" --audience api://AzureADTokenExchange # For image-automation controller if you plan to enable it during extension creation, it is not deployed by default az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-automation-controller" --audience api://AzureADTokenExchange # For kustomize-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"kustomize-controller" --audience api://AzureADTokenExchangeتأكد من أن المورد المخصص الذي يحتاج إلى استخدام قيمة مجموعات
.spec.providerهوية حمل العمل فيazureالبيان. على سبيل المثال:apiVersion: source.toolkit.fluxcd.io/v1 kind: HelmRepository metadata: name: acrrepo spec: interval: 10m0s type: <helm_repository_type> url: <helm_repository_link> provider: azureتأكد من توفير أذونات مناسبة لهوية حمل العمل للمورد الذي تريد سحب وحدة تحكم المصدر أو وحدة تحكم عاكس الصور. على سبيل المثال، إذا كنت تستخدم Azure Container Registry، فتأكد من تطبيق إما
Container Registry Repository Reader( للسجلات التي تدعم ABAC) أوAcrPull(لسجلات غير ABAC).
استخدام هوية حمل العمل مع Azure DevOps
لاستخدام هوية حمل العمل مع Azure DevOps، قم بتمكين المتطلبات الأساسية التالية:
- تأكد من أن مؤسسة Azure DevOps متصلة ب Microsoft Entra.
- تأكد من إعداد هوية حمل العمل بشكل صحيح على نظام المجموعة الخاص بك، باتباع الخطوات الخاصة بنظام مجموعات AKS أو مجموعات Kubernetes الممكنة بواسطة Arc.
- قم بإنشاء هوية مدارة وبيانات اعتماد موحدة، وتمكين هوية حمل العمل على وحدات تحكم Flux لملحق Flux، كما هو موضح سابقا في هذا القسم.
- أضف الهوية المدارة إلى مؤسسة Azure DevOps كمستخدم، مع التأكد من أن لديها أذونات للوصول إلى مستودع Azure DevOps. للحصول على خطوات مفصلة، راجع استخدام أساسيات الخدمة والهويات المدارة في Azure DevOps.
بعد ذلك، قم بتعيين موفر تكوين gitRepository flux إلى "azure" لتمكين المصادقة خالية من بيانات الاعتماد. يمكن تكوين هذا باستخدام Bicep أو قوالب ARM أو Azure CLI. على سبيل المثال، لتعيين الموفر باستخدام Azure CLI، قم بتشغيل الأمر التالي:
az k8s-configuration flux update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --provider "azure"
إهمال SSH-RSA Azure DevOps
أعلن Azure DevOps عن إهمال SSH-RSA كطريقة تشفير مدعومة للاتصال بمستودعات Azure باستخدام SSH. إذا كنت تستخدم مفاتيح SSH للاتصال بمستودعات Azure في تكوينات Flux، نوصي بالانتقال إلى مفاتيح RSA-SHA2-256 أو RSA-SHA2-512 أكثر أمانا.
عند تسوية تكوينات Flux، قد ترى رسالة خطأ تشير إلى أن ssh-rsa على وشك الإهمال أو غير مدعوم. إذا كان الأمر كذلك، فقم بتحديث خوارزمية مفتاح المضيف المستخدمة لإنشاء اتصالات SSH بمستودعات Azure DevOps من Flux source-controller و image-automation-controller (إذا تم تمكينها) باستخدام az k8s-extension update الأمر . على سبيل المثال:
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config source-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config image-automation-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
لمزيد من المعلومات حول إهمال Azure DevOps SSH-RSA، راجع نهاية دعم SSH-RSA ل Azure Repos.
حذف تكوين Flux وملحقه
استخدم الأوامر التالية لحذف تكوينات Flux الخاصة بك، وإذا رغبت في ذلك، ملحق Flux نفسه.
حذف تكوينات Flux
يحذف الأمر التالي كلا من fluxConfigurations المورد في Azure وعناصر تكوين Flux في نظام المجموعة. نظرا لأن تكوين Flux تم إنشاؤه في الأصل باستخدام prune=true معلمة kustomization، تتم إزالة جميع الكائنات التي تم إنشاؤها في نظام المجموعة استنادا إلى البيانات في مستودع Git عند إزالة تكوين Flux. ومع ذلك، لا يزيل هذا الأمر ملحق Flux نفسه.
az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes
حذف ملحق نظام مجموعة Flux
عند حذف ملحق Flux، تتم إزالة كل من microsoft.flux مورد الملحق في Azure وعناصر ملحق Flux في نظام المجموعة.
هام
تأكد من حذف كافة تكوينات Flux في نظام المجموعة قبل حذف ملحق Flux. قد يؤدي حذف الملحق دون حذف تكوينات Flux أولا إلى ترك نظام المجموعة في حالة غير مستقرة.
إذا تم إنشاء ملحق Flux تلقائيا عند إنشاء تكوين Flux لأول مرة، فإن اسم الملحق هو flux.
az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes
تلميح
تستخدم -t connectedClustersهذه الأوامر ، وهو مناسب لمجموعة Kubernetes الممكنة في Azure Arc. بالنسبة إلى نظام مجموعة AKS، استخدم -t managedClusters بدلا من ذلك.
الخطوات التالية
- اقرأ المزيد حول التكوينات وGitOps.
- تعرف على كيفية استخدام نهج Azure لفرض GitOps على نطاق واسع.
- تعرف على مراقبة حالة GitOps (Flux v2) ونشاطه.