Een toepassing implementeren die gebruikmaakt van OpenAI in Azure Kubernetes Service (AKS)

In dit artikel implementeert u de AKS Store-demotoepassing op Azure Kubernetes Service (AKS) en configureert u Azure OpenAI of de OpenAI-API om productbeschrijvingen te genereren.

De voorbeeldtoepassing in de cloud bestaat uit services die zijn geschreven in meerdere talen en frameworks, waaronder:

  • Golang met Gin
  • Rust met Actix-Web
  • JavaScript met Vue.js en Fastify
  • Python met FastAPI

Deze toepassingen bieden front-ends voor klanten en winkelbeheerders, REST API's die gegevens verzenden naar een RabbitMQ-berichtenwachtrij en DocumentDB-database, en console-apps die verkeer simuleren.

Notitie

Voer geen stateful containers uit, zoals DocumentDB en RabbitMQ, zonder permanente opslag in productie. In dit artikel worden ze zonder permanente opslag gebruikt om het eenvoudig te maken. Gebruik voor productieworkloads beheerde services zoals Azure Cosmos DB of Azure Service Bus.

Zie AKS Store Demo voor toegang tot de GitHub codebasis voor de voorbeeldtoepassing.

Voordat u begint

Vereisten

Een brongroep maken

Een Azure resourcegroep is een logische groep waarin u Azure resources implementeert en beheert. Wanneer u een resourcegroep maakt, wordt u gevraagd een locatie op te geven. Deze locatie is de opslaglocatie van de metagegevens van uw resourcegroep en waar uw resources worden uitgevoerd in Azure als u geen andere regio opgeeft tijdens het maken van resources.

In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt in de locatie eastus.

Maak een resourcegroep met behulp van de az group create opdracht.

az group create --name myResourceGroup --location eastus

In het volgende voorbeeldresultaat ziet u dat de resourcegroep succesvol is aangemaakt:

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

Een AKS-cluster maken

In het volgende voorbeeld wordt een cluster met de naam myAKSCluster gemaakt in myResourceGroup.

Maak een AKS-cluster met behulp van de az aks create opdracht.

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

Na enkele minuten is de opdracht voltooid en retourneert deze informatie over het cluster in JSON-indeling.

Verbinding maken met het cluster

Als u een Kubernetes-cluster wilt beheren, gebruikt u de Kubernetes-opdrachtregelclient. kubectl Als u Azure Cloud Shell gebruikt, is kubectl al geïnstalleerd.

  1. Installeer kubectl lokaal met behulp van de az aks install-cli opdracht.

    az aks install-cli
    

    Notitie

    Als voor uw Linux-systeem verhoogde machtigingen zijn vereist, gebruikt u de sudo az aks install-cli opdracht.

  2. Configureer kubectl om verbinding te maken met uw Kubernetes-cluster met behulp van het az aks get-credentials commando.

    Met deze opdracht worden de volgende bewerkingen uitgevoerd:

    • Hiervoor downloadt u credentials en configureert u de Kubernetes CLI om deze te gebruiken.
    • Gebruikt ~/.kube/config, de standaardlocatie voor het Kubernetes-configuratiebestand. Geef een andere locatie op voor uw Kubernetes-configuratiebestand met behulp van het argument --file .
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Controleer de verbinding met uw cluster met behulp van de kubectl get opdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd.

    kubectl get nodes
    

    In de volgende voorbeelduitvoer ziet u de knooppunten die in de voorgaande stappen zijn gemaakt. Controleer of elk knooppunt de status Gereed heeft.

    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
    

Notitie

Voor een privé-AKS-cluster maakt u verbinding vanaf een eindpunt in hetzelfde virtuele netwerk als het cluster. Zie Een privé-AKS-cluster maken voor configuratie-instructies.

De toepassing implementeren

Het manifest AKS Store bevat de volgende Kubernetes-implementaties en -services:

  • Productservice: toont productgegevens.
  • Orderservice: Orders plaatsen.
  • Makeline-service: verwerkt orders uit de wachtrij en voltooit de orders.
  • Webwinkel: Webtoepassing voor klanten om producten te bekijken en bestellingen te plaatsen.
  • Store admin: Webtoepassing voor winkelmedewerkers om orders in de wachtrij te bekijken en productinformatie te beheren.
  • Virtuele klant: simuleert het maken van bestellingen op een geplande basis.
  • Virtuele werknemer: simuleert ordervoltooiing volgens planning.
  • DocumentDB: NoSQL exemplaar voor persistente gegevens.
  • RabbitMQ: Berichtenwachtrij voor een orderwachtrij.

Notitie

Voer geen stateful containers uit, zoals DocumentDB en RabbitMQ, zonder permanente opslag in productie. In dit artikel worden ze zonder permanente opslag gebruikt om het eenvoudig te maken. Gebruik voor productieworkloads beheerde services zoals Azure Cosmos DB of Azure Service Bus.

  1. Bekijk het YAML-manifest voor de toepassing.

  2. Implementeer de toepassing met behulp van de kubectl apply opdracht en geef de naam van uw YAML-manifest op.

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

Een OpenAI-service implementeren

Kies Azure OpenAI of de OpenAI-API voor de toepassing die wordt uitgevoerd op AKS.

  1. Maak in de Azure-portal een Azure OpenAI-exemplaar.
  2. Meld u aan bij Microsoft Foundry.
  3. Schakel de wisselknop New Foundry uit en selecteer vervolgens Alle resources weergeven onder Gebouw houden met Foundry.
  4. Selecteer de Azure OpenAI-resource die u hebt gemaakt en selecteer vervolgens Implementaties onder Gedeelde resources.
  5. Selecteer Model implementeren>basismodel implementeren.
  6. Selecteer het basismodel gpt-4o-mini , voer een implementatienaam in en implementeer vervolgens het model. Sla de implementatienaam op voor de volgende sectie.

Zie Aan de slag met het genereren van tekst met Azure OpenAI voor meer informatie over het maken van een Azure OpenAI-implementatie.

De AI-microservice implementeren

Implementeer de op Python gebaseerde AI-microservice die Gebruikmaakt van OpenAI om automatisch productbeschrijvingen te genereren. Deze microservice maakt verbinding met de AKS Store-toepassing die u in de vorige sectie hebt geïmplementeerd.

Gebruik de Azure OpenAI-resource en -modelimplementatie die u hebt gemaakt in de sectie Een OpenAI-service implementeren. Configureer de volgende omgevingsvariabelen in het AI-microservicemanifest:

Omgevingsvariabele Waarde
USE_AZURE_OPENAI Ingesteld op "True" het gebruik van Azure OpenAI.
AZURE_OPENAI_DEPLOYMENT_NAME De naam van uw gpt-4o-mini modelimplementatie in Microsoft Foundry.
AZURE_OPENAI_ENDPOINT Het eindpunt op de pagina Sleutels en eindpunt van uw Azure OpenAI-resource.
OPENAI_API_KEY Een API-sleutel op de pagina Sleutels en eindpunt van uw Azure OpenAI-resource.
  1. Maak een bestand met de naam ai-service.yaml en kopieer dit in het volgende manifest:

    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. Stel de omgevingsvariabele USE_AZURE_OPENAI in op "True".

  3. Kopieer in Microsoft Foundry de naam van de Azure OpenAI-implementatie en stel de AZURE_OPENAI_DEPLOYMENT_NAME waarde in.

  4. Selecteer in de Azure-portal sleutels en eindpunt in uw Azure OpenAI-resource. Kopieer het eindpunt en de API-sleutel en stel de AZURE_OPENAI_ENDPOINT waarden OPENAI_API_KEY in.

  5. Implementeer de toepassing met behulp van de kubectl apply opdracht en geef de naam van uw YAML-manifest op.

    kubectl apply -f ai-service.yaml
    

    In de volgende voorbeelduitvoer ziet u de gemaakte implementaties en services:

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

Notitie

Het rechtstreeks opslaan van API-sleutels in Kubernetes-manifesten is onveilig en kan geheimen beschikbaar maken in broncodebeheer. In dit voorbeeld worden manifestwaarden gebruikt voor het gemak. Voor productieworkloads moet u zich verifiëren bij Azure OpenAI met behulp van een beheerde identiteit of geheimen opslaan in Azure Key Vault.

De toepassing testen

  1. Controleer de status van de geïmplementeerde pods met behulp van de kubectl get pods opdracht.

    kubectl get pods
    

    Controleer of alle pods de status Actief hebben voordat u doorgaat.

  2. Haal het externe IP-adres voor De Store-beheerder op met behulp van de kubectl get service opdracht.

    kubectl get service store-admin
    

    Een Kubernetes-service stelt Store-beheerder beschikbaar via een openbare load balancer. Het kan enkele minuten duren voordat de load balancer een adres toewijst. De waarde EXTERNAL-IP wordt in behandeling weergegeven totdat het adres beschikbaar is.

    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. Herhaal de voorgaande stap voor de store-front service.

  4. Ga in een webbrowser naar het externe IP-adres voor Winkelbeheerder. In dit voorbeeld is het adres 40.64.86.161.

  5. Selecteer In Winkelbeheerder producten>toevoegen product.

  6. Na ai-service het starten wordt de knop Ai-assistent vragen weergegeven naast het beschrijvingsveld. Voer de naam, prijs en trefwoorden in, selecteer Ai-assistent vragen om een productbeschrijving te genereren en selecteer vervolgens Product opslaan.

  7. Controleer of dog smart collar wordt weergegeven in Store Admin.

    Schermopname van het nieuwe product in Store Admin.

  8. Ga naar het externe IP-adres voor Store Front en controleer of Dog Smart Collar wordt weergegeven.

    Schermopname van het nieuwe product in Store Front.

Volgende stappen

Nu u OpenAI-functionaliteit hebt toegevoegd aan een AKS-toepassing, kunt u Secure access to Azure OpenAI from Azure Kubernetes Service (AKS).

Zie de volgende bronnen voor meer informatie over generatieve AI-gebruiksvoorbeelden: