التشغيل السريع: نشر مضيف حاوية Azure Linux لمجموعة AKS باستخدام قالب ARM

ابدأ مع مضيف حاوية Azure Linux باستخدام قالب Azure Resource Manager (ARM) لنشر مجموعة مضيف حاوية Azure Linux. بعد تثبيت المتطلبات الأساسية، ستقوم بإنشاء زوج مفاتيح SSH، ومراجعة القالب، ونشر القالب والتحقق من صحته، ثم نشر تطبيق.

قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.

هام

اعتبارا من 30 نوفمبر 2025، لم تعد خدمة Azure Kubernetes Service (AKS) تدعم أو توفر تحديثات أمان ل Azure Linux 2.0. صورة عقدة Azure Linux 2.0 مجمدة عند إصدار 202512.06.0. ابتداء من 31 مارس 2026، سيتم إزالة صور العقد، ولن تتمكن من توسيع مجموعات العقد الخاصة بك. انتقل إلى نسخة Azure Linux المدعومة عن طريق ترقية مجموعات العقد إلى نسخة Kubernetes مدعومة أو الانتقال إلى osSku AzureLinux3. لمزيد من المعلومات، راجع التقاعد: تجمعات عقد Azure Linux 2.0 على AKS.

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

  • إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

  • استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع تشغيل سريع لـ Azure Cloud Shell - Bash.

  • إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.

    • إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.

    • عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.

    • يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.

  • إذا لم يكن لديك kubectl مثبت بالفعل، فقم بتثبيته من خلال Azure CLI باستخدام az aks install-cli أو اتبع الإرشادات الأولية.

  • لإنشاء نظام مجموعة AKS باستخدام قالب Resource Manager، ستقدم مفتاح عمومي SSH. إذا كنت بحاجة إلى هذا المورد، راجع القسم التالي؛ وإلا فانتقل إلى قسم مراجعة القالب.

  • توفر الهوية التي تستخدمها لإنشاء نظام مجموعتك الحد الأدنى المناسب من الأذونات. لمزيد من المعلومات حول الوصول والهوية ل AKS، راجع خيارات الوصول والهوية لخدمة Azure Kubernetes (AKS).

  • لتوزيع ملف Bicep أو قالب ARM، يلزم الوصول إلى الكتابة على الموارد التي تستخدمها والوصول إلى جميع العمليات على نوع المورد Microsoft.Resources/deployments. على سبيل المثال، لاستخدام جهاز ظاهري، تحتاج إلى أذونات Microsoft.Compute/virtualMachines/write and Microsoft.Resources/deployments/*. للحصول على قائمة بالأدوار والأذونات، انظر أدوار Azure المضمنة.

أنشئ مفتاح مزدوج SSH

للدخول إلى عقد AKS، اتصل مستخدماً مفتاح إقران SSH (عام وخاص) الذي أنشأته مستخدماً ssh-keygenالأمر. سيتم إنشاء هذه الملفات افتراضياً في ~/.ssh directory. يؤدي تشغيل الأمر إلى ssh-keygen الكتابة فوق أي زوج مفاتيح SSH بنفس الاسم الموجود بالفعل في الموقع المحدد.

  1. انتقل إلى https://shell.azure.comلفتح Cloud Shell في متصفحك.

  2. تشغيل الأمر ssh-keygen. ينشأ النموذج التالي مفتاح مزدوج لـ SSH يستخدم تشفير RSA وطول يساوي 4096 بت:

    ssh-keygen -t rsa -b 4096
    

للاطلاع على معلومات أكثر حول إنشاء مفتاح SSH، راجع إنشاء وإدارة مفاتيح SSH للمصادقة في Azure.

مراجعة القالب

يستخدم النشر التالي قالب ARM من قوالب Azure Quickstart.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "parameters": {
    "clusterName": {
      "type": "string",
      "defaultValue": "azurelinuxakscluster",
      "metadata": {
        "description": "The name of the Managed Cluster resource."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location of the Managed Cluster resource."
      }
    },
    "dnsPrefix": {
      "type": "string",
      "metadata": {
        "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
      }
    },
    "osDiskSizeGB": {
      "type": "int",
      "defaultValue": 0,
      "minValue": 0,
      "maxValue": 1023,
      "metadata": {
        "description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
      }
    },
    "agentCount": {
      "type": "int",
      "defaultValue": 3,
      "minValue": 1,
      "maxValue": 50,
      "metadata": {
        "description": "The number of nodes for the cluster."
      }
    },
    "agentVMSize": {
      "type": "string",
      "defaultValue": "Standard_DS2_v2",
      "metadata": {
        "description": "The size of the Virtual Machine."
      }
    },
    "linuxAdminUsername": {
      "type": "string",
      "metadata": {
        "description": "User name for the Linux Virtual Machines."
      }
    },
    "sshRSAPublicKey": {
      "type": "string",
      "metadata": {
        "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'"
      }
    },
    "osType": {
      "type": "string",
      "defaultValue": "Linux",
      "allowedValues": [
        "Linux"
      ],
      "metadata": {
        "description": "The type of operating system."
      }
    },
    "osSKU": {
      "type": "string",
      "defaultValue": "AzureLinux",
      "allowedValues": [
        "AzureLinux",
        "AzureLinux3",
        "Ubuntu",
        "Ubuntu2204",
        "Ubuntu2404"
      ],
      "metadata": {
        "description": "The Linux SKU to use."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      "apiVersion": "2021-03-01",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "properties": {
        "dnsPrefix": "[parameters('dnsPrefix')]",
        "agentPoolProfiles": [
          {
            "name": "agentpool",
            "mode": "System",
            "osDiskSizeGB": "[parameters('osDiskSizeGB')]",
            "count": "[parameters('agentCount')]",
            "vmSize": "[parameters('agentVMSize')]",
            "osType": "[parameters('osType')]",
            "osSKU": "[parameters('osSKU')]",
            "storageProfile": "ManagedDisks"
          }
        ],
        "linuxProfile": {
          "adminUsername": "[parameters('linuxAdminUsername')]",
          "ssh": {
            "publicKeys": [
              {
                "keyData": "[parameters('sshRSAPublicKey')]"
              }
            ]
          }
        }
      },
      "identity": {
          "type": "SystemAssigned"
      }
    }
  ],
  "outputs": {
    "controlPlaneFQDN": {
      "type": "string",
      "value": "[reference(parameters('clusterName')).fqdn]"
    }
  }
}

لإضافة Azure Linux إلى قالب ARM موجود، تحتاج إلى إضافة "osSKU": "AzureLinux""mode": "System"agentPoolProfiles و وتعيين apiVersion إلى 2021-03-01 أو أحدث ()."apiVersion": "2021-03-01"

نشر القالب

  1. حدد الزر التالي لتسجيل الدخول إلى Azure وفتح قالب.

    زر لنشر قالب Resource Manager إلى Azure.

  2. حدد القيم التالية أو أدخلها.

    خلال هذا التشغيل السريع، اترك القيم الافتراضية OS Disk Size GBوAgent Count وAgent VM Size وOS Type وKubernetes Version. أدخل القيم الخاصة بك لمعلمات القالب التالية:

    • الاشتراك: تحديد اشتراك Azure.
    • مجموعة الموارد: حدد Create new. أدخل اسما فريدا لمجموعة الموارد، مثل testAzureLinuxResourceGroup، ثم اختر OK.
    • الموقع: حدد موقعاً مثل شرق الولايات المتحدة.
    • اسم نظام المجموعة: أدخل اسما فريدا لمجموعة AKS، مثل testAzureLinuxCluster.
    • بادئة DNS: أدخل بادئة DNS فريدة لنظام المجموعة، مثل myAzureLinuxCluster.
    • اسم مستخدم مسؤول Linux: أدخل اسم مستخدم للاتصال باستخدام SSH، مثل azureUser.
    • المفتاح العام لSSH RSA : انسخ والصق الجزءالعام من مفتاح إقرانك SSH (افتراضياً، محتويات~/.ssh/id_rsa.pub).
  3. حدد "استعراض + إنشاء".

يستغرق الأمر بضع دقائق لإنشاء نظام مجموعة مضيف حاوية Azure Linux. انتظر حتى نجاح نشر نظام المجموعة قبل انتقالك إلى الخطوة التالية.

التحقُّق من صحة عملية النشر

الاتصال بنظام المجموعة

لإدارة نظام مجموعة Kubernetes، استخدم سطر أوامر العميلkubectl.

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

    az aks install-cli
    
  2. قم بتكوين kubectl للاتصال بنظام مجموعة Kubernetes باستخدام أمر az aks get-credentials. هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها.

    az aks get-credentials --resource-group testAzureLinuxResourceGroup --name testAzureLinuxCluster
    
  3. تحقق من الاتصال بالمجموعة باستخدام kubectl get الأمر . يعمل هذا الأمر على استرجاع قائمة نظام المجموعة العنقودية.

    kubectl get nodes
    

    يظهر مثال المخرج التالي ثلاث عقد تم إنشاؤها في الخطوات السابقة. تأكد من أن حالة العقدة Ready:

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-agentpool-41324942-0   Ready    agent   6m44s   v1.12.6
    aks-agentpool-41324942-1   Ready    agent   6m46s   v1.12.6
    aks-agentpool-41324942-2   Ready    agent   6m45s   v1.12.6
    

قم بنشر التطبيق

يحدد ملف بيانات Kubernetesالحالة المطلوبة لنظام المجموعة، مثل صور الحاوية المراد تشغيلها.

في هذا التشغيل السريع، يمكنك استخدام بيان لإنشاء جميع الكائنات اللازمة لتشغيل تطبيق Azure Vote. يشتمل ملف البيانات هذا على عمليتينشر Kubernetes:

  • نموذج تطبيقات Azure Vote Python.
  • مثيل Redis.

كما يتم إنشاء اثنين من خدمات Kubernetes:

  • خدمة داخلية لمثيل Redis.
  • خدمة خارجية للوصول إلى تطبيق Azure Vote من خلال الإنترنت.
  1. إنشاء ملف باسم azure-vote.yaml.

    • في حال كنت تستخدم Azure Cloud Shell، يمكنك إنشاء هذا الملف code، vi أوnano كما لو كان العمل جارياً على نظام افتراضي أو فعلي
  2. انسخ في تعريف YAML التالي:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-back
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-back
      template:
        metadata:
          labels:
            app: azure-vote-back
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-back
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
            env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 6379
              name: redis
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-back
    spec:
      ports:
      - port: 6379
      selector:
        app: azure-vote-back
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-front
      template:
        metadata:
          labels:
            app: azure-vote-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-front
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 80
            env:
            - name: REDIS
              value: "azure-vote-back"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-front
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: azure-vote-front
    

    للحصول على تصنيف تفصيلي لملفات بيان YAML، راجع عمليات التوزيع وبيانات YAML.

  3. انشر التطبيق باستخدام الأمرkubectl apply وحدد اسم ملف بياناتك من YAML:

    kubectl apply -f azure-vote.yaml
    

    يمثل المثال التالي المخرج الذي يظهر عمليات التوزيع والخدمات التي تم إنشاؤها بنجاح:

    deployment "azure-vote-back" created
    service "azure-vote-back" created
    deployment "azure-vote-front" created
    service "azure-vote-front" created
    

اختبر التطبيق

عند تشغيل التطبيق، تعرض خدمة Kubernetes واجهة التطبيق الأمامية للإنترنت. قد تستغرق هذه العملية بضع دقائق حتى تكتمل.

راقب سير العملية باستخدام أمر kubectl get serviceمع --watchوسيطة.

kubectl get service azure-vote-front --watch

في البداية، ستظهر مخرجات EXTERNAL-IP للخدمةazure-vote-front على أنها معلقة.

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

بمجرد تغيير عنوان EXTERNAL-IP من معلق إلى عنوان IP عام فعلي، استخدم CTRL-C لتعطيل عملية kubectl المراقبة. يوضح المثال التالي إخراج لعنوان IP عام صالحاً تم تعيينه للخدمة:

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

لرؤية تطبيق Azure Vote أثناء العمل، افتح مستعرض ويب على عنوان IP الخارجي لخدمتك.

لقطة شاشة لتصفح نموذج تطبيق Azure Vote.

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

إذا كنت لن تستمر خلال البرامج التعليمية التالية، لتجنب رسوم Azure تنظيف أي موارد غير ضرورية. az group delete استخدم الأمر لإزالة مجموعة الموارد وجميع الموارد ذات الصلة.

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

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

في هذا التشغيل السريع، قمت بنشر مجموعة مضيف حاوية Azure Linux. لمعرفة المزيد حول مضيف حاوية Azure Linux، والتعرف على مثال كامل لنشر نظام المجموعة وإدارته، تابع البرنامج التعليمي لمضيف حاويات Azure Linux.