Azure Kubernetes Service'te (AKS) OpenAI kullanan bir uygulama dağıtma

Bu makalede AKS Store Tanıtım uygulamasını Azure Kubernetes Service (AKS) dağıtacak ve Azure OpenAI veya OpenAI API'sini ürün açıklamaları oluşturacak şekilde yapılandıracaksınız.

Buluta özel örnek uygulama, aşağıdakiler dahil olmak üzere birden çok dilde ve çerçevede yazılmış hizmetlerden oluşur:

  • Gin ile Golang
  • Actix-Web ile Rust
  • Vue.js ve Fastify ile JavaScript
  • FastAPI ile Python

Bu uygulamalar alışveriş yapanlara ve mağaza yöneticilerine ön uçlar, Bir RabbitMQ ileti kuyruğuna ve DocumentDB veritabanına veri gönderen REST API'leri ve trafiğin simülasyonunu yapan konsol uygulamaları sağlar.

Note

DocumentDB ve RabbitMQ gibi durum bilgisi olan kapsayıcıları üretimde kalıcı depolama olmadan çalıştırmayın. Bu makalede kolaylık sağlamak için kalıcı depolama olmadan kullanılır. Üretim iş yükleri için Azure Cosmos DB veya Azure Service Bus gibi yönetilen hizmetleri kullanın.

Örnek uygulamanın GitHub kod tabanına erişmek için bkz. AKS Store Tanıtımı.

Başlamadan önce

Önkoşullar

  • bash ortamını Azure Cloud Shell kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell ile çalışmaya başlama.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalıştırıyorsanız Azure CLI Docker kapsayıcısında çalıştırmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Docker kapsayıcısında Azure CLI çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'a kimlik doğrulama.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.

    • Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Kaynak grubu oluşturma

Azure kaynak grubu Azure kaynakları dağıtıp yönettiğiniz mantıksal bir grupdur. Bir kaynak grubu oluşturduğunuzda, bir konum belirtmeniz istenir. Bu konum, kaynak grubu meta verilerinizin depolama konumudur ve kaynak oluşturma sırasında başka bir bölge belirtmezseniz kaynaklarınızın Azure içinde çalıştığı konumdur.

Aşağıdaki örnek eastus konumunda myResourceGroup adlı bir kaynak grubu oluşturur.

az group create komutunu kullanarak bir kaynak grubu oluşturun.

az group create --name myResourceGroup --location eastus

Aşağıdaki örnek çıktıda kaynak grubunun başarıyla oluşturulduğu gösterilmektedir:

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

AKS kümesi oluşturma

Aşağıdaki örnek, myResourceGroup içinde myAKSCluster adlı bir küme oluşturur.

az aks create komutunu kullanarak bir AKS kümesi oluşturun.

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

Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür.

Kümeye bağlanma

Kubernetes kümesini yönetmek için Kubernetes komut satırı istemcisini kubectlkullanın. Azure Cloud Shell kullanıyorsanız kubectl zaten yüklüdür.

  1. kubectl yerel olarak az aks install-cli komutunu kullanarak yükleyin.

    az aks install-cli
    

    Note

    Linux tabanlı sisteminiz yükseltilmiş izinler gerektiriyorsa komutunu kullanın sudo az aks install-cli .

  2. kubectl'yi, az aks get-credentials komutunu kullanarak Kubernetes kümenize bağlanmak için yapılandırın.

    Bu komut aşağıdaki işlemleri çalıştırır:

    • Kubernetes CLI'yi kimlik bilgilerini kullanacak şekilde yapılandırmak için kimlik bilgilerini indirir.
    • Kubernetes yapılandırma dosyası~/.kube/configvarsayılan konumu kullanır. --file bağımsız değişkenini kullanarak Kubernetes yapılandırma dosyanız için farklı bir konum belirtin.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Kümelenize olan bağlantınızı kubectl get komutunu kullanarak doğrulayın. Bu komut, küme düğümlerinin listesini döndürür.

    kubectl get nodes
    

    Aşağıdaki örnek çıktı, önceki adımlarda oluşturulan düğümleri gösterir. Her düğümün Durumunun Hazır olduğunu doğrulayın.

    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

Özel aks kümesi için, kümeyle aynı sanal ağdaki bir uç noktadan bağlanın. Yapılandırma yönergeleri için bkz. Özel AKS kümesi oluşturma.

Uygulamayı dağıt

AKS Store uygulaması bildirimi aşağıdaki Kubernetes dağıtımlarını ve hizmetlerini içerir:

  • Ürün hizmeti: Ürün bilgilerini gösterir.
  • Sipariş hizmeti: Sipariş verir.
  • Satır içi hizmet: Kuyruktan gelen siparişleri işler ve siparişleri tamamlar.
  • Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
  • Mağaza yöneticisi: Mağaza çalışanlarının kuyruktaki siparişleri görüntülemesi ve ürün bilgilerini yönetmesi için web uygulaması.
  • Sanal müşteri: Sipariş oluşturma işlemini zamanlanmış olarak simüle eder.
  • Sanal çalışan: Sipariş tamamlamayı belirli bir program dahilinde simüle eder.
  • DocumentDB: Kalıcı veriler için NoSQL örneği.
  • RabbitMQ: Sipariş kuyruğu için ileti kuyruğu.

Note

DocumentDB ve RabbitMQ gibi durum bilgisi olan kapsayıcıları üretimde kalıcı depolama olmadan çalıştırmayın. Bu makalede kolaylık sağlamak için kalıcı depolama olmadan kullanılır. Üretim iş yükleri için Azure Cosmos DB veya Azure Service Bus gibi yönetilen hizmetleri kullanın.

  1. Uygulama için YAML bildirimi gözden geçirin.

  2. komutunu kullanarak uygulamayı dağıtın kubectl apply ve YAML bildiriminizin adını belirtin.

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

OpenAI hizmeti dağıtma

AKS üzerinde çalışan uygulama için OpenAI Azure veya OpenAI API'sini seçin.

  1. Azure portalında bir Azure OpenAI örneği oluşturun.
  2. Microsoft Foundry'ye giriş yapın.
  3. Yeni Dökümhane iki durumlu düğmesini kapatın ve Ardından Foundry ile oluşturmaya devam et'in altında Tüm kaynakları görüntüle'yi seçin.
  4. Oluşturduğunuz Azure OpenAI kaynağını seçin ve ardından Paylaşılan kaynaklar'ın altında Dağıtımlar'ı seçin.
  5. Deploy modeli seçin Temel modeli dağıt.
  6. gpt-4o-mini temel modelini seçin, bir dağıtım adı girin ve modeli dağıtın. Sonraki bölüm için dağıtım adını kaydedin.

Azure OpenAI dağıtımı oluşturma hakkında daha fazla bilgi için bkz. Azure OpenAI kullanarak metin oluşturmaya başlama.

Yapay zeka mikro hizmetini dağıtma

Otomatik olarak ürün açıklamaları oluşturmak için OpenAI kullanan Python tabanlı yapay zeka mikro hizmetini dağıtın. Bu mikro hizmet, önceki bölümde dağıtılan AKS Mağazası uygulamasına bağlanır.

OpenAI hizmetini dağıtma bölümünde oluşturduğunuz Azure OpenAI kaynağını ve model dağıtımını kullanın. AI mikro hizmet bildiriminde aşağıdaki ortam değişkenlerini yapılandırın:

Ortam değişkeni Değer
USE_AZURE_OPENAI "True" Azure OpenAI kullanmak için olarak ayarlayın.
AZURE_OPENAI_DEPLOYMENT_NAME Microsoft Foundry'de model dağıtımınızın gpt-4o-mini adı.
AZURE_OPENAI_ENDPOINT Azure OpenAI kaynağınızın Anahtarlar ve Uç Nokta sayfasından uç nokta.
OPENAI_API_KEY Azure OpenAI kaynağınızın Anahtarlar ve Uç Nokta sayfasından bir API anahtarı.
  1. Adlı ai-service.yaml bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın:

    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. Ortam değişkenini USE_AZURE_OPENAI olarak "True"ayarlayın.

  3. Microsoft Foundry'de Azure OpenAI dağıtım adını kopyalayın ve değeri ayarlayınAZURE_OPENAI_DEPLOYMENT_NAME.

  4. Azure portalında, Azure OpenAI kaynağınızda Anahtarlar ve Uç Nokta'yı seçin. Uç nokta ve API anahtarını kopyalayın ve ve OPENAI_API_KEY değerlerini ayarlayınAZURE_OPENAI_ENDPOINT.

  5. komutunu kullanarak uygulamayı dağıtın kubectl apply ve YAML bildiriminizin adını belirtin.

    kubectl apply -f ai-service.yaml
    

    Aşağıdaki örnek çıktı, başarıyla oluşturulan dağıtımları ve hizmetleri gösterir:

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

Note

API anahtarlarını doğrudan Kubernetes bildirimlerinde depolamak güvenli değildir ve kaynak denetiminde gizli dizileri kullanıma açabilir. Bu örnek, kolaylık sağlamak için bildirim değerlerini kullanır. Üretim iş yükleri için, yönetilen kimlik kullanarak OpenAI Azure kimliğini doğrulayın veya gizli dizileri Azure Key Vault'de depolayın.

Uygulamayı test etme

  1. komutunu kullanarak kubectl get pods dağıtılan podların durumunu denetleyin.

    kubectl get pods
    

    Devam etmeden önce tüm podların Çalışıyor durumunda olduğunu doğrulayın.

  2. komutunu kullanarak kubectl get service Mağaza Yöneticisi'nin dış IP adresini alın.

    kubectl get service store-admin
    

    Kubernetes hizmeti, genel yük dengeleyici aracılığıyla Mağaza Yöneticisi'ni kullanıma sunar. Yük dengeleyicinin adres ataması birkaç dakika sürebilir. EXTERNAL-IP değeri, adres kullanılabilir olana kadar beklemede olarak görüntülenir.

    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. Hizmet için store-front önceki adımı yineleyin.

  4. Web tarayıcısında Mağaza Yöneticisi'nin dış IP adresine gidin. Bu örnekte adres 40.64.86.161'dir.

  5. Mağaza Yöneticisi'nde Ürünler>Ürün Ekle'yi seçin.

  6. Başladıktan sonra ai-service , açıklama alanının yanında Yapay Zeka Yardımcısı'na Sor düğmesi görüntülenir. Adı, fiyatı ve anahtar sözcükleri girin, AI Yardımcısı'na sorun'u seçerek ürün açıklaması oluşturun ve ardından Ürünü Kaydet'i seçin.

  7. Köpek Akıllı Yaka'nın Mağaza Yöneticisi'nde göründüğünü doğrulayın.

    Mağaza Yöneticisi'ndeki yeni ürünü gösteren ekran görüntüsü.

  8. Mağaza Ön'e yönelik dış IP adresine gidin ve Köpek Akıllı Yaka'nın göründüğünü doğrulayın.

    Mağaza Ön Kısmındaki yeni ürünü gösteren ekran görüntüsü.

Sonraki adımlar

Bir AKS uygulamasına OpenAI işlevselliği eklediğinize göre, Azure Kubernetes Service (AKS) üzerinden Azure OpenAI'ye güvenli erişimi sağlayabilirsiniz.

Yapay zeka kullanım örnekleri hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: