Поделиться через


Развертывание приложения, использующего OpenAI в службе Azure Kubernetes (AKS)

В этой статье вы узнаете, как развернуть приложение, использующее #REF! OpenAI или OpenAI в AKS. С помощью OpenAI можно легко адаптировать различные модели ИИ, такие как создание контента, сводка, семантический поиск и естественный язык для создания кода для конкретных задач. Начните с развертывания кластера AKS в подписке #REF!. Затем вы развернете службу OpenAI и пример приложения.

Пример облачного собственного приложения является представителем реальных реализаций. Многоконтейнерное приложение состоит из приложений, написанных на нескольких языках и платформах, в том числе:

  • Голанг с Джин
  • Rust с Actix-Web
  • JavaScript с Vue.js и Fastify
  • Python с FastAPI

Эти приложения предоставляют интерфейсы для клиентов и администраторов магазина, REST API для отправки данных в очередь сообщений RabbitMQ и базу данных MongoDB, а также консольные приложения для имитации трафика.

Примечание.

Не рекомендуется запускать контейнеры с состоянием, такие как MongoDB и RabbitMQ, без постоянного хранилища в производственной среде. Мы используем их здесь для простоты, но мы рекомендуем использовать управляемые службы, такие как #REF! CosmosDB или Служебная шина Azure.

Сведения о доступе к базе кода #REF! для примера приложения см. в разделе демонстрация магазинаAKS.

Прежде чем начать

  • Вам нужна учетная запись #REF! с активной подпиской. Если у вас нет учетной записи, создайте бесплатную учетную запись.
  • Для этой демонстрации можно использовать сервис #REF! OpenAI или сервис OpenAI.
    • Если вы планируете использовать сервис #REF! OpenAI, необходимо запросить доступ, чтобы его активировать в вашей подписке #REF!, используя форму запроса доступа к сервису #REF! OpenAI.
    • Если вы планируете использовать OpenAI, зарегистрируйтесь на веб-сайте OpenAI.

Предварительные условия

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье Начало работы с Azure Cloud Shell.

  • Если вы предпочитаете локально запускать справочные команды CLI, установите Azure CLI. Если вы работаете на #REF! или macOS, попробуйте запустить Azure CLI в контейнере Docker. Дополнительные сведения см. в разделе Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Другие параметры входа см. в разделе Аутентификация в #REF! с использованием Azure CLI.

    • При появлении запроса установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в разделе Использование расширений и управление ими с помощью Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Создание группы ресурсов

Группа ресурсов #REF! — это логическая группа, в которой развертываются ресурсы #REF! и управляют ими. При создании группы ресурсов вам будет предложено указать расположение. Данное место является местом хранения метаданных группы ресурсов и точкой выполнения ваших ресурсов в #REF!, если вы не указываете другой регион при создании ресурсов.

В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

  • Создайте группу ресурсов с помощью команды.

    az group create --name myResourceGroup --location eastus
    

    В следующем примере выходных данных показано успешное создание группы ресурсов:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null,
      "type": "Microsoft.Resources/resourceGroups"
    }
    

Создание кластера AKS

В следующем примере создается кластер с именем myAKSCluster в myResourceGroup.

  • Создайте кластер AKS с помощью команды.

    az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
    

    Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.

Подключение к кластеру

Для управления кластером Kubernetes используйте клиент командной строки Kubernetes kubectl. kubectl уже установлен, если вы используете Azure Cloud Shell.

  1. Установите локально с помощью команды.

    az aks install-cli
    

    Примечание.

    Если для системы под управлением Linux требуются повышенные разрешения, можно использовать команду.

  2. Настройте для подключения к вашему кластеру Kubernetes, используя команду .

    Эта команда выполняет следующие операции:

    • скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования;
    • использует , расположение по умолчанию для файла конфигурации Kubernetes. Чтобы указать другое расположение файла конфигурации Kubernetes, используйте аргумент --file.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Проверьте подключение к кластеру с помощью команды. Эта команда возвращает список узлов кластера.

    kubectl get nodes
    

    В следующем примере показан узел, созданный на предыдущих шагах. Убедитесь, что состояние узла — "готов".

    NAME                                STATUS   ROLES   AGE     VERSION
    aks-nodepool1-31469198-vmss000000   Ready    agent   3h29m   v1.25.6
    aks-nodepool1-31469198-vmss000001   Ready    agent   3h29m   v1.25.6
    aks-nodepool1-31469198-vmss000002   Ready    agent   3h29m   v1.25.6
    

Примечание.

Для частных кластеров узлы могут быть недоступны, если вы пытаетесь подключиться к ним через общедоступный IP-адрес. Чтобы устранить эту проблему, необходимо создать конечную точку в той же виртуальной сети, что и кластер для подключения. Следуйте инструкциям по созданию частного кластера AKS, а затем подключитесь к нему.

Развертывание приложения

Схема архитектуры демонстрации AKS AI.

Манифест приложения AKS Store включает следующие развертывания и службы Kubernetes:

  • Обслуживание продукта: отображает информацию о продукте.
  • Служба заказов: помещает заказы.
  • Сервис Makeline: обрабатывает заказы из очереди и завершает их.
  • Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
  • Администратор магазина: веб-приложение для сотрудников магазина для просмотра заказов в очереди и управления сведениями о продукте.
  • Виртуальный клиент: симулирует создание заказа на регулярной основе по расписанию.
  • Виртуальный работник: имитирует завершение заказа на запланированной основе.
  • Mongo DB: NoSQL экземпляр для сохраненных данных.
  • Rabbit MQ: очередь сообщений для обработки заказов.

Примечание.

Не рекомендуется запускать контейнеры с состоянием, такие как MongoDB и RabbitMQ, без постоянного хранилища в производственной среде. Мы используем их здесь для простоты, но мы рекомендуем использовать управляемые службы, такие как #REF! CosmosDB или Служебная шина Azure.

  1. Просмотрите манифест YAML для приложения.

  2. Разверните приложение с помощью команды и укажите имя манифеста YAML.

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-all-in-one.yaml
    

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

    deployment.apps/mongodb created
    service/mongodb created
    deployment.apps/rabbitmq created
    service/rabbitmq created
    deployment.apps/order-service created
    service/order-service created
    deployment.apps/makeline-service created
    service/makeline-service created
    deployment.apps/product-service created
    service/product-service created
    deployment.apps/store-front created
    service/store-front created
    deployment.apps/store-admin created
    service/store-admin created
    deployment.apps/virtual-customer created
    deployment.apps/virtual-worker created
    

Развертывание OpenAI

Вы можете использовать #REF! OpenAI или OpenAI и запустить приложение в AKS.

  1. На портале #REF! создайте экземпляр #REF! OpenAI.
  2. Перейдите к экземпляру #REF! OpenAI, который вы создали.
  3. В колонке "Обзор" перейдите на портал Microsoft Foundry.
  4. Создайте новое развертывание чата с помощью базовой модели gpt-4o-mini.

Дополнительные сведения о создании развертывания в #REF! OpenAI см. в разделе Начало работы с генерацией текста с помощью службы #REF! OpenAI.

Развертывание службы ИИ

Теперь, когда приложение развернуто, можно развернуть микрослужбу на основе Python, которая использует OpenAI для автоматического создания описания новых продуктов, добавляемых в каталог магазина.

  1. Создайте файл с именем и скопируйте его в следующем манифесте:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ai-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ai-service
      template:
        metadata:
          labels:
            app: ai-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
            - name: ai-service
              image: ghcr.io/azure-samples/aks-store-demo/ai-service:latest
              ports:
                - containerPort: 5001
              env:
                - name: USE_AZURE_OPENAI
                  value: "True"
                - name: AZURE_OPENAI_DEPLOYMENT_NAME
                  value: ""
                - name: AZURE_OPENAI_ENDPOINT
                  value: ""
                - name: OPENAI_API_KEY
                  value: ""
              resources:
                requests:
                  cpu: 20m
                  memory: 50Mi
                limits:
                  cpu: 50m
                  memory: 128Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: ai-service
    spec:
      type: ClusterIP
      ports:
        - name: http
          port: 5001
          targetPort: 5001
      selector:
        app: ai-service
    
  2. Задайте для переменной среды значение .

  3. Получите имя развертывания #REF! OpenAI из Foundry и введите значение AZURE_OPENAI_DEPLOYMENT_NAME.

  4. Получите конечную точку и ключ API #REF! OpenAI на портале #REF!, выбрав Keys and Endpoint в левой панели ресурса. Обновите и в YAML соответствующим образом.

  5. Разверните приложение с помощью команды и укажите имя манифеста YAML.

    kubectl apply -f ai-service.yaml
    

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

      deployment.apps/ai-service created
      service/ai-service created
    

Примечание.

Непосредственное добавление конфиденциальной информации, например ключей API, в файлы манифеста Kubernetes не является безопасным и может случайно зафиксироваться в репозиториях кода. Мы добавили его здесь для простоты. Для рабочих нагрузок используйте Managed Identity для аутентификации в службе #REF! OpenAI, или вместо этого храните свои секреты в Azure Key Vault.

Тестирование приложения

  1. Проверьте состояние развернутых pod'ов с помощью команды kubectl get pods.

    kubectl get pods
    

    Перед продолжением следующего шага убедитесь, что все модули pod запущены.

    NAME                                READY   STATUS    RESTARTS   AGE
    makeline-service-7db94dc7d4-8g28l   1/1     Running   0          99s
    mongodb-78f6d95f8-nptbz             1/1     Running   0          99s
    order-service-55cbd784bb-6bmfb      1/1     Running   0          99s
    product-service-6bf4d65f74-7cbvk    1/1     Running   0          99s
    rabbitmq-9855984f9-94nlm            1/1     Running   0          99s
    store-admin-7f7d768c48-9hn8l        1/1     Running   0          99s
    store-front-6786c64d97-xq5s9        1/1     Running   0          99s
    virtual-customer-79498f8667-xzsb7   1/1     Running   0          99s
    virtual-worker-6d77fff4b5-7g7rj     1/1     Running   0          99s
    
  2. Получите IP-адрес веб-приложения администратора магазина и веб-приложения витрины магазина с помощью команды .

    kubectl get service store-admin
    

    Приложение предоставляет сайт администратора Магазина интернету через общедоступную подсистему балансировки нагрузки, подготовленную службой Kubernetes. Этот процесс может занять несколько минут. ВНЕШНИЙ IP-адрес сначала отображается в статусе ожидания, а затем, когда служба становится активной, отображает IP-адрес.

    NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
    store-admin   LoadBalancer   10.0.142.228   40.64.86.161    80:32494/TCP   50m
    

    Повторите тот же шаг для сервиса с именем `store-front`.

  3. Откройте веб-браузер и перейдите к внешнему IP-адресу службы. В приведенном здесь примере откройте 40.64.86.161, чтобы увидеть Магазин администратора в браузере. Повторите тот же шаг для Front Store.

  4. В административной панели магазина выберите вкладку "Продукты", а затем нажмите "Добавить товары".

  5. После успешного запуска ai-service появится кнопка Ask OpenAI рядом с полем описания. Введите имя, цену и ключевые слова, а затем создайте описание продукта, нажав кнопку Ask OpenAISave product.

    Снимок экрана: использование openAI для создания описания продукта.

  6. Теперь вы можете увидеть новый продукт, созданный на сайте "Администратор Магазина", используемый продавцами. На рисунке вы можете видеть, что добавлен собачий смарт-ошейник.

    Снимок экрана: просмотр нового продукта на странице администрирования магазина.

  7. Вы также можете увидеть новый продукт, который вы создали, на Store Front, используемом покупателями. На рисунке вы можете видеть, что добавлен собачий смарт-ошейник. Не забудьте получить IP-адрес витрины магазина с помощью команды .

    Снимок экрана: просмотр нового продукта на первой странице магазина.

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

Теперь, когда вы добавили функции OpenAI в приложение AKS, вы можете обеспечить безопасный доступ к #REF! OpenAI из службы #REF! Kubernetes (AKS).

Дополнительные сведения о вариантах использования сгенерируемым ИИ см. в следующих ресурсах: