全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Klien di dalam cluster mengakses layanan LLM melalui ASM egress gateway

更新时间:Jul 02, 2025

Service Mesh (ASM) memungkinkan akses ke layanan LLM eksternal melalui egress gateway. Hal ini sangat berguna untuk skenario di mana peminta berada di dalam cluster dan memiliki sidecar yang diinjeksi. Topik ini menjelaskan proses mengakses layanan di luar cluster melalui egress gateway.

Prasyarat

Ikhtisar

Tanpa egress gateway, permintaan klien diintersep oleh sidecar, yang kemudian memulai permintaan ke penyedia LLM. Baik sidecar maupun klien berada dalam pod yang sama, menyajikan risiko keamanan seperti paparan Kunci API dan akses tidak sah. Untuk mengurangi risiko ini, disarankan menggunakan model routing egress gateway.

Dengan mengintegrasikan ASM egress gateway yang ditempatkan secara terpisah dari klien ke dalam jejak permintaan, Anda dapat dengan mudah mengelola akses ke egress gateway menggunakan mekanisme RBAC yang disediakan oleh kluster ACK, sehingga meningkatkan tingkat keamanan. Selain itu, manajemen Kunci API dan kebijakan otentikasi dikonfigurasikan untuk egress gateway, memungkinkan Anda memanfaatkan semua kemampuan keamanan dari gateway ASM.

Jejak permintaan yang dibahas dalam topik ini adalah sebagai berikut:

Langkah 1: Buat egress gateway dan aturan gateway

  1. Buat egress gateway, aktifkan port 80 untuk gateway, dan aktifkan Support two-way TLS authentication. Untuk langkah-langkah spesifik, lihat Buat Egress Gateway.

  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. Jalankan perintah berikut untuk membuat aturan gateway menggunakan file kubeconfig dari instance ASM:

    kubectl apply -f egress-gw.yaml

Langkah 2: Buat LLMProvider yang hanya berlaku pada egress gateway

Membuat LLMProvider yang hanya efektif pada egress gateway memastikan bahwa KUNCI API tetap berada hanya di memori egress gateway, mencegah akses mudah 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  # Qwen seri sumber terbuka besar
            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 lalu lintas ke egress gateway:

    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 # Setelah sidecar menerima permintaan dari dashscope.aliyuncs.com, teruskan ke egress gateway
        matches:
        - gateways:
          - mesh
        backendRefs:
        - providerHost: istio-egressgateway.istio-system.svc.cluster.local
      - name: egress-gw-route # Setelah egress gateway menerima permintaan dari dashscope.aliyuncs.com, teruskan ke penyedia asli
        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: Verifikasi

Jalankan perintah berikut untuk memulai pengujian menggunakan file kubeconfig dari kluster ACK pada bidang data plane:

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

Output yang Diharapkan:

{"choices":[{"message":{"role":"assistant","content":"Halo! Saya adalah Qwen, model bahasa pra-latih yang dikembangkan oleh Alibaba Cloud. Tujuan saya adalah membantu pengguna dalam menghasilkan berbagai jenis teks, seperti artikel, cerita, puisi, dan menjawab pertanyaan dengan memanfaatkan pengetahuan luas dan pemahaman konteks saya. Meskipun saya adalah AI, saya tidak memiliki tubuh fisik atau pengalaman pribadi seperti manusia, tetapi saya telah dilatih pada kumpulan data teks yang sangat besar, yang memungkinkan saya terlibat dalam percakapan, memberikan informasi, atau membantu berbagai tugas sebaik mungkin. Jadi, jangan ragu untuk bertanya apa pun, dan saya akan melakukan yang terbaik untuk memberikan tanggapan yang membantu dan informatif!"},"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. Jalankan perintah berikut untuk mengonfigurasi kebijakan otorisasi menggunakan kubeconfig dari instance ASM:

    kubectl apply -f authpolicy.yaml
  3. Jalankan ulang perintah dari Langkah 4 untuk memulai pengujian lain:

    Output yang Diharapkan:

    RBAC: akses ditolak

    Output menunjukkan bahwa permintaan ditolak.

Catatan

Fitur keamanan dari gateway ASM untuk permintaan HTTP standar juga berlaku untuk permintaan LLM, termasuk kebijakan otorisasi komprehensif, otentikasi JWT, dan layanan otorisasi kustom. Mengimplementasikan kebijakan-kebijakan ini pada egress gateway dapat secara signifikan meningkatkan keamanan aplikasi Anda.