Distribuera ett program som använder OpenAI på Azure Kubernetes Service (AKS)

I den här artikeln distribuerar du AKS Store Demo-programmet på Azure Kubernetes Service (AKS) och konfigurerar Azure OpenAI eller OpenAI API för att generera produktbeskrivningar.

Det molnbaserade exempelprogrammet består av tjänster som skrivits på flera språk och ramverk, inklusive:

  • Golang med Gin
  • Rust med Actix-Web
  • JavaScript med Vue.js och Fastify
  • Python med FastAPI

Dessa program tillhandahåller klientdelar för kunder och butiksadministratörer, REST-API:er som skickar data till en RabbitMQ-meddelandekö och DocumentDB-databas och konsolappar som simulerar trafik.

Note

Kör inte tillståndskänsliga containrar, till exempel DocumentDB och RabbitMQ, utan beständig lagring i produktion. Den här artikeln använder dem utan beständig lagring för enkelhetens skull. För produktionsarbetsbelastningar använder du hanterade tjänster som Azure Cosmos DB eller Azure Service Bus.

Information om hur du kommer åt GitHub kodbasen för exempelprogrammet finns i AKS Store Demo.

Innan du börjar

Prerequisites

Skapa en resursgrupp

En Azure resursgrupp är en logisk grupp där du distribuerar och hanterar Azure resurser. När du skapar en resursgrupp uppmanas du att ange en plats. Den här platsen är lagringsplatsen för dina resursgruppsmetadata och där dina resurser körs i Azure om du inte anger en annan region när resursen skapas.

I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus.

Skapa en resursgrupp med kommandot az group create.

az group create --name myResourceGroup --location eastus

Följande exempelutdata visar hur resursgruppen har skapats:

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

Skapa ett AKS-kluster

I följande exempel skapas ett kluster med namnet myAKSCluster i myResourceGroup.

Skapa ett AKS-kluster med hjälp av kommandot az aks create.

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

Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret.

Ansluta till klustret

Om du vill hantera ett Kubernetes-kluster använder du Kubernetes kommandoradsklient, kubectl. Om du använder Azure Cloud Shell är kubectl redan installerat.

  1. Installera kubectl lokalt med kommandot az aks install-cli .

    az aks install-cli
    

    Note

    Om ditt Linux-baserade system kräver utökade behörigheter använder du sudo az aks install-cli kommandot .

  2. Konfigurera kubectl för att ansluta till kubernetes-klustret med hjälp av az aks get-credentials kommandot .

    Det här kommandot kör följande åtgärder:

    • Laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem.
    • Använder ~/.kube/config, standardplatsen för Kubernetes-konfigurationsfilen. Ange en annan plats för kubernetes-konfigurationsfilen med argumentet --file .
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Kontrollera anslutningen till klustret med hjälp av kubectl get kommandot . Det här kommandot returnerar en lista över klusternoderna.

    kubectl get nodes
    

    Följande exempelutdata visar noderna som skapades i föregående steg. Kontrollera att varje nod har statusen Klar.

    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
    

Note

För ett privat AKS-kluster ansluter du från en slutpunkt i samma virtuella nätverk som klustret. Konfigurationsinstruktioner finns i Skapa ett privat AKS-kluster.

Distribuera programmet

Manifestet AKS Store innehåller följande Kubernetes-distributioner och -tjänster:

  • Produkttjänst: Visar produktinformation.
  • Ordertjänst: Gör beställningar.
  • Makeline-tjänst: Bearbetar beställningar från kön och slutför beställningarna.
  • Butiksfront: Webbprogram där kunder kan visa produkter och göra beställningar.
  • Butiksadministratör: Webbprogram för butiksanställda för att visa beställningar i kön och hantera produktinformation.
  • Virtuell kund: Simulerar skapande av order enligt ett schema.
  • Virtuell arbetare: Simulerar orderslut på schemalagd basis.
  • DocumentDB: NoSQL instans för beständiga data.
  • RabbitMQ: Meddelandekö för en orderkö.

Note

Kör inte tillståndskänsliga containrar, till exempel DocumentDB och RabbitMQ, utan beständig lagring i produktion. Den här artikeln använder dem utan beständig lagring för enkelhetens skull. För produktionsarbetsbelastningar använder du hanterade tjänster som Azure Cosmos DB eller Azure Service Bus.

  1. Granska YAML-manifestet för programmet.

  2. Distribuera programmet med kommandot kubectl apply och ange namnet på ditt YAML-manifest.

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

Distribuera en OpenAI-tjänst

Välj Azure OpenAI eller OpenAI API för programmet som körs på AKS.

  1. I Azure-portalen skapar du en Azure OpenAI-instans.
  2. Logga in på Microsoft Foundry.
  3. Inaktivera växlingsknappen Ny gjutning och välj sedan Visa alla resurser under Fortsätt att skapa med Foundry.
  4. Välj den Azure OpenAI-resurs som du skapade och välj sedan Distributioner under Delade resurser.
  5. Välj Distribuera modell>Distribuera basmodell.
  6. Välj basmodellen gpt-4o-mini , ange ett distributionsnamn och distribuera sedan modellen. Spara distributionsnamnet för nästa avsnitt.

Mer information om hur du skapar en Azure OpenAI-distribution finns i Komma igång med att generera text med Azure OpenAI.

Distribuera AI-mikrotjänsten

Distribuera den Python-baserade AI-mikrotjänsten som använder OpenAI för att automatiskt generera produktbeskrivningar. Den här mikrotjänsten ansluter till AKS Store-programmet som du distribuerade i föregående avsnitt.

Använd resurs- och modelldistributionen Azure OpenAI som du skapade i avsnittet Distribuera en OpenAI-tjänst. Konfigurera följande miljövariabler i AI-mikrotjänstmanifestet:

Miljövariabel Value
USE_AZURE_OPENAI Ange till "True" för att använda Azure OpenAI.
AZURE_OPENAI_DEPLOYMENT_NAME Namnet på modelldistributionen gpt-4o-mini i Microsoft Foundry.
AZURE_OPENAI_ENDPOINT Slutpunkten från sidan Nycklar och slutpunkt för din Azure OpenAI-resurs.
OPENAI_API_KEY En API-nyckel från sidan Nycklar och slutpunkt för din Azure OpenAI-resurs.
  1. Skapa en fil med namnet ai-service.yaml och kopiera i följande 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. Ange miljövariabeln USE_AZURE_OPENAI till "True".

  3. I Microsoft Foundry kopierar du Azure OpenAI-distributionsnamnet och anger värdetAZURE_OPENAI_DEPLOYMENT_NAME.

  4. I Azure-portalen väljer du Nycklar och slutpunkt i din Azure OpenAI-resurs. Kopiera slutpunkten och API-nyckeln och ange AZURE_OPENAI_ENDPOINT sedan värdena och OPENAI_API_KEY .

  5. Distribuera programmet med kommandot kubectl apply och ange namnet på ditt YAML-manifest.

    kubectl apply -f ai-service.yaml
    

    Följande exempelutdata visar de framgångsrikt skapade distributionerna och tjänsterna:

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

Note

Det är osäkert att lagra API-nycklar direkt i Kubernetes-manifest och kan exponera hemligheter i källkontrollen. I det här exemplet används manifestvärden för enkelhetens skull. För produktionsarbetsbelastningar autentiserar du till Azure OpenAI med hjälp av en hanterad identitet eller lagrar hemligheter i Azure Key Vault.

Testa programmet

  1. Kontrollera statusen för de distribuerade poddarna med kommandot kubectl get pods .

    kubectl get pods
    

    Kontrollera att alla poddar har statusen Körs innan du fortsätter.

  2. Hämta den externa IP-adressen för Store Admin med hjälp kubectl get service av kommandot .

    kubectl get service store-admin
    

    En Kubernetes-tjänst exponerar butiksadministratören via en offentlig lastbalanserare. Det kan ta några minuter för lastbalanseraren att tilldela en adress. Värdet EXTERNAL-IP visar väntande tills adressen är tillgänglig.

    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. Upprepa föregående steg för store-front tjänsten.

  4. I en webbläsare går du till den externa IP-adressen för Store Admin. I det här exemplet är adressen 40.64.86.161.

  5. I Store Admin väljer du Produkter>Lägg till produkt.

  6. När du har ai-service startat visas knappen Fråga AI-assistent bredvid beskrivningsfältet. Ange namn, pris och nyckelord, välj Be AI Assistant att generera en produktbeskrivning och välj sedan Spara produkt.

  7. Kontrollera att Dog Smart Collar visas i Store Admin.

    Skärmbild som visar den nya produkten i Store Admin.

  8. Gå till den externa IP-adressen för Store Front och kontrollera att Dog Smart Collar visas.

    Skärmbild som visar den nya produkten i Store Front.

Nästa steg

Nu när du har lagt till OpenAI-funktioner i ett AKS-program kan du säkerställa åtkomst till Azure OpenAI från Azure Kubernetes Service (AKS).

Mer information om generativa AI-användningsfall finns i följande resurser: