Wdrażanie aplikacji korzystającej z interfejsu OpenAI w usłudze Azure Kubernetes Service (AKS)

W tym artykule wdrożysz aplikację demonstracyjną sklepu AKS na Azure Kubernetes Service (AKS) i skonfigurujesz Azure interfejsu OpenAI lub interfejsu API OpenAI w celu wygenerowania opisów produktów.

Przykładowa aplikacja natywna dla chmury obejmuje usługi napisane w wielu językach i strukturach, w tym:

  • Golang z ginem
  • Rust z Actix-Web
  • Język JavaScript z Vue.js i funkcją Fastify
  • Python za pomocą interfejsu FastAPI

Te aplikacje udostępniają frontony dla kupujących i administratorów sklepów, interfejsów API REST, które wysyłają dane do kolejki komunikatów RabbitMQ i bazy danych DocumentDB oraz aplikacji konsoli symulujących ruch.

Uwaga

Nie uruchamiaj kontenerów stanowych, takich jak DocumentDB i RabbitMQ, bez trwałego magazynu w środowisku produkcyjnym. W tym artykule są używane bez magazynu trwałego dla uproszczenia. W przypadku obciążeń produkcyjnych użyj usług zarządzanych, takich jak Azure Cosmos DB lub Azure Service Bus.

Aby uzyskać dostęp do bazy kodu GitHub dla przykładowej aplikacji, zobacz AKS Store Demo.

Zanim rozpoczniesz

Prerequisites

Tworzenie grupy zasobów

Grupa zasobów Azure to grupa logiczna, w której wdrażasz zasoby Azure i zarządzasz nimi. Podczas tworzenia grupy zasobów zostanie wyświetlony monit o określenie lokalizacji. Ta lokalizacja to lokalizacja magazynu metadanych grupy zasobów i lokalizacja, w której zasoby są uruchamiane w Azure, jeśli nie określisz innego regionu podczas tworzenia zasobów.

W poniższym przykładzie tworzona jest grupa zasobów o nazwie myResourceGroup w lokalizacji eastus.

Utwórz grupę zasobów przy użyciu polecenia az group create.

az group create --name myResourceGroup --location eastus

Następujące przykładowe dane wyjściowe pokazują pomyślne utworzenie grupy zasobów:

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

Utwórz klaster AKS

Poniższy przykład tworzy klaster o nazwie myAKSCluster w grupie myResourceGroup.

Utwórz klaster AKS za pomocą polecenia az aks create.

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

Po kilku minutach polecenie zostanie wykonane i zwróci informacje o klastrze w formacie JSON.

Połącz się z klastrem

Aby zarządzać klastrem Kubernetes, użyj klienta wiersza polecenia Kubernetes, kubectl. Jeśli korzystasz z usługi Azure Cloud Shell, narzędzie kubectl jest już zainstalowane.

  1. Zainstaluj kubectl lokalnie przy użyciu az aks install-cli polecenia .

    az aks install-cli
    

    Uwaga

    Jeśli system oparty na systemie Linux wymaga podwyższonych uprawnień, użyj sudo az aks install-cli polecenia .

  2. Skonfiguruj kubectl, aby nawiązać połączenie z klastrem Kubernetes za pomocą polecenia az aks get-credentials.

    To polecenie uruchamia następujące operacje:

    • Pobiera poświadczenia i konfiguruje narzędzie CLI Kubernetes do ich użycia.
    • Używa ~/.kube/config, domyślnej lokalizacji pliku konfiguracji Kubernetes. Określ inną lokalizację pliku konfiguracji platformy Kubernetes przy użyciu argumentu --file .
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Zweryfikuj połączenie z klastrem, używając polecenia kubectl get. Ta komenda zwraca listę węzłów klastra.

    kubectl get nodes
    

    Poniższe przykładowe dane wyjściowe pokazują węzły utworzone w poprzednich krokach. Sprawdź, czy każdy węzeł ma stan Gotowe.

    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
    

Uwaga

W przypadku prywatnego klastra usługi AKS nawiąż połączenie z punktu końcowego w tej samej sieci wirtualnej co klaster. Aby uzyskać instrukcje dotyczące konfiguracji, zobacz Tworzenie prywatnego klastra usługi AKS.

Wdrażanie aplikacji

Aplikacja AKS Store zawiera następujące wdrożenia i usługi Kubernetes:

  • Usługa produktu: wyświetla informacje o produkcie.
  • Usługa zamówień: składa zamówienia.
  • Usługa makeline: Przetwarza zamówienia z kolejki i realizuje zamówienia.
  • Front sklepu: aplikacja internetowa dla klientów do wyświetlania produktów i składania zamówień.
  • Administrator sklepu: aplikacja internetowa dla pracowników sklepu umożliwiająca wyświetlanie zamówień w kolejce i zarządzanie informacjami o produkcie.
  • Klient wirtualny: symuluje tworzenie zamówień zgodnie z harmonogramem.
  • Wirtualny proces roboczy: symuluje ukończenie zamówienia zgodnie z harmonogramem.
  • DocumentDB: NoSQL wystąpienie dla utrwalanych danych.
  • RabbitMQ: kolejka komunikatów do obsługi kolejki zamówień.

Uwaga

Nie uruchamiaj kontenerów stanowych, takich jak DocumentDB i RabbitMQ, bez trwałego magazynu w środowisku produkcyjnym. W tym artykule są używane bez magazynu trwałego dla uproszczenia. W przypadku obciążeń produkcyjnych użyj usług zarządzanych, takich jak Azure Cosmos DB lub Azure Service Bus.

  1. Przejrzyj manifest YAML dla aplikacji.

  2. Wdróż aplikację przy użyciu kubectl apply polecenia i określ nazwę manifestu YAML.

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

Wdrażanie usługi OpenAI

Wybierz Azure interfejsu OpenAI lub interfejsu API OpenAI dla aplikacji działającej w usłudze AKS.

  1. W portalu Azure utwórz wystąpienie Azure OpenAI.
  2. Zaloguj się do usługi Microsoft Foundry.
  3. Wyłącz przełącznik New Foundry , a następnie wybierz pozycję Wyświetl wszystkie zasoby w obszarze Zachowaj kompilowanie za pomocą narzędzia Foundry.
  4. Wybierz utworzony zasób openAI Azure, a następnie wybierz pozycję Wdrożenia w obszarze Udostępnione zasoby.
  5. Wybierz Wdróż model>Wdróż model podstawowy.
  6. Wybierz model gpt-4o-mini base, wprowadź nazwę wdrożenia, a następnie wdróż model. Zapisz nazwę wdrożenia dla następnej sekcji.

Aby uzyskać więcej informacji na temat tworzenia wdrożenia Azure OpenAI, zobacz Wprowadzenie do generowania tekstu przy użyciu Azure OpenAI.

Wdrażanie mikrousługi sztucznej inteligencji

Wdróż mikrousługę sztucznej inteligencji opartą na Python, która automatycznie generuje opisy produktów przy użyciu interfejsu OpenAI. Ta mikrousługa łączy się z aplikacją ze Sklepu AKS wdrożonym w poprzedniej sekcji.

Użyj Azure wdrożenia zasobu OpenAI i modelu utworzonego w sekcji Wdrażanie usługi OpenAI. Skonfiguruj następujące zmienne środowiskowe w manifeście mikrousługi sztucznej inteligencji:

Zmienna środowiskowa Wartość
USE_AZURE_OPENAI Ustaw wartość na wartość , aby "True" użyć Azure OpenAI.
AZURE_OPENAI_DEPLOYMENT_NAME Nazwa gpt-4o-mini wdrożenia modelu w usłudze Microsoft Foundry.
AZURE_OPENAI_ENDPOINT Punkt końcowy ze strony Klucze i punkt końcowy zasobu Azure OpenAI.
OPENAI_API_KEY Klucz interfejsu API ze strony Klucze i punkt końcowy zasobu Azure OpenAI.
  1. Utwórz plik o nazwie ai-service.yaml i skopiuj go w następującym manifeście:

    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:2.2.0
              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. Ustaw zmienną środowiskową USE_AZURE_OPENAI na "True".

  3. W Microsoft Foundry skopiuj nazwę wdrożenia Azure OpenAI i ustaw AZURE_OPENAI_DEPLOYMENT_NAME wartość .

  4. W portalu Azure wybierz pozycję Klucze i punkt końcowy w zasobie Azure OpenAI. Skopiuj punkt końcowy i klucz interfejsu API, a następnie ustaw AZURE_OPENAI_ENDPOINT wartości i OPENAI_API_KEY .

  5. Wdróż aplikację przy użyciu kubectl apply polecenia i określ nazwę manifestu YAML.

    kubectl apply -f ai-service.yaml
    

    W poniższych przykładowych danych wyjściowych przedstawiono pomyślnie utworzone wdrożenia i usługi:

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

Uwaga

Przechowywanie kluczy interfejsu API bezpośrednio w manifestach platformy Kubernetes jest niezabezpieczone i może uwidaczniać wpisy tajne w kontroli źródła. W tym przykładzie użyto wartości manifestu dla uproszczenia. W przypadku obciążeń produkcyjnych należy uwierzytelnić się w usłudze Azure OpenAI przy użyciu tożsamości zarządzanej lub przechowywać wpisy tajne w Azure Key Vault.

Testowanie aplikacji

  1. Sprawdź stan wdrożonych zasobników za pomocą polecenia kubectl get pods.

    kubectl get pods
    

    Przed kontynuowaniem sprawdź, czy wszystkie zasobniki mają stan Uruchomiono .

  2. Pobierz zewnętrzny adres IP administratora magazynu przy użyciu kubectl get service polecenia .

    kubectl get service store-admin
    

    Usługa Kubernetes uwidacznia administratora magazynu za pośrednictwem publicznego modułu równoważenia obciążenia. Przypisanie adresu przez moduł równoważenia obciążenia może potrwać kilka minut. Wartość EXTERNAL-IP jest wyświetlana jako oczekująca do momentu udostępnienia 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
    
  3. Powtórz poprzedni krok dla store-front usługi.

  4. W przeglądarce internetowej przejdź do zewnętrznego adresu IP administratora sklepu. W tym przykładzie adres to 40.64.86.161.

  5. W obszarze Administrator sklepu wybierz pozycję Produkty>Dodaj produkt.

  6. Po ai-service uruchomieniu obok pola opisu zostanie wyświetlony przycisk Zapytaj asystenta sztucznej inteligencji . Wprowadź nazwę, cenę i słowa kluczowe, wybierz pozycję Zapytaj Asystenta sztucznej inteligencji, aby wygenerować opis produktu, a następnie wybierz pozycję Zapisz produkt.

  7. Sprawdź, czy w obszarze Administrator sklepu jest wyświetlany przycisk Dog Smart Collar.

    Zrzut ekranu przedstawiający nowy produkt w obszarze Administrator sklepu.

  8. Przejdź do zewnętrznego adresu IP aplikacji Store Front i sprawdź, czy jest wyświetlany pies Smart Collar.

    Zrzut ekranu przedstawiający nowy produkt w sklepie Front.

Dalsze kroki

Po dodaniu funkcji OpenAI do aplikacji usługi AKS możesz zabezpieczyć dostęp do Azure OpenAI z usług Azure Kubernetes Service (AKS).

Aby dowiedzieć się więcej na temat przypadków użycia generatywnej sztucznej inteligencji, zobacz następujące zasoby.