البرنامج التعليمي: نشر التطبيقات باستخدام GitOps مع Flux v2

يصف هذا البرنامج التعليمي كيفية استخدام 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.flux الملحق الإصدار الرئيسي 1.0.0. يتضمن ذلك ميزة الإيجار المتعدد. إذا كان لديك تكوينات GitOps Flux v2 موجودة تستخدم إصدارا سابقا من microsoft.flux الملحق، يمكنك الترقية إلى أحدث إصدار يدويا باستخدام Azure CLI: az k8s-extension create -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux --extension-type microsoft.flux -t <CLUSTER_TYPE> (استخدم -t connectedClusters لمجموعات Arc ومجموعات -t managedClusters AKS).

المتطلبات الأساسية

لنشر التطبيقات باستخدام GitOps مع Flux v2، تحتاج إلى:

بالنسبة لمجموعات Kubernetes الممكنة في Azure Arc

بالنسبة لمجموعات خدمة 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/extensions
    • Microsoft.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 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 على infra kustomization. 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 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 اختياريا.

للحصول على تفاصيل الاستخدام، راجع الموارد التالية:

إدارة إصدارات مخطط 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/v2beta1
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 

ساعة 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

إهمال Azure DevOps SSH-RSA

أعلن 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.

هوية حمل العمل في مجموعات AKS

microsoft.flux بدءا من الإصدار 1.8.0، يمكنك إنشاء تكوينات Flux في مجموعات AKS مع تمكين هوية حمل العمل. للقيام بذلك، قم بتعديل ملحق flux كما هو موضح في الخطوات التالية.

  1. استرداد عنوان URL لمصدر OIDC لنظام المجموعة الخاص بك.

  2. إنشاء هوية مدارة وملاحظة معرف العميل الخاص بها.

  3. إنشاء ملحق 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>
    
  4. إنشاء بيانات اعتماد هوية موحدة. على سبيل المثال:

    # For source-controller
    az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_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 "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-controller" --audience api://AzureADTokenExchange
    
  5. تأكد من أن المورد المخصص الذي يحتاج إلى استخدام قيمة مجموعات .spec.provider هوية حمل العمل في azure البيان. على سبيل المثال:

    apiVersion: source.toolkit.fluxcd.io/v1beta2
    kind: HelmRepository
    metadata:
      name: acrrepo
    spec:
      interval: 10m0s
      type: <helm_repository_type>
      url: <helm_repository_link>
      provider: azure
    
  6. تأكد من توفير أذونات مناسبة لهوية حمل العمل للمورد الذي تريد سحب وحدة تحكم المصدر أو وحدة تحكم عاكس الصور. على سبيل المثال، إذا كنت تستخدم Azure Container Registry، AcrPull فإن الأذونات مطلوبة.

حذف تكوين 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 بدلا من ذلك.

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