Nasazení aplikace, která používá OpenAI ve službě Azure Kubernetes Service (AKS)
V tomto článku se dozvíte, jak nasadit aplikaci, která používá Azure OpenAI nebo OpenAI v AKS. Pomocí OpenAI můžete snadno přizpůsobit různé modely AI, jako je generování obsahu, sumarizace, sémantické vyhledávání a přirozený jazyk pro generování kódu, pro konkrétní úlohy. Začnete nasazením clusteru AKS ve vašem předplatném Azure. Pak nasadíte službu OpenAI a ukázkovou aplikaci.
Ukázková aplikace nativní pro cloud představuje implementace z reálného světa. Vícekontenerová aplikace se skládá z aplikací psaných v několika jazycích a architekturách, mezi které patří:
- Golang with Gin
- Rust s Actix-Web
- JavaScript s Vue.js a fastify
- Python s FastAPI
Tyto aplikace poskytují front-endy zákazníkům a správcům úložiště, rozhraní REST API pro odesílání dat do fronty zpráv RabbitMQ a databáze MongoDB a konzolových aplikací pro simulaci provozu.
Poznámka:
Nedoporučujeme spouštět stavové kontejnery, jako je MongoDB a Rabbit MQ, bez trvalého úložiště pro produkční prostředí. Používáme je zde pro zjednodušení, ale doporučujeme používat spravované služby, jako je Azure CosmosDB nebo Azure Service Bus.
Pokud chcete získat přístup k základu kódu GitHubu pro ukázkovou aplikaci, podívejte se na ukázku AKS Store.
Než začnete
- Potřebujete účet Azure s aktivním předplatným. Pokud ho nemáte, vytvořte si účet zdarma.
- Pro tuto ukázku můžete použít službu Azure OpenAI nebo službu OpenAI.
- Pokud plánujete používat službu Azure OpenAI, musíte požádat o přístup, abyste ho povolili ve svém předplatném Azure pomocí formuláře Žádost o přístup ke službě Azure OpenAI.
- Pokud plánujete používat OpenAI, zaregistrujte se na webu OpenAI.
Požadavky
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina, ve které nasazujete a spravujete prostředky Azure. Při vytváření skupiny prostředků se zobrazí výzva k zadání umístění. Toto umístění je umístění úložiště metadat vaší skupiny prostředků a místo, kde vaše prostředky běží v Azure, pokud během vytváření prostředků nezadáte jinou oblast.
Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus.
Pomocí příkazu vytvořte skupinu
az group create
prostředků.az group create --name myResourceGroup --location eastus
Následující příklad výstupu ukazuje úspěšné vytvoření skupiny prostředků:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }
Vytvoření clusteru AKS
Následující příklad vytvoří cluster myAKSCluster v myResourceGroup.
Pomocí příkazu vytvořte cluster
az aks create
AKS.az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.
Připojení ke clusteru
Ke správě clusteru Kubernetes použijete klienta příkazového řádku Kubernetes kubectl. kubectl
je už nainstalovaný, pokud používáte Azure Cloud Shell.
Pomocí příkazu nainstalujte
kubectl
az aks install-cli
místně.az aks install-cli
Poznámka:
Pokud systém založený na Linuxu vyžaduje zvýšená oprávnění, můžete tento příkaz použít
sudo az aks install-cli
.Pomocí příkazu nakonfigurujte
kubectl
připojení ke clusteruaz aks get-credentials
Kubernetes.Tento příkaz provede následující operace:
- Stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo.
- Používá
~/.kube/config
výchozí umístění konfiguračního souboru Kubernetes. Pomocí argumentu --file zadejte jiné umístění konfiguračního souboru Kubernetes.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Pomocí příkazu ověřte připojení ke clusteru
kubectl get
. Tento příkaz vrátí seznam uzlů clusteru.kubectl get nodes
Následující příklad výstupu ukazuje uzly vytvořené v předchozích krocích. Ujistěte se, že je stav uzlu Připravený.
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
Poznámka:
U privátních clusterů můžou být uzly nedostupné, pokud se k nim pokusíte připojit přes veřejnou IP adresu. Pokud chcete tento problém vyřešit, musíte vytvořit koncový bod ve stejné virtuální síti jako cluster, ze které se chcete připojit. Postupujte podle pokynů k vytvoření privátního clusteru AKS a pak se k němu připojte.
Nasazení aplikace
Manifest aplikace AKS Store zahrnuje následující nasazení a služby Kubernetes:
- Produktová služba: Zobrazuje informace o produktu.
- Objednávka: Objednávky.
- Makeline service: Zpracovává objednávky z fronty a dokončí objednávky.
- Store front: Webová aplikace pro zákazníky k zobrazení produktů a objednávání.
- Správce obchodu: Webová aplikace pro zaměstnance obchodu umožňuje zobrazit objednávky ve frontě a spravovat informace o produktech.
- Virtuální zákazník: Simuluje vytváření objednávek podle plánu.
- Virtuální pracovní proces: Simuluje dokončení objednávky podle plánu.
- Mongo DB: Instance NoSQL pro trvalá data.
- Rabbit MQ: Fronta zpráv pro frontu objednávek.
Poznámka:
Nedoporučujeme spouštět stavové kontejnery, jako je MongoDB a Rabbit MQ, bez trvalého úložiště pro produkční prostředí. Používáme je zde pro zjednodušení, ale doporučujeme používat spravované služby, jako je Azure CosmosDB nebo Azure Service Bus.
Zkontrolujte manifest YAML pro aplikaci.
Nasaďte aplikaci pomocí
kubectl apply
příkazu a zadejte název manifestu YAML.kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-all-in-one.yaml
Následující příklad výstupu ukazuje úspěšně vytvořená nasazení a služby:
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
Nasazení OpenAI
Můžete použít Azure OpenAI nebo OpenAI a spustit aplikaci v AKS.
- V předplatném Azure povolte Azure OpenAI vyplněním formuláře Požádat o přístup ke službě Azure OpenAI.
- Na webu Azure Portal vytvořte instanci Azure OpenAI.
- Vyberte instanci Azure OpenAI, kterou jste vytvořili.
- Vyberte klíče a koncové body a vygenerujte klíč.
- Výběrem možnosti Nasazení modelů spravovaná>nasazení otevřete Azure OpenAI Studio.
- Vytvořte nové nasazení pomocí modelu gpt-35-turbo .
Další informace o tom, jak vytvořit nasazení v Azure OpenAI, najdete v tématu Začínáme generovat text pomocí služby Azure OpenAI.
Nasazení služby AI
Teď, když je aplikace nasazená, můžete nasadit mikroslužbu založenou na Pythonu, která používá OpenAI k automatickému vygenerování popisů nových produktů přidaných do katalogu obchodu.
Vytvořte soubor s názvem
ai-service.yaml
a zkopírujte ho v následujícím manifestu: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
Nastavte proměnnou
USE_AZURE_OPENAI
prostředí na"True"
hodnotu .Získejte název nasazení Azure OpenAI ze studia Azure OpenAI a vyplňte
AZURE_OPENAI_DEPLOYMENT_NAME
hodnotu.Na webu Azure Portal získejte koncový bod Azure OpenAI a klíč rozhraní API Azure OpenAI tak, že v levém okně prostředku vyberete Klíče a koncový bod . Odpovídajícím způsobem aktualizujte
AZURE_OPENAI_ENDPOINT
aOPENAI_API_KEY
v YAML.Nasaďte aplikaci pomocí
kubectl apply
příkazu a zadejte název manifestu YAML.kubectl apply -f ai-service.yaml
Následující příklad výstupu ukazuje úspěšně vytvořená nasazení a služby:
deployment.apps/ai-service created service/ai-service created
Poznámka:
Přímé přidávání citlivých informací, jako jsou klíče rozhraní API, do souborů manifestu Kubernetes není bezpečné a může se omylem potvrdit do úložišť kódu. Přidali jsme ho sem kvůli jednoduchosti. V případě produkčních úloh použijte spravovanou identitu k ověření ve službě Azure OpenAI nebo místo toho uložte tajné kódy ve službě Azure Key Vault.
Testování aplikace
Pomocí příkazu kubectl get pods zkontrolujte stav nasazených podů.
kubectl get pods
Než budete pokračovat k dalšímu kroku, ujistěte se, že jsou všechny pody spuštěné .
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
Pomocí příkazu získejte IP adresu webové aplikace pro správu obchodu a uložte front-webovou aplikaci
kubectl get service
.kubectl get service store-admin
Aplikace zpřístupňuje web pro správu Storu na internet prostřednictvím veřejného nástroje pro vyrovnávání zatížení zřízeného službou Kubernetes. Dokončení tohoto procesu může trvat několik minut. EXTERNÍ IP adresa se zpočátku zobrazuje čekající na vyřízení, dokud se služba nezobrazí a nezobrazí IP adresu.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-admin LoadBalancer 10.0.142.228 40.64.86.161 80:32494/TCP 50m
Stejný krok opakujte pro službu s názvem store-front.
Otevřete webový prohlížeč a přejděte na externí IP adresu vaší služby. V tomto příkladu otevřete 40.64.86.161 a zobrazte správce Obchodu v prohlížeči. Stejný krok opakujte pro Store Front.
Ve správci obchodu vyberte kartu Produkty a pak vyberte Přidat produkty.
Když je služba ai-service úspěšně spuštěná, měli byste vedle pole popisu vidět tlačítko Zeptat se openAI. Zadejte název, cenu a klíčová slova a vygenerujte popis produktu výběrem možnosti Zeptat se openAI>Uložit produkt.
Teď uvidíte nový produkt, který jste vytvořili u správce Storu používaného prodejci. Na obrázku vidíte Jungle Monkey Chew Toy je přidán.
Uvidíte také nový produkt, který jste vytvořili ve Storu frontu používané kupujícími. Na obrázku vidíte Jungle Monkey Chew Toy je přidán. Nezapomeňte pomocí příkazu získat IP adresu obchodu
kubectl get service
.
Další kroky
Teď, když jste do aplikace AKS přidali funkci OpenAI, můžete zabezpečit přístup k Azure OpenAI ze služby Azure Kubernetes Service (AKS).
Další informace o případech použití generující umělé inteligence najdete v následujících zdrojích informací:
Azure Kubernetes Service