نشر مخططات Helm باستخدام GitOps على مجموعة Kubernetes ممكنة بواسطة Azure Arc

ملاحظة

هذه المقالة مخصصة ل GitOps مع Flux v1. GitOps مع Flux v2 متاح الآن في المعاينة لمجموعات Kubernetes و Azure Kubernetes Service (AKS) التي تدعم Azure Arc ؛ انتقل إلى البرنامج التعليمي ل GitOps مع Flux v2.

Helm هي أداة تعبئة مفتوحة المصدر تساعدك على تثبيت وإدارة دورة حياة تطبيقات Kubernetes. على غرار مديري حزم Linux مثل APT و Yum ، يتم استخدام Helm لإدارة مخططات Kubernetes ، وهي حزم من موارد Kubernetes التي تم تكوينها مسبقا.

توضح لك هذه المقالة كيفية تكوين Helm واستخدامه مع Kubernetes الذي تم تمكين Azure Arc.

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

نظرة عامة على استخدام GitOps و Helm مع Kubernetes التي تدعم Azure Arc

يوفر مشغل Helm امتدادا ل Flux يقوم بأتمتة إصدارات Helm Chart. يتم وصف إصدار مخطط Helm عبر مورد مخصص Kubernetes يسمى HelmRelease. يقوم Flux بمزامنة هذه الموارد من Git إلى المجموعة، بينما يتأكد عامل تشغيل Helm من إصدار مخططات Helm كما هو محدد في الموارد.

يتم تنظيم مستودع المثال المستخدم في هذه المقالة بالطريقة التالية:

├── charts
│   └── azure-arc-sample
│       ├── Chart.yaml
│       ├── templates
│       │   ├── NOTES.txt
│       │   ├── deployment.yaml
│       │   └── service.yaml
│       └── values.yaml
└── releases
    └── app.yaml

في Git repo ، لدينا دليلان: أحدهما يحتوي على مخطط Helm والآخر يحتوي على تكوين الإصدارات. في الدليل releases ، يحتوي على app.yaml تكوين HelmRelease ، الموضح أدناه:

apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: azure-arc-sample
  namespace: arc-k8s-demo
spec:
  releaseName: arc-k8s-demo
  chart:
    git: https://github.com/Azure/arc-helm-demo
    ref: master
    path: charts/azure-arc-sample
  values:
    serviceName: arc-k8s-demo

يحتوي تكوين إصدار Helm على الحقول التالية:

الحقل الوصف
metadata.name حقل إلزامي. يحتاج إلى اتباع اصطلاحات تسمية Kubernetes.
metadata.namespace حقل اختياري. يحدد مكان إنشاء الإصدار.
spec.releaseName حقل اختياري. إذا لم يتم توفيره ، فسيكون $namespace-$nameاسم الإصدار .
spec.chart.path الدليل الذي يحتوي على المخطط (بالنسبة إلى جذر المستودع).
spec.values تخصيصات المستخدم لقيم المعلمات الافتراضية من المخطط نفسه.

ستتجاوز الخيارات المحددة في HelmRelease spec.values الخيارات المحددة من values.yaml مصدر المخطط.

يمكنك معرفة المزيد عن HelmRelease في وثائق مشغل Helm الرسمية.

إنشاء تكوين

باستخدام ملحق Azure CLI ل k8s-configuration، قم بربط مجموعتك المتصلة بمستودع Git المثالي. امنح هذا التكوين الاسم وانشر عامل تشغيل Flux في arc-k8s-demo مساحة الاسمazure-arc-sample.

az k8s-configuration create --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name flux --operator-namespace arc-k8s-demo --operator-params='--git-readonly --git-path=releases' --enable-helm-operator --helm-operator-chart-version='1.2.0' --helm-operator-params='--set helm.versions=v3' --repository-url https://github.com/Azure/arc-helm-demo.git --scope namespace --cluster-type connectedClusters

معلمات التكوين

لتخصيص إنشاء التكوين، تعرف على معلمات إضافية.

التحقق من صحة التكوين

باستخدام Azure CLI، تحقق من إنشاء التكوين بنجاح.

az k8s-configuration show --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters

يتم تحديث مورد التكوين بحالة التوافق والرسائل ومعلومات تصحيح الأخطاء.

{
  "complianceStatus": {
    "complianceState": "Installed",
    "lastConfigApplied": "2019-12-05T05:34:41.481000",
    "message": "{\"OperatorMessage\":null,\"ClusterState\":null}",
    "messageLevel": "3"
  },
  "enableHelmOperator": "True",
  "helmOperatorProperties": {
    "chartValues": "--set helm.versions=v3",
    "chartVersion": "1.2.0"
  },
  "id": "/subscriptions/57ac26cf-a9f0-4908-b300-9a4e9a0fb205/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/azure-arc-sample",
  "name": "azure-arc-sample",
  "operatorInstanceName": "flux",
  "operatorNamespace": "arc-k8s-demo",
  "operatorParams": "--git-readonly --git-path=releases",
  "operatorScope": "namespace",
  "operatorType": "Flux",
  "provisioningState": "Succeeded",
  "repositoryPublicKey": "",
  "repositoryUrl": "https://github.com/Azure/arc-helm-demo.git",
  "resourceGroup": "AzureArcTest",
  "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}

التحقق من صحة الطلب

قم بتشغيل الأمر التالي وانتقل إليه localhost:8080 على المستعرض للتحقق من تشغيل التطبيق.

kubectl port-forward -n arc-k8s-demo svc/arc-k8s-demo 8080:8080

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

تطبيق تكوينات الكتلة على نطاق واسع باستخدام Azure Policy.