Baca dalam bahasa Inggris

Bagikan melalui


Menyebarkan aplikasi yang menggunakan OpenAI di Azure Kubernetes Service (AKS)

Dalam artikel ini, Anda mempelajari cara menyebarkan aplikasi yang menggunakan Azure OpenAI atau OpenAI di AKS. Dengan OpenAI, Anda dapat dengan mudah mengadaptasi model AI yang berbeda, seperti pembuatan konten, ringkasan, pencarian semantik, dan bahasa alami untuk pembuatan kode, untuk tugas spesifik Anda. Anda mulai dengan menyebarkan kluster AKS di langganan Azure Anda. Kemudian, Anda menyebarkan layanan OpenAI dan aplikasi sampel.

Sampel aplikasi asli cloud mewakili implementasi dunia nyata. Aplikasi multi-kontainer terdiri dari aplikasi yang ditulis dalam beberapa bahasa dan kerangka kerja, termasuk:

  • Golang dengan Gin
  • Karat dengan Actix-Web
  • JavaScript dengan Vue.js dan Fastify
  • Python dengan FastAPI

Aplikasi ini menyediakan ujung depan bagi pelanggan dan admin toko, REST API untuk mengirim data ke antrean pesan RabbitMQ dan database MongoDB, dan aplikasi konsol untuk mensimulasikan lalu lintas.

Catatan

Kami tidak menyarankan untuk menjalankan kontainer stateful, seperti MongoDB dan Rabbit MQ, tanpa penyimpanan persisten untuk produksi. Kami menggunakannya di sini untuk kesederhanaan, tetapi sebaiknya gunakan layanan terkelola, seperti Azure CosmosDB atau Azure Bus Layanan.

Untuk mengakses basis kode GitHub untuk aplikasi sampel, lihat Demo Penyimpanan AKS.

Sebelum Anda mulai

  • Anda memerlukan akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, buat akun secara gratis.
  • Untuk demo ini, Anda dapat menggunakan layanan Azure OpenAI atau layanan OpenAI.
    • Jika Anda berencana menggunakan layanan Azure OpenAI, Anda perlu meminta akses untuk mengaktifkannya di langganan Azure Anda menggunakan formulir Minta akses ke Layanan Azure OpenAI.
    • Jika Anda berencana menggunakan OpenAI, daftar di situs web OpenAI.

Prasyarat

Buat grup sumber daya

Grup sumber daya Azure adalah grup logis tempat Anda menyebarkan dan mengelola sumber daya Azure. Saat membuat grup sumber daya, Anda diminta untuk menentukan lokasi. Lokasi ini adalah lokasi penyimpanan metadata grup sumber daya Anda dan tempat sumber daya Anda berjalan di Azure jika Anda tidak menentukan wilayah lain selama pembuatan sumber daya.

Contoh berikut ini menampilkan cara membuat grup sumber daya bernama myResourceGroup di lokasi eastus.

  • Buat grup sumber daya menggunakan az group create perintah .

    az group create --name myResourceGroup --location eastus
    

    Contoh output berikut menunjukkan keberhasilan pembuatan grup sumber daya:

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

Membuat kluster AKS

Contoh berikut membuat kluster bernama myAKSCluster di myResourceGroup.

  • Buat kluster AKS menggunakan az aks create perintah .

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

    Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.

Menyambungkan ke kluster

Untuk mengelola kluster Kubernetes, Anda menggunakan klien baris perintah Kube, kubectl. kubectl sudah diinstal jika Anda menggunakan Azure Cloud Shell.

  1. Instal kubectl secara lokal menggunakan az aks install-cli perintah .

    az aks install-cli
    

    Catatan

    Jika sistem berbasis Linux Anda memerlukan izin yang ditingkatkan, Anda dapat menggunakan sudo az aks install-cli perintah .

  2. Konfigurasikan kubectl untuk terhubung ke kluster Kubernetes menggunakan perintah az aks get-credentials.

    Perintah ini menjalankan operasi berikut:

    • Unduh informasi masuk dan konfigurasikan Kube CLI untuk menggunakannya.
    • Gunakan ~/.kube/config, lokasi default untuk file konfigurasi Kube. Tentukan lokasi berbeda untuk file konfigurasi Kubernetes Anda menggunakan argumen --file.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Verifikasi koneksi ke kluster Anda menggunakan kubectl get perintah . Perintah ini menampilkan daftar node kluster.

    kubectl get nodes
    

    Contoh output berikut menunjukkan simpul yang dibuat di langkah-langkah sebelumnya. Pastikan status simpul Siap.

    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
    

Catatan

Untuk kluster privat, simpul mungkin tidak dapat dijangkau jika Anda mencoba menyambungkannya melalui alamat IP publik. Untuk memperbaikinya, Anda perlu membuat titik akhir dalam VNET yang sama dengan kluster yang akan disambungkan. Ikuti instruksi untuk Membuat kluster AKS privat lalu sambungkan ke kluster tersebut.

Menyebarkan aplikasi

Diagram arsitektur demo AKS AI.

Manifes aplikasi AKS Store mencakup penyebaran dan layanan Kubernetes berikut:

  • Layanan produk: Menampilkan informasi produk.
  • Layanan pesanan: Menempatkan pesanan.
  • Layanan makeline: Memproses pesanan dari antrean dan menyelesaikan pesanan.
  • Simpan depan: Aplikasi web bagi pelanggan untuk melihat produk dan melakukan pemesanan.
  • Admin toko: Aplikasi web untuk karyawan toko untuk melihat pesanan dalam antrean dan mengelola informasi produk.
  • Pelanggan virtual: Mensimulasikan pembuatan pesanan secara terjadwal.
  • Pekerja virtual: Mensimulasikan penyelesaian pesanan secara terjadwal.
  • Mongo DB: Instans NoSQL untuk data yang bertahan.
  • Rabbit MQ: Antrean pesan untuk antrean pesanan.

Catatan

Kami tidak menyarankan untuk menjalankan kontainer stateful, seperti MongoDB dan Rabbit MQ, tanpa penyimpanan persisten untuk produksi. Kami menggunakannya di sini untuk kesederhanaan, tetapi sebaiknya gunakan layanan terkelola, seperti Azure CosmosDB atau Azure Bus Layanan.

  1. Tinjau manifes YAML untuk aplikasi.

  2. Sebarkan aplikasi menggunakan kubectl apply perintah dan tentukan nama manifes YAML Anda.

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

    Contoh output berikut menunjukkan penyebaran dan layanan yang berhasil dibuat:

    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
    

Menyebarkan OpenAI

Anda dapat menggunakan Azure OpenAI atau OpenAI dan menjalankan aplikasi Anda di AKS.

  1. Aktifkan Azure OpenAI pada langganan Azure Anda dengan mengisi formulir Minta Akses ke Layanan Azure OpenAI.
  2. Di portal Azure, buat instans Azure OpenAI.
  3. Pilih instans Azure OpenAI yang Anda buat.
  4. Pilih Kunci dan Titik Akhir untuk menghasilkan kunci.
  5. Pilih Penyebaran Model Penyebaran>Terkelola untuk membuka studio Azure OpenAI.
  6. Buat penyebaran baru menggunakan model gpt-35-turbo .

Untuk informasi selengkapnya tentang cara membuat penyebaran di Azure OpenAI, lihat Mulai membuat teks menggunakan Azure OpenAI Service.

Menyebarkan layanan AI

Sekarang setelah aplikasi disebarkan, Anda dapat menyebarkan layanan mikro berbasis Python yang menggunakan OpenAI untuk secara otomatis menghasilkan deskripsi untuk produk baru yang ditambahkan ke katalog toko.

  1. Buat file bernama ai-service.yaml dan salin dalam manifes berikut:

    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
    
  2. Atur variabel USE_AZURE_OPENAI lingkungan ke "True".

  3. Dapatkan nama penyebaran Azure OpenAI Anda dari studio Azure OpenAI dan isi nilainya AZURE_OPENAI_DEPLOYMENT_NAME .

  4. Dapatkan titik akhir Azure OpenAI dan kunci Azure OpenAI API Anda dari portal Azure dengan memilih Kunci dan Titik Akhir di bilah kiri sumber daya. AZURE_OPENAI_ENDPOINT Perbarui dan OPENAI_API_KEY di YAML yang sesuai.

  5. Sebarkan aplikasi menggunakan kubectl apply perintah dan tentukan nama manifes YAML Anda.

    kubectl apply -f ai-service.yaml
    

    Contoh output berikut menunjukkan penyebaran dan layanan yang berhasil dibuat:

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

Catatan

Secara langsung menambahkan informasi sensitif, seperti kunci API, ke file manifes Kubernetes Anda tidak aman dan mungkin secara tidak sengaja berkomitmen pada repositori kode. Kami menambahkannya di sini untuk kesederhanaan. Untuk beban kerja produksi, gunakan Identitas Terkelola untuk mengautentikasi ke layanan Azure OpenAI atau menyimpan rahasia Anda di Azure Key Vault.

Uji aplikasi

  1. Periksa status pod yang disebarkan menggunakan perintah kubectl get pods .

    kubectl get pods
    

    Pastikan semua pod Berjalan sebelum melanjutkan ke langkah berikutnya.

    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
    
  2. Dapatkan IP aplikasi web admin toko dan simpan aplikasi web depan menggunakan kubectl get service perintah .

    kubectl get service store-admin
    

    Aplikasi ini mengekspos situs Admin Toko ke internet melalui load balancer publik yang disediakan oleh layanan Kubernetes. Diperlukan beberapa menit untuk menyelesaikan proses ini. IP EKSTERNAL awalnya menunjukkan tertunda hingga layanan muncul dan menunjukkan alamat IP.

    NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
    store-admin   LoadBalancer   10.0.142.228   40.64.86.161    80:32494/TCP   50m    
    

    Ulangi langkah yang sama untuk layanan bernama 'store-front''.

  3. Buka browser web dan telusuri ke alamat IP eksternal layanan Anda. Dalam contoh yang diperlihatkan di sini, buka 40.64.86.161 untuk melihat Admin Toko di browser. Ulangi langkah yang sama untuk Store Front.

  4. Di admin toko, pilih tab produk, lalu pilih Tambahkan Produk.

  5. Ketika 'ai-service'' berhasil berjalan, Anda akan melihat tombol Ask OpenAI di samping bidang deskripsi. Isi nama, harga, dan kata kunci, lalu buat deskripsi produk dengan memilih Minta OpenAI>Simpan produk.

    Cuplikan layar cara menggunakan openAI untuk menghasilkan deskripsi produk.

  6. Sekarang Anda dapat melihat produk baru yang Anda buat di Admin Toko yang digunakan oleh penjual. Dalam gambar, Anda dapat melihat Jungle Monkey Chew Toy ditambahkan.

    Cuplikan layar menampilkan produk baru di halaman admin toko.

  7. Anda juga dapat melihat produk baru yang Anda buat di Store Front yang digunakan oleh pembeli. Dalam gambar, Anda dapat melihat Jungle Monkey Chew Toy ditambahkan. Ingatlah untuk mendapatkan alamat IP front penyimpanan menggunakan kubectl get service perintah .

    Cuplikan layar menampilkan produk baru di halaman depan toko.

Langkah berikutnya

Setelah menambahkan fungsionalitas OpenAI ke aplikasi AKS, Anda dapat Mengamankan akses ke Azure OpenAI dari Azure Kubernetes Service (AKS).

Untuk mempelajari selengkapnya tentang kasus penggunaan AI generatif, lihat sumber daya berikut: