Развертывание приложения, использующего OpenAI в Служба Azure Kubernetes (AKS)
Из этой статьи вы узнаете, как развернуть приложение, использующее Azure OpenAI или OpenAI в AKS. С помощью OpenAI можно легко адаптировать различные модели ИИ, такие как создание контента, сводка, семантический поиск и естественный язык для создания кода для конкретных задач. Начните с развертывания кластера AKS в подписке Azure. Затем вы развернете службу OpenAI и пример приложения.
Пример облачного собственного приложения является представителем реальных реализаций. Многоконтейнерное приложение состоит из приложений, написанных на нескольких языках и платформах, в том числе:
- Голанг с Джин
- Rust с Actix-Web
- JavaScript с Vue.js и Fastify
- Python с FastAPI
Эти приложения предоставляют интерфейсы для клиентов и администраторов магазина, REST API для отправки данных в очередь сообщений RabbitMQ и базу данных MongoDB, а также консольные приложения для имитации трафика.
Примечание.
Не рекомендуется запускать контейнеры с отслеживанием состояния, такие как MongoDB и Rabbit MQ, без постоянного хранения для рабочей среды. Мы используем их здесь для простоты, но мы рекомендуем использовать управляемые службы, такие как Azure CosmosDB или Служебная шина Azure.
Чтобы получить доступ к базе кода GitHub для примера приложения, ознакомьтесь с демонстрацией МАГАЗИНА AKS.
Подготовка к работе
- Вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи, создайте бесплатную учетную запись.
- Для этой демонстрации можно использовать службу Azure OpenAI или службу OpenAI.
- Если вы планируете использовать службу Azure OpenAI, необходимо запросить доступ к ней в подписке Azure с помощью формы запроса к форме Службы OpenAI Azure.
- Если вы планируете использовать OpenAI, зарегистрируйтесь на веб-сайте OpenAI.
Необходимые компоненты
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Создание или изменение группы ресурсов
Группа ресурсов Azure — это логическая группа , в которой развертываются ресурсы Azure и управляют ими. При создании группы ресурсов вам будет предложено указать расположение. Это расположение хранилища метаданных группы ресурсов и место, где ресурсы выполняются в Azure, если вы не указываете другой регион во время создания ресурса.
В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.
Создайте группу ресурсов с помощью
az group create
команды.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
команды.az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.
Подключение к кластеру
Для управления кластером Kubernetes используйте клиент командной строки Kubernetes kubectl. Если вы используете Azure Cloud Shell, kubectl
уже установлен.
Установите
kubectl
локально с помощьюaz aks install-cli
команды.az aks install-cli
Примечание.
Если для системы под управлением Linux требуются повышенные разрешения, можно использовать
sudo az aks install-cli
команду.Настройте
kubectl
подключение к кластеруaz aks get-credentials
Kubernetes с помощью команды.Эта команда выполняет следующие операции:
- скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования;
- использует
~/.kube/config
, расположение по умолчанию для файла конфигурации Kubernetes. Чтобы указать другое расположение файла конфигурации Kubernetes, используйте аргумент --file.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Проверьте подключение к кластеру
kubectl get
с помощью команды. Эта команда возвращает список узлов кластера.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 включает следующие развертывания и службы Kubernetes:
- Служба продуктов: отображает сведения о продукте.
- Служба заказов: помещает заказы.
- Служба Makeline: обрабатывает заказы из очереди и завершает заказы.
- Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
- Администратор магазина: веб-приложение для сотрудников магазина для просмотра заказов в очереди и управления сведениями о продукте.
- Виртуальный клиент: имитация создания заказа на основе запланированного.
- Виртуальная рабочая роль: имитация завершения заказа на запланированном основе.
- Mongo DB: экземпляр NoSQL для сохраненных данных.
- Rabbit MQ: очередь сообщений для очереди заказов.
Примечание.
Не рекомендуется запускать контейнеры с отслеживанием состояния, такие как MongoDB и Rabbit MQ, без постоянного хранения для рабочей среды. Мы используем их здесь для простоты, но мы рекомендуем использовать управляемые службы, такие как Azure CosmosDB или Служебная шина Azure.
Просмотрите манифест YAML для приложения.
Разверните приложение с помощью
kubectl apply
команды и укажите имя манифеста 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
Вы можете использовать Azure OpenAI или OpenAI и запустить приложение в AKS.
- Включите Azure OpenAI в подписке Azure, заполнив форму "Запрос доступа к службе Azure OpenAI".
- В портал Azure создайте экземпляр Azure OpenAI.
- Выберите созданный экземпляр Azure OpenAI.
- Выберите ключи и конечные точки для создания ключа.
- Выберите управляемые развертывания моделей>, чтобы открыть студию Azure OpenAI.
- Создайте новое развертывание с помощью модели gpt-35-turbo .
Дополнительные сведения о создании развертывания в Azure OpenAI см. в статье "Начало создания текста с помощью Службы Azure OpenAI".
Развертывание службы ИИ
Теперь, когда приложение развернуто, можно развернуть микрослужбу на основе Python, которая использует OpenAI для автоматического создания описания новых продуктов, добавляемых в каталог магазина.
Создайте файл с именем
ai-service.yaml
и скопируйте его в следующем манифесте: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
Задайте для переменной
USE_AZURE_OPENAI
среды значение"True"
.Получите имя развертывания Azure OpenAI из Студии Azure OpenAI и заполните
AZURE_OPENAI_DEPLOYMENT_NAME
значение.Получите конечную точку Azure OpenAI и ключ API Azure OpenAI из портал Azure, выбрав ключи и конечную точку в левой колонке ресурса.
AZURE_OPENAI_ENDPOINT
Обновите иOPENAI_API_KEY
в YAML соответствующим образом.Разверните приложение с помощью
kubectl apply
команды и укажите имя манифеста YAML.kubectl apply -f ai-service.yaml
В следующем примере выходных данных показаны успешно созданные развертывания и службы:
deployment.apps/ai-service created service/ai-service created
Примечание.
Непосредственное добавление конфиденциальной информации, например ключей API, в файлы манифеста Kubernetes не является безопасным и может случайно зафиксироваться в репозиториях кода. Мы добавили его здесь для простоты. Для рабочих нагрузок используйте управляемое удостоверение для проверки подлинности в службе Azure OpenAI, а также для хранения секретов в Azure Key Vault.
Тестирование приложения
Проверьте состояние развернутых модулей 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
Получите IP-адрес веб-приложения администратора магазина и сохраните веб-приложение переднего плана с помощью
kubectl get service
команды.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.
Откройте веб-браузер и перейдите к внешнему IP-адресу службы. В примере, приведенном здесь, откройте 40.64.86.161 , чтобы просмотреть администратор Магазина в браузере. Повторите тот же шаг для Front Store.
В магазине администратор выберите вкладку "Продукты", а затем нажмите кнопку "Добавить продукты".
После успешного запуска ai-service появится кнопка Ask OpenAI рядом с полем описания. Введите имя, цену и ключевые слова, а затем создайте описание продукта, нажав кнопку Ask OpenAI>Save product.
Теперь вы можете увидеть новый продукт, созданный на сайте "Администратор Магазина", используемый продавцами. На рисунке вы увидите, что в джунглях обезьяна Жевать Той добавляется.
Вы также можете увидеть новый продукт, созданный в Магазине Front, используемый покупателями. На рисунке вы увидите, что в джунглях обезьяна Жевать Той добавляется. Не забудьте получить IP-адрес переднего плана магазина с помощью
kubectl get service
команды.
Следующие шаги
Теперь, когда вы добавили функции OpenAI в приложение AKS, вы можете защитить доступ к Azure OpenAI из Служба Azure Kubernetes (AKS).
Дополнительные сведения о вариантах использования сгенерируемым ИИ см. в следующих ресурсах:
Azure Kubernetes Service