Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Accéder à un service LLM depuis un cluster via une passerelle de sortie ASM

Dernière mise à jour :Aug 11, 2026

ASM vous permet d'accéder à des services LLM externes via une passerelle de sortie. Cette approche convient principalement aux scénarios où l'application cliente réside dans un cluster. Cette rubrique explique comment utiliser une passerelle de sortie pour accéder à un service externe depuis une application exécutée dans un cluster doté d'un sidecar injecté.

Prérequis

Vue d'ensemble

Sans passerelle de sortie, le proxy sidecar intercepte les requêtes clientes avant de les transmettre au fournisseur LLM. Le sidecar et le client étant déployés dans le même Pod, cette méthode expose à plusieurs risques de sécurité, tels que la fuite de clés API et l'accès non autorisé. Si ces risques vous préoccupent, nous vous recommandons vivement d'utiliser une passerelle de sortie pour acheminer les requêtes.

L'utilisation d'une passerelle de sortie ASM améliore la sécurité. Déployée indépendamment du client, la passerelle de sortie vous permet d'utiliser le contrôle d'accès basé sur les rôles (RBAC) de votre cluster ACK pour restreindre sa gestion, renforçant ainsi sa sécurité globale. La passerelle de sortie gère toutes les opérations de sécurité, notamment l'ajout dynamique d'une clé API et l'application des politiques d'authentification et d'autorisation. Cette conception vous permet d'exploiter l'ensemble des fonctionnalités de sécurité des passerelles ASM.

Le diagramme suivant illustre le chemin de requête utilisé dans cette rubrique :

image

Étape 1 : Créer une passerelle de sortie et une ressource Gateway

  1. Créez une passerelle de sortie, exposez le port 80 et activez Support two-way TLS authentication. Pour plus de détails, consultez Créer une passerelle de sortie.

  2. Créez un fichier nommé egress-gw.yaml avec le contenu suivant.

    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. Utilisez le fichier kubeconfig de votre instance ASM pour exécuter la commande suivante et créer la ressource Gateway.

    kubectl apply -f egress-gw.yaml

Étape 2 : Créer un LLMProvider pour la passerelle de sortie

En appliquant le LLMProvider uniquement à la passerelle de sortie, vous garantissez que la clé API est stockée exclusivement dans la mémoire de la passerelle, la rendant ainsi inaccessible au client.

  1. Créez un fichier nommé dashscope-qwen.yaml avec le contenu suivant.

    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  # The Qwen series of open-source large models
            stream: false
            apiKey: ${API_KEY}
  2. Exécutez la commande suivante pour créer le LLMProvider.

    kubectl apply -f dashscope-qwen.yaml

Étape 3 : Créer un LLMRoute

  1. Créez un fichier nommé dashscope-route.yaml avec le contenu suivant pour acheminer le trafic vers la passerelle de sortie.

    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 # When the sidecar receives a request for dashscope.aliyuncs.com, it forwards the request to the egress gateway.
        matches:
        - gateways:
          - mesh
        backendRefs:
        - providerHost: istio-egressgateway.istio-system.svc.cluster.local
      - name: egress-gw-route # When the egress gateway receives a request for dashscope.aliyuncs.com, it forwards the request to the actual provider.
        matches:
        - gateways:
          - istio-system/egress-gw
        backendRefs:
        - providerHost: dashscope.aliyuncs.com
  2. Exécutez la commande suivante pour créer le LLMRoute.

    kubectl apply -f dashscope-route.yaml

Étape 4 : Tester la configuration

Utilisez le fichier kubeconfig de votre cluster ACK pour exécuter la commande suivante et tester la configuration.

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

Résultat attendu :

{"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"}

Étape 5 : Configurer une politique d'autorisation

  1. Créez un fichier nommé authpolicy.yaml avec le contenu suivant.

    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. Utilisez le fichier kubeconfig de votre instance ASM pour exécuter la commande suivante et appliquer la politique d'autorisation.

    kubectl apply -f authpolicy.yaml
  3. Exécutez à nouveau la commande de Étape 4 pour tester la politique.

    Résultat attendu :

    RBAC: access denied

    Le résultat indique que la requête est refusée.

Remarque

Les capacités de sécurité qu'une passerelle ASM offre pour les requêtes HTTP standard s'appliquent également aux requêtes LLM. Ces capacités incluent une gamme complète de politiques d'autorisation, l'authentification JWT et des services d'autorisation personnalisés. En appliquant ces politiques au niveau de la passerelle de sortie, vous pouvez sécuriser vos applications plus efficacement.