All Products
Search
Document Center

Alibaba Cloud Service Mesh:Mengakses layanan LLM dari kluster menggunakan gerbang keluar ASM

Last Updated:Jun 27, 2026

ASM memungkinkan Anda mengakses layanan LLM eksternal melalui gerbang keluar (egress gateway). Pendekatan ini ditujukan terutama untuk skenario di mana aplikasi klien berada di dalam kluster. Topik ini menjelaskan cara menggunakan gerbang keluar untuk mengakses layanan eksternal dari aplikasi yang berjalan di dalam kluster dengan proxy sidecar yang telah disuntikkan.

Prasyarat

Ikhtisar

Tanpa gerbang keluar, permintaan klien dicegat oleh proxy sidecar, yang kemudian meneruskan permintaan tersebut ke penyedia LLM. Karena sidecar dan klien berada dalam Pod yang sama, metode ini menimbulkan beberapa risiko keamanan, seperti kebocoran Kunci API dan akses tidak sah. Jika Anda khawatir terhadap risiko tersebut, kami sangat menyarankan penggunaan gerbang keluar untuk mengarahkan permintaan.

Penggunaan gerbang keluar ASM meningkatkan keamanan. Karena gerbang keluar ditempatkan terpisah dari klien, Anda dapat memanfaatkan mekanisme Role-Based Access Control (RBAC) pada kluster ACK untuk membatasi siapa yang dapat mengelolanya, sehingga meningkatkan keamanan keseluruhan gerbang tersebut. Gerbang keluar menangani semua operasi keamanan, seperti penambahan dinamis Kunci API serta penerapan kebijakan otentikasi dan otorisasi. Desain ini memungkinkan Anda memanfaatkan seluruh fitur keamanan gerbang ASM secara optimal.

Diagram berikut menunjukkan alur permintaan yang digunakan dalam topik ini:

Langkah 1: Buat gerbang keluar dan resource Gateway

  1. Buat gerbang keluar, buka port 80, dan aktifkan Support two-way TLS authentication. Untuk detailnya, lihat Buat Gerbang Keluar.

  2. Buat file bernama egress-gw.yaml dengan konten berikut.

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: egress-gw
      namespace: istio-system
    spec:
      selector:
        istio: egressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: http
            number: 80
            protocol: HTTPS
          tls:
            mode: ISTIO_MUTUAL
  3. Gunakan file kubeconfig untuk instans ASM Anda untuk menjalankan perintah berikut dan membuat resource Gateway.

    kubectl apply -f egress-gw.yaml

Langkah 2: Buat LLMProvider untuk gerbang keluar

Penerapan LLMProvider hanya pada gerbang keluar memastikan Kunci API disimpan hanya di memori gerbang tersebut, sehingga tidak dapat diakses oleh klien.

  1. Buat file bernama dashscope-qwen.yaml dengan konten berikut.

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: LLMProvider
    metadata:  
      name: dashscope-qwen
      namespace: istio-system
    spec:
      workloadSelector:
        labels:
          istio: egressgateway
      host: dashscope.aliyuncs.com
      path: /compatible-mode/v1/chat/completions
      configs:
        defaultConfig:
          openAIConfig:
            model: qwen1.5-72b-chat  # Seri model besar open-source Qwen
            stream: false
            apiKey: ${API_KEY}
  2. Jalankan perintah berikut untuk membuat LLMProvider.

    kubectl apply -f dashscope-qwen.yaml

Langkah 3: Buat LLMRoute

  1. Buat file bernama dashscope-route.yaml dengan konten berikut untuk mengarahkan trafik ke gerbang keluar.

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: LLMRoute
    metadata:  
      name: dashscope-route
    spec:
      host: dashscope.aliyuncs.com
      gateways:
      - mesh
      - istio-system/egress-gw
      rules:
      - name: mesh-route # Saat sidecar menerima permintaan untuk dashscope.aliyuncs.com, permintaan tersebut diteruskan ke gerbang keluar.
        matches:
        - gateways:
          - mesh
        backendRefs:
        - providerHost: istio-egressgateway.istio-system.svc.cluster.local
      - name: egress-gw-route # Saat gerbang keluar menerima permintaan untuk dashscope.aliyuncs.com, permintaan tersebut diteruskan ke penyedia sebenarnya.
        matches:
        - gateways:
          - istio-system/egress-gw
        backendRefs:
        - providerHost: dashscope.aliyuncs.com
  2. Jalankan perintah berikut untuk membuat LLMRoute.

    kubectl apply -f dashscope-route.yaml

Langkah 4: Uji konfigurasi

Gunakan file kubeconfig untuk kluster ACK Anda untuk menjalankan perintah berikut guna menguji konfigurasi.

kubectl exec deployment/sleep -it -- curl --location 'http://dashscope.aliyuncs.com' \
--header 'Content-Type: application/json' \
--data '{
    "messages": [
        {"role": "user", "content": "Introduce yourself"}
    ]
}'

Output yang diharapkan:

{"choices":[{"message":{"role":"assistant","content":"Hello! I am Qwen, a pre-trained language model developed by Alibaba Cloud. My purpose is to assist users in generating various types of text, such as articles, stories, poems, and answering questions by leveraging my extensive knowledge and understanding of context. Although I'm an AI, I don't have a physical body or personal experiences like human beings do, but I've been trained on a vast corpus of text data, which allows me to engage in conversations, provide information, or help with various tasks to the best of my abilities. So, feel free to ask me anything, and I'll do my best to provide helpful and informative responses!"},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion","usage":{"prompt_tokens":12,"completion_tokens":130,"total_tokens":142},"created":1720680044,"system_fingerprint":null,"model":"qwen1.5-72b-chat","id":"chatcmpl-3608dcd5-e3ad-9ade-bc70-xxxxxxxxxxxxxx"}

Langkah 5: Konfigurasikan kebijakan otorisasi

  1. Buat file bernama authpolicy.yaml dengan konten berikut.

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: test
      namespace: istio-system
    spec:
      action: DENY
      rules:
      - from:
        - source:
            principals:
            - cluster.local/ns/default/sa/sleep
        to:
        - operation:
            hosts:
            - dashscope.aliyuncs.com
      selector:
        matchLabels:
          istio: egressgateway
  2. Gunakan file kubeconfig untuk instans ASM Anda untuk menjalankan perintah berikut guna menerapkan kebijakan otorisasi.

    kubectl apply -f authpolicy.yaml
  3. Jalankan kembali perintah dari Langkah 4 untuk menguji kebijakan tersebut.

    Output yang diharapkan:

    RBAC: access denied

    Output tersebut menunjukkan bahwa permintaan ditolak.

Catatan

Kemampuan keamanan yang disediakan gerbang ASM untuk permintaan HTTP standar juga berlaku untuk permintaan LLM. Kemampuan tersebut mencakup berbagai kebijakan otorisasi, otentikasi JWT, dan layanan otorisasi kustom. Dengan menerapkan kebijakan ini pada gerbang keluar, Anda dapat mengamankan aplikasi Anda secara lebih efektif.