الوصول إلى موارد Kubernetes باستخدام مدخل Microsoft Azure

في هذه المقالة، ستتعلم كيفية الوصول إلى موارد Azure Kubernetes Service (AKS) وإدارتها باستخدام مدخل Microsoft Azure.

قبل البدء

لعرض موارد Kubernetes في مدخل Azure، تحتاج إلى نظام مجموعة AKS. يتم دعم أي نظام مجموعة، ولكن إذا كنت تستخدم تكامل Microsoft Entra، يجب أن تستخدم مجموعتك تكامل Microsoft Entra المدار بواسطة AKS. إذا كان نظام المجموعة يستخدم معرف Microsoft Entra القديم، يمكنك ترقية نظام المجموعة في المدخل أو باستخدام Azure CLI. يمكنك أيضاً استخدام مدخل Azure لإنشاء نظام مجموعة AKS جديد.

عرض موارد Kubernetes

  1. في مدخل Microsoft Azure، انتقل إلى مورد نظام مجموعة AKS.

  2. من قائمة الخدمة، حدد موارد Kubernetes. تعرض قائمة موارد Kubernetes الفئات التالية:

    • تعرض مساحات الأسماء معلومات حول مساحات أسماء نظام المجموعة.
    • أحمال العمل تعرض معلومات حول عمليات النشر والجرابات ومجموعات النسخ المتماثلة والمجموعات ذات الحالة ومجموعات الخدمات الخفية والمهام ووظائف cron التي تم نشرها في نظام مجموعتك.
    • الخدمات والدخول تعرض جميع خدمات نظام مجموعتك وموارد الدخول.
    • التخزين يعرض فئات التخزين في Azure ومعلومات وحدة التخزين الدائمة.
    • التكوين يُظهر خرائط التكوين والأسرار الخاصة بنظام مجموعتك.
    • تعرض الموارد المخصصة أي موارد مخصصة تم نشرها في نظام المجموعة الخاص بك.
    • تعرض الأحداث جميع الأحداث المتعلقة بالمجموعة الخاصة بك.
    • يسمح لك أمر التشغيل باستدعاء الأوامر عن بعد، مثل kubectl و helm، على نظام المجموعة الخاص بك من خلال واجهة برمجة تطبيقات Azure دون الاتصال مباشرة بالمجموعة.

    لقطة شاشة تعرض موارد Kubernetes المعروضة في مدخل Microsoft Azure.

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

في هذا القسم، نقوم بنشر تطبيق Azure Store من التشغيل السريع ل AKS.

تواصل مع مجموعتك

لنشر تطبيق Azure Store، تحتاج إلى الاتصال بمجموعة AKS الخاصة بك. اتبع هذه الخطوات للاتصال بالمجموعة باستخدام مدخل Microsoft Azure:

  1. من صفحة Overview في نظام مجموعة AKS، حدد Connect.
  2. اتبع الإرشادات للاتصال بالمجموعة باستخدام الأمر Cloud Shell أو Azure CLI أو Run.

نشر تطبيق Azure Store

  1. من قائمة موارد Kubernetes، حدد الخدمات والدخول.

  2. حدد إنشاء>تطبيق YAML.

  3. انسخ YAML التالي والصقه في المحرر:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: rabbitmq
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: rabbitmq
      template:
        metadata:
          labels:
            app: rabbitmq
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: rabbitmq
            image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine
            ports:
            - containerPort: 5672
              name: rabbitmq-amqp
            - containerPort: 15672
              name: rabbitmq-http
            env:
            - name: RABBITMQ_DEFAULT_USER
              value: "username"
            - name: RABBITMQ_DEFAULT_PASS
              value: "password"
            resources:
              requests:
                cpu: 10m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            volumeMounts:
            - name: rabbitmq-enabled-plugins
              mountPath: /etc/rabbitmq/enabled_plugins
              subPath: enabled_plugins
          volumes:
          - name: rabbitmq-enabled-plugins
            configMap:
              name: rabbitmq-enabled-plugins
              items:
              - key: rabbitmq_enabled_plugins
                path: enabled_plugins
    ---
    apiVersion: v1
    data:
      rabbitmq_enabled_plugins: |
        [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0].
    kind: ConfigMap
    metadata:
      name: rabbitmq-enabled-plugins
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: rabbitmq
    spec:
      selector:
        app: rabbitmq
      ports:
        - name: rabbitmq-amqp
          port: 5672
          targetPort: 5672
        - name: rabbitmq-http
          port: 15672
          targetPort: 15672
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: order-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: order-service
      template:
        metadata:
          labels:
            app: order-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: order-service
            image: ghcr.io/azure-samples/aks-store-demo/order-service:latest
            ports:
            - containerPort: 3000
            env:
            - name: ORDER_QUEUE_HOSTNAME
              value: "rabbitmq"
            - name: ORDER_QUEUE_PORT
              value: "5672"
            - name: ORDER_QUEUE_USERNAME
              value: "username"
            - name: ORDER_QUEUE_PASSWORD
              value: "password"
            - name: ORDER_QUEUE_NAME
              value: "orders"
            - name: FASTIFY_ADDRESS
              value: "0.0.0.0"
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
          initContainers:
          - name: wait-for-rabbitmq
            image: busybox
            command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;']
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: order-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 3000
        targetPort: 3000
      selector:
        app: order-service
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: product-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: product-service
      template:
        metadata:
          labels:
            app: product-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: product-service
            image: ghcr.io/azure-samples/aks-store-demo/product-service:latest
            ports:
            - containerPort: 3002
            resources:
              requests:
                cpu: 1m
                memory: 1Mi
              limits:
                cpu: 1m
                memory: 7Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: product-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 3002
        targetPort: 3002
      selector:
        app: product-service
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: store-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: store-front
      template:
        metadata:
          labels:
            app: store-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: store-front
            image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
            ports:
            - containerPort: 8080
              name: store-front
            env:
            - name: VUE_APP_ORDER_SERVICE_URL
              value: "http://order-service:3000/"
            - name: VUE_APP_PRODUCT_SERVICE_URL
              value: "http://product-service:3002/"
            resources:
              requests:
                cpu: 1m
                memory: 200Mi
              limits:
                cpu: 1000m
                memory: 512Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: store-front
    spec:
      ports:
      - port: 80
        targetPort: 8080
      selector:
        app: store-front
      type: LoadBalancer
    
  4. حدد إضافة.

    بمجرد انتهاء التطبيق من النشر، سترى الخدمات التالية في قائمة الخدمات :

    • خدمة الطلب
    • خدمة المنتج
    • أرنب
    • واجهة المتجر

    لقطة شاشة لخدمات تطبيق Azure Store المعروضة في مدخل Microsoft Azure.

