التشغيل السريع: التطوير على خدمة Azure Kubernetes (AKS) باستخدام Helm

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

في هذا التشغيل السريع، يمكنك استخدام Helm لحزم وتشغيل تطبيق على AKS. للحصول على معلومات حول تثبيت تطبيق موجود باستخدام Helm، راجع تثبيت التطبيقات الموجودة باستخدام Helm في AKS.

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

إنشاء سجل حاوية Azure

تحتاج إلى تخزين صور الحاوية الخاصة بك في Azure Container Registry (ACR) لتشغيل التطبيق الخاص بك في نظام مجموعة AKS باستخدام Helm. يجب أن يكون اسم السجل الخاص بك فريدا داخل Azure وأن يحتوي على 5-50 حرفا أبجديا رقميا. يسمح بالأحرف الصغيرة فقط. SKU الأساسية هي نقطة الدخول الأمثل من حيث التكلفة لأغراض التنمية التي توفر التوازن بين التخزين والإنتاجية.

  1. إنشاء مجموعة موارد Azure باستخدام الأمر az group create . في المثال التالي، سيتم إنشاء مجموعة موارد باسم myResourceGroup في موقع eastus.

    az group create --name myResourceGroup --location eastus
    
  2. إنشاء Azure Container Registry باسم فريد عن طريق استدعاء الأمر az acr create . ينشئ المثال التالي ACR باسم myhelmacr باستخدام Basic SKU.

    az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
    

    يجب أن يبدو الإخراج مشابها لإخراج المثال المكثف التالي. دون قيمة loginServer الخاصة بك ل ACR لاستخدامها في خطوة لاحقة.

    {
      "adminUserEnabled": false,
      "creationDate": "2023-12-26T22:36:23.998425+00:00",
      "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myhelmacr",
      "location": "eastus",
      "loginServer": "myhelmacr.azurecr.io",
      "name": "myhelmacr",
      "networkRuleSet": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sku": {
        "name": "Basic",
        "tier": "Basic"
      },
      "status": null,
      "storageAccount": null,
      "tags": {},
      "type": "Microsoft.ContainerRegistry/registries"
    }
    

إنشاء نظام مجموعة AKS

يحتاج نظام مجموعة AKS الجديد إلى الوصول إلى ACR لسحب صور الحاوية وتشغيلها.

  • إنشاء نظام مجموعة AKS باستخدام الأمر az aks create مع المعلمة --attach-acr لمنح نظام المجموعة حق الوصول إلى ACR الخاص بك. ينشئ المثال التالي مجموعة AKS باسم myAKSCluster ويمنحها حق الوصول إلى myhelmacr ACR. تأكد من استبدال myhelmacr باسم ACR الخاص بك.

    az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
    

قم بالاتصال بمجموعة AKS

لتوصيل مجموعة Kubernetes محليا، يمكنك استخدام عميل سطر أوامر Kubernetes، kubectl. kubectl سيكون مثبتاً بالفعل في حال كنت تستخدم Azure Cloud Shell.

  1. تثبيت kubectl محليا باستخدام الأمر az aks install-cli .

    az aks install-cli
    
  2. قم بتكوين kubectl للاتصال بكتلة Kubernetes مستخدماً الأمر az aks get-credentials. يحصل الأمر التالي على بيانات اعتماد لمجموعة AKS المسماة myAKSCluster في myResourceGroup.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

قم بتنزيل نموذج الطلب

يستخدم هذا التشغيل السريع تطبيق Azure Vote.

  1. استنساخ التطبيق من GitHub باستخدام git clone الأمر .

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. انتقل إلى azure-vote الدليل باستخدام cd الأمر .

    cd azure-voting-app-redis/azure-vote/
    

إنشاء نموذج التطبيق ودفعه إلى ACR

  • أنشئ الصورة وادفعها إلى ACR باستخدام الأمر az acr build . ينشئ المثال التالي صورة تسمى azure-vote-front:v1 ويدفعها إلى myhelmacr ACR. تأكد من استبدال myhelmacr باسم ACR الخاص بك.

    az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
    

إشعار

يمكنك أيضا استيراد مخططات Helm إلى ACR الخاص بك. لمزيد من المعلومات، راجع «Push and pull Helm charts» إلى سجل حاويات Azure Container Registry.

إنشاء مخطط Helm

  1. أنشئ مخطط Helm باستخدام الأمر helm create.

    helm create azure-vote-front
    
  2. قم بتحديث azure-vote-front/Chart.yaml لإضافة تبعية لمخطط redis من https://charts.bitnami.com/bitnami مستودع المخطط وتحديثه appVersion إلى v1، كما هو موضح في المثال التالي:

    إشعار

    تم اختبار إصدارات صورة الحاوية الموضحة في هذا الدليل للعمل مـع هذا المثال ولكن قد لا تكون أحدث إصدار متوفر.

    apiVersion: v2
    name: azure-vote-front
    description: A Helm chart for Kubernetes
    
    dependencies:
      - name: redis
        version: 17.3.17
        repository: https://charts.bitnami.com/bitnami
    
    ...
    # This is the version number of the application being deployed. This version number should be
    # incremented each time you make changes to the application.
    appVersion: v1
    
  3. قم بتحديث تبعيات مخطط Helm باستخدام helm dependency update الأمر .

    helm dependency update azure-vote-front
    
  4. تحديث azure-vote-front/values.yaml بالتغييرات التالية.

    • إضافة قسم redis لتعيين تفاصيل الصورة ومنفذ الحاوية واسم التوزيع.
    • إضافة backendName لربط الجزء الأمامي إلى توزيع redis.
    • قم بتغيير مستودع الصور إلى <loginServer>/azure-vote-front.
    • قم بتغيير علامة الصورة إلى v1.
    • قم بتغيير نوع الخدمة إلى LoadBalancer.

    على سبيل المثال:

    replicaCount: 1
    backendName: azure-vote-backend-master
    redis:
      image:
        registry: mcr.microsoft.com
        repository: oss/bitnami/redis
        tag: 6.0.8
      fullnameOverride: azure-vote-backend
      auth:
        enabled: false
    
    image:
      repository: myhelmacr.azurecr.io/azure-vote-front
      pullPolicy: IfNotPresent
      tag: "v1"
    ...
    service:
      type: LoadBalancer
      port: 80
    ...
    
  5. أضف قسما env إلى azure-vote-front/templates/deployment.yaml لتمرير اسم توزيع redis .

    ...
          containers:
            - name: {{ .Chart.Name }}
              securityContext:
                {{- toYaml .Values.securityContext | nindent 12 }}
              image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
              imagePullPolicy: {{ .Values.image.pullPolicy }}
              env:
              - name: REDIS
                value: {{ .Values.backendName }}
    ...
    

تشغيل مخطط Helm

  1. ثم بتثبيت تطبيقك باستخدام مخطط Helm باستخدام الأمر helm install.

    helm install azure-vote-front azure-vote-front/
    
  2. قد يستغرق الأمر بضع دقائق لإرجاع الخدمة لعنوان IP عام. راقب التقدم باستخدام الأمر ⁧kubectl get service⁩ مع الوسيطة --watch.

    kubectl get service azure-vote-front --watch
    

    عندما تكون الخدمة جاهزة، EXTERNAL-IP تتغير القيمة من <pending> إلى عنوان IP. اضغط CTRL+C لإيقاف kubectl عملية المراقبة.

      NAME               TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
      azure-vote-front   LoadBalancer   10.0.18.228   <pending>       80:32021/TCP   6s
      ...
      azure-vote-front   LoadBalancer   10.0.18.228   52.188.140.81   80:32021/TCP   2m6s
    
  3. انتقل إلى موازن التحميل للتطبيق في مستعرض باستخدام <EXTERNAL-IP> لرؤية نموذج التطبيق.

قم بحذف نظام المجموعة

  • قم بإزالة مجموعة الموارد ومجموعة AKS وسجل حاوية Azure وصور الحاوية المخزنة في ACR وجميع الموارد ذات الصلة باستخدام الأمر az group delete مع --yes المعلمة لتأكيد الحذف والمعلمة --no-wait للعودة إلى موجه الأوامر دون انتظار اكتمال العملية.

    az group delete --name myResourceGroup --yes --no-wait
    

إشعار

إذا قمت بإنشاء نظام مجموعة AKS الخاص بك بهوية مدارة معينة من قبل النظام (خيار الهوية الافتراضي في هذا التشغيل السريع)، تتم إدارة الهوية بواسطة النظام الأساسي ولا تتطلب إزالة.

إذا قمت بإنشاء نظام مجموعة AKS الخاص بك باستخدام كيان خدمة، فلن تتم إزالة كيان الخدمة عند حذف نظام المجموعة. لإزالة كيان الخدمة، راجع اعتبارات كيان خدمة AKS والحذف.

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

لمزيد من المعلومات حول استخدام Helm، راجع وثائق Helm.