البرنامج التعليمي: نشر التطبيقات باستخدام 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
مجموعة 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/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
، ،podinfo
redis
: مساحات الأسماء لأحمال العمل الموضحة في البيانات في مستودع Git.
لتأكيد مساحات الأسماء، قم بتشغيل الأمر التالي:
kubectl get namespaces
flux-system
تحتوي مساحة الاسم على كائنات ملحق Flux:
- وحدات تحكم Azure Flux:
fluxconfig-agent
،fluxconfig-controller
- وحدات تحكم OSS Flux:
source-controller
، ،kustomize-controller
،helm-controller
notification-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
يتم تثبيت وحدات التحكم و helm
kustomize
و و 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/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 كما هو موضح في الخطوات التالية.
استرداد عنوان URL لمصدر OIDC لنظام المجموعة الخاص بك.
إنشاء هوية مدارة وملاحظة معرف العميل الخاص بها.
إنشاء ملحق 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>
إنشاء بيانات اعتماد هوية موحدة. على سبيل المثال:
# 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
تأكد من أن المورد المخصص الذي يحتاج إلى استخدام قيمة مجموعات
.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
تأكد من توفير أذونات مناسبة لهوية حمل العمل للمورد الذي تريد سحب وحدة تحكم المصدر أو وحدة تحكم عاكس الصور. على سبيل المثال، إذا كنت تستخدم 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
بدلا من ذلك.
الخطوات التالية
- اقرأ المزيد حول التكوينات وGitOps.
- تعرف على كيفية استخدام نهج Azure لفرض GitOps على نطاق واسع.
- تعرف على مراقبة حالة GitOps (Flux v2) ونشاطه.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