تحليل مراقبة النشر

تمكين الوظيفة الإضافية للمراقبة على نظام مجموعة AKS

يمكن لمجموعات AKS مع تمكين Container Insights الوصول إلى رؤى التوزيع المختلفة في مدخل Microsoft Azure. إذا لم يكن لديك مراقبة ممكنة على نظام المجموعة الخاص بك، يمكنك تمكينها باستخدام الخطوات التالية:

  1. من قائمة الخدمة لمورد نظام مجموعة AKS، حدد Monitoring>Insights>Configure monitoring.

  2. في صفحة Configure Container Insights ، حدد Configure.

    قد يستغرق حل المراقبة بضع دقائق لنشر البيانات والبدء في جمعها.

عرض نتائج تحليلات التوزيع

  1. من قائمة الخدمة لمورد نظام مجموعة AKS، حدد Workloads.
  2. حدد توزيعا من القائمة لعرض نتائج تحليلات التوزيع، مثل استخدام وحدة المعالجة المركزية والذاكرة.

إشعار

يمكنك أيضا تحديد Monitoring>Insights لعرض المزيد من المعلومات المتعمقة حول عقد وحاويات محددة.

تنظيف الموارد

إذا لم تعد بحاجة إلى تطبيق Azure Store، يمكنك حذف الخدمات لتجنب تكبد تكاليف Azure.

  1. من قائمة موارد Kubernetes، حدد الخدمات والدخول.
  2. حدد الخدمات التي تريد حذفها، ثم حدد حذف.

استكشاف الأخطاء وإصلاحها

الوصول غير المصرح به

للوصول إلى موارد Kubernetes، تحتاج إلى الوصول إلى مجموعة AKS وواجهة برمجة تطبيقات Kubernetes وكائنات Kubernetes. تأكد من أنك إما مسؤول نظام مجموعة أو مستخدم لديه الأذونات المناسبة للوصول إلى نظام مجموعة AKS. لمزيد من المعلومات، راجع خيارات الوصول والهوية ل AKS.

تمكين عرض المورد

قد تحتاج إلى تمكين عرض مورد Kubernetes للمجموعات الموجودة.

تلميح

يمكنك إضافة ميزة AKS لنطاقات IP المعتمدة لخادم API للحد من وصول خادم واجهة برمجة التطبيقات إلى نقطة النهاية العامة لجدار الحماية فقط. خيار آخر هو تحديث لتضمين --api-server-authorized-ip-ranges/-ApiServerAccessAuthorizedIpRange الوصول إلى كمبيوتر عميل محلي أو نطاق عنوان IP الذي تستعرض منه مدخل Microsoft Azure. للسماح بهذا الوصول، تحتاج إلى عنوان IPv4 العام للكمبيوتر. يمكنك العثور على هذا العنوان باستخدام أوامر Azure CLI أو Azure PowerShell التالية، أو يمكنك البحث في "ما هو عنوان IP الخاص بي" في المستعرض الخاص بك.

  1. استرداد عنوان IP الخاص بك باستخدام الأمر التالي:

    CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
    
  2. أضف عنوان IP الخاص بك إلى قائمة AKS المعتمدة az aks update باستخدام الأمر مع المعلمة --api-server-authorized-ip-ranges .

    az aks update --resource-group <resource-group-name> --name <aks-cluster-name> --api-server-authorized-ip-ranges $CURRENT_IP/32
    

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

توضح لك هذه المقالة كيفية الوصول إلى موارد Kubernetes من مدخل Microsoft Azure. لمزيد من المعلومات حول AKS، المفاهيم الأساسية لخدمة Azure Kubernetes (AKS).