البرنامج التعليمي - إعداد تطبيق لخدمة Azure Kubernetes (AKS)

في هذا البرنامج التعليمي، الجزء الأول من سبعة، يمكنك إعداد تطبيق متعدد الحاويات لاستخدامه في Kubernetes. يمكنك استخدام أدوات التطوير الموجودة مثل Docker Compose لإنشاء التطبيق واختباره محليا. ‏‫ستتعلم كيفية:

  • استنساخ نموذج مصدر تطبيق من GitHub.
  • إنشاء صورة حاوية من مصدر التطبيق النموذجي.
  • اختبر التطبيق متعدد الحاويات في بيئة Docker محلية.

بمجرد الانتهاء من ذلك، يتم تشغيل التطبيق التالي في بيئة التطوير المحلية:

لقطة شاشة تعرض Azure Store Front App الذي يتم فتحه محليا في مستعرض ويب محلي.

في البرامج التعليمية اللاحقة، يمكنك تحميل صورة الحاوية إلى Azure Container Registry (ACR)، ثم نشرها في مجموعة AKS.

قبل البدء

يفترض هذا البرنامج التعليمي فهما أساسيا لمفاهيم Docker الأساسية مثل الحاويات وصور الحاوية والأوامر docker . للحصول على نظرة تمهيدية على أساسيات الحاوية، راجع بدء استخدام Docker.

لإكمال هذا البرنامج التعليمي، تحتاج إلى بيئة تطوير Docker محلي تشغل حاويات Linux. يوفر Docker حزما تقوم بتكوين Docker على نظام Mac أو Windows أو Linux .

إشعار

لا يتضمن Azure Cloud Shell مكونات Docker المطلوبة لإكمال كل خطوة في هذه البرامج التعليمية. لذلك، نوصي باستخدام بيئة تطوير Docker كاملة.


الحصول على التعليمة البرمجية للتطبيق

نموذج التطبيق المستخدم في هذا البرنامج التعليمي هو تطبيق أساسي للمتجر الأمامي بما في ذلك عمليات نشر وخدمات Kubernetes التالية:

لقطة شاشة لبنية نموذج Azure Store.

  • واجهة المتجر: تطبيق ويب للعملاء لعرض المنتجات وتقديم الطلبات.
  • خدمة المنتج: تعرض معلومات المنتج.
  • خدمة الطلب: يضع الطلبات.
  • Rabbit MQ: قائمة انتظار الرسائل لقائمة انتظار الطلبات.
  1. استخدم git لاستنساخ نموذج التطبيق إلى بيئة التطوير الخاصة بك.

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  2. انتقل إلى المجلد المستنسخ.

    cd aks-store-demo
    

مراجعة ملف Docker Compose

يستخدم نموذج التطبيق الذي تقوم بإنشائه في هذا البرنامج التعليمي ملف docker-compose-quickstart YAML من المستودع الذي نسخته.

version: "3.7"
services:
  rabbitmq:
    image: rabbitmq:3.11.17-management-alpine
    container_name: 'rabbitmq'
    restart: always
    environment:
      - "RABBITMQ_DEFAULT_USER=username"
      - "RABBITMQ_DEFAULT_PASS=password"
    ports:
      - 15672:15672
      - 5672:5672
    healthcheck:
      test: ["CMD", "rabbitmqctl", "status"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - ./rabbitmq_enabled_plugins:/etc/rabbitmq/enabled_plugins
    networks:
      - backend_services
  orderservice:
    build: src/order-service
    container_name: 'orderservice'
    restart: always
    ports:
      - 3000:3000
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://orderservice:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - ORDER_QUEUE_HOSTNAME=rabbitmq
      - ORDER_QUEUE_PORT=5672
      - ORDER_QUEUE_USERNAME=username
      - ORDER_QUEUE_PASSWORD=password
      - ORDER_QUEUE_NAME=orders
      - ORDER_QUEUE_RECONNECT_LIMIT=3
    networks:
      - backend_services
    depends_on:
      rabbitmq:
        condition: service_healthy
  productservice:
    build: src/product-service
    container_name: 'productservice'
    restart: always
    ports:
      - 3002:3002
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://productservice:3002/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    networks:
      - backend_services
  storefront:
    build: src/store-front
    container_name: 'storefront'
    restart: always
    ports:
      - 8080:8080
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://storefront:80/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - VUE_APP_PRODUCT_SERVICE_URL=http://productservice:3002/
      - VUE_APP_ORDER_SERVICE_URL=http://orderservice:3000/
    networks:
      - backend_services
    depends_on:
      - productservice
      - orderservice
networks:
  backend_services:
    driver: bridge

إنشاء صور الحاوية وتشغيل التطبيق

يمكنك استخدام Docker Compose لأتمتة إنشاء صور الحاوية ونشر التطبيقات متعددة الحاويات.

Docker

  1. إنشاء صورة الحاوية، وتنزيل صورة RabbitMQ، وبدء تشغيل التطبيق باستخدام docker compose الأمر :

    docker compose -f docker-compose-quickstart.yml up -d
    
  2. عرض الصور التي تم إنشاؤها docker images باستخدام الأمر .

    docker images
    

    يظهر إخراج المثال المكثف التالي الصور التي تم إنشاؤها:

    REPOSITORY                       TAG                          IMAGE ID
    aks-store-demo-productservice    latest                       2b66a7e91eca
    aks-store-demo-orderservice      latest                       54ad5de546f9
    aks-store-demo-storefront        latest                       d9e3ac46a225
    rabbitmq                         3.11.17-management-alpine    79a570297657
    ...
    
  3. عرض الحاويات قيد التشغيل باستخدام docker ps الأمر .

    docker ps
    

    يظهر إخراج المثال المكثف التالي أربع حاويات قيد التشغيل:

    CONTAINER ID        IMAGE
    21574cb38c1f        aks-store-demo-productservice
    c30a5ed8d86a        aks-store-demo-orderservice
    d10e5244f237        aks-store-demo-storefront
    94e00b50b86a        rabbitmq:3.11.17-management-alpine
    

قم باختبار التطبيق محليًا

لمشاهدة التطبيق قيد التشغيل، انتقل إلى http://localhost:8080 في مستعرض ويب محلي. يقوم تطبيق العينة بالتحميل كما هو موضح في المثال التالي:

لقطة شاشة تعرض Azure Store Front App الذي تم فتحه في مستعرض محلي.

في هذه الصفحة، يمكنك عرض المنتجات وإضافتها إلى سلة التسوق الخاصة بك، ثم تقديم طلب.

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

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

  • قم بإيقاف وإزالة مثيلات الحاوية والموارد باستخدام docker-compose down الأمر .

    docker compose down
    

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

في هذا البرنامج التعليمي، قمت بإنشاء نموذج تطبيق، وإنشاء صور حاوية للتطبيق، ثم اختبار التطبيق. لقد تعرفت على كيفية:

  • استنساخ نموذج مصدر تطبيق من GitHub.
  • إنشاء صورة حاوية من مصدر التطبيق النموذجي.
  • اختبر التطبيق متعدد الحاويات في بيئة Docker محلية.

في البرنامج التعليمي التالي، ستتعلم كيفية تخزين صور الحاوية في ACR.