Руководство. Подготовка приложения для Служба Azure Kubernetes (AKS)

В этом руководстве мы подготовим приложение с несколькими контейнерами для использования в Kubernetes. Вы используете существующие средства разработки, такие как Docker Compose, для локальной сборки и тестирования приложения. Узнайте следующие темы:

  • Клонирование источника примера приложения с GitHub.
  • Создайте образ контейнера из примера источника приложения.
  • Протестируйте многоконтейнерное приложение в локальной среде Docker.

После выполнения всех действий в вашей локальной среде разработки выполняется следующее приложение:

Снимок экрана: приложение Azure Store Front, работающее локально открыто в локальном веб-браузере.

В последующих руководствах вы отправляете образ контейнера в Реестр контейнеров Azure (ACR), а затем развертываете его в кластере AKS.

Подготовка к работе

Для выполнения действий, описанных в этом руководстве, необходимо базовое понимание основных понятий Docker, таких как контейнеры, образы контейнеров и команды docker. Руководство по началу работы с Docker содержит базовые сведения о контейнерах.

Для работы с этим руководством требуется локальная среда разработки Docker для выполнения контейнеров Linux. Docker предоставляет пакеты, которые позволяют настроить Docker в системе Mac, Windows или Linux.

Примечание.

Azure Cloud Shell не включает компоненты Docker, необходимые для выполнения каждого шага в этих руководствах. Таким образом мы рекомендуем полную среду разработки Docker.


Получение кода приложения

Пример приложения, используемого в этом руководстве, — это базовое клиентское приложение магазина, включая следующие развертывания и службы Kubernetes:

Снимок экрана: пример архитектуры Магазина Azure.

  • Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
  • Служба продуктов: отображает сведения о продукте.
  • Служба заказов: помещает заказы.
  • Rabbit MQ: очередь сообщений для очереди заказов.
  1. Используйте git , чтобы клонировать пример приложения в среду разработки.

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  2. Перейдите в клонированный каталог.

    cd aks-store-demo
    

Просмотр файла Docker Compose

В примере приложения, создаваемого в этом руководстве, используется файл YAML docker-compose-quickstart из клонированного репозитория.

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. Создайте образ контейнера, скачайте образ Redis и запустите приложение с помощью 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, открытое в локальном браузере.

На этой странице можно просмотреть продукты, добавить их в корзину, а затем разместить заказ.

Очистка ресурсов

Так как вы проверили функциональные возможности приложения, можно остановить и удалить запущенные контейнеры. Не удаляйте образы контейнеров. Их можно использовать в следующем руководстве.

  • Остановите и удалите экземпляры контейнеров и ресурсы с помощью docker-compose down команды.

    docker compose down
    

Следующие шаги

В этом руководстве вы создали пример приложения, создали образы контейнеров для приложения, а затем протестировали приложение. Вы научились выполнять следующие задачи:

  • Клонирование источника примера приложения с GitHub.
  • Создайте образ контейнера из примера источника приложения.
  • Протестируйте многоконтейнерное приложение в локальной среде Docker.

В следующем руководстве описано, как хранить образы контейнеров в ACR.