Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Customize Waypoint resource usage and HPA

Dernière mise à jour :Aug 11, 2026

Lorsque les proxies Waypoint gèrent un volume élevé de trafic L7 ou nécessitent un arrêt gracieux pour les connexions persistantes, les allocations de ressources par défaut peuvent s'avérer insuffisantes. Service Mesh (ASM) vous permet de personnaliser les requêtes de CPU et de mémoire, les limites de mise à l'échelle du Horizontal Pod Autoscaler (HPA) ainsi que le comportement de vidage (drain) des proxies Waypoint déployés via l'API Gateway en mode Ambient.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Installé la version 1.2.1 ou ultérieure du composant Gateway API dans votre cluster

Fonctionnement

Pour personnaliser un Waypoint, définissez les paramètres cibles dans une ConfigMap et référencez-la depuis la ressource Gateway. ASM lit la ConfigMap et fusionne vos remplacements avec la configuration de ressources par défaut à l'aide d'un Strategic Merge Patch. Votre ConfigMap ne doit contenir que les champs que vous souhaitez modifier ; ASM gère la fusion et crée ou met à jour le déploiement Waypoint et le HPA en conséquence.

La ConfigMap prend en charge trois sections de configuration :

Section Objectif
data.horizontalPodAutoscaler Paramètres HPA tels que les nombres minimal et maximal de réplicas
data.deployment Paramètres au niveau du pod, tels que les requêtes de ressources du conteneur et la durée de l'arrêt gracieux
data.proxyConfig Paramètres d'exécution du proxy Istio, tels que la durée de vidage et le comportement de terminaison

Créer une ConfigMap avec des paramètres personnalisés

La ConfigMap doit se trouver dans le même namespace que la ressource Gateway qu'elle configure.

  1. Enregistrez le contenu suivant sous le nom gw-options.yaml.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: gw-options
    data:
      horizontalPodAutoscaler: |
        spec:
          minReplicas: 2
          maxReplicas: 2
      deployment: |
        spec:
          # Do not configure replicas when HPA is enabled.
          # replicas: 4
          template:
            spec:
              containers:
              - name: istio-proxy
                resources:
                  requests:
                    cpu: 1000m
              # The maximum wait time before a pod goes offline.
              terminationGracePeriodSeconds: 120
      proxyConfig: |
        # The proxy drain duration.
        drainDuration: 30s
        # The maximum duration for the proxy to stop draining. Ensure that terminationGracePeriodSeconds > terminationDrainDuration > drainDuration.
        terminationDrainDuration: 60s
  2. Appliquez la ConfigMap.

    kubectl apply -f gw-options.yaml

Référence des paramètres de la ConfigMap

Paramètres HPA (data.horizontalPodAutoscaler)

Paramètre Description
spec.minReplicas Nombre minimal de réplicas de pod Waypoint. Dans l'exemple précédent, la valeur est 2.
spec.maxReplicas Nombre maximal de réplicas de pod Waypoint. Dans l'exemple précédent, la valeur est 2 (nombre de réplicas fixe).
Important

Ne définissez pas replicas dans la section Deployment lorsque le HPA est activé. Le contrôleur HPA gère automatiquement le nombre de réplicas et une valeur statique pour replicas entre en conflit avec les décisions de mise à l'échelle du HPA.

Paramètres de déploiement (data.deployment)

Paramètre Description
spec.template.spec.containers[].name Nom du conteneur. La valeur est istio-proxy pour le conteneur de proxy Waypoint.
spec.template.spec.containers[].resources.requests.cpu Requête de CPU pour le proxy Waypoint. Dans l'exemple précédent, la valeur est 1000m (1 vCPU). Augmentez cette valeur pour les namespaces présentant un trafic L7 élevé.
spec.template.spec.terminationGracePeriodSeconds Durée maximale (en secondes) pendant laquelle Kubernetes attend avant de forcer la terminaison d'un pod lors de l'arrêt. Dans l'exemple précédent, la valeur est 120.

Paramètres ProxyConfig (data.proxyConfig)

Paramètre Description
drainDuration Durée pendant laquelle le proxy Envoy vide les connexions actives lors de l'arrêt. Dans l'exemple précédent, la valeur est 30s.
terminationDrainDuration Durée maximale pendant laquelle le proxy attend après avoir initié un arrêt gracieux avant de terminer les connexions restantes. Dans l'exemple précédent, la valeur est 60s.
Important

Les trois paramètres temporels doivent respecter l'ordre suivant : terminationGracePeriodSeconds > terminationDrainDuration > drainDuration. Si cette contrainte n'est pas respectée, les connexions peuvent être interrompues avant que le proxy ne termine son vidage, ce qui entraîne des échecs de requête.

Lier la ConfigMap à la ressource Gateway

Après avoir créé la ConfigMap, référencez-la depuis la ressource Gateway via le champ infrastructure.parametersRef.

  1. Enregistrez le contenu suivant sous le nom gateway.yaml. Le bloc infrastructure.parametersRef fait référence à la ConfigMap gw-options. ASM lit cette référence et applique les valeurs de la ConfigMap au déploiement Waypoint et au HPA.

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
      name: waypoint
      namespace: default
    spec:
      infrastructure:
        parametersRef:
          group: ""
          kind: ConfigMap
          name: gw-options
      gatewayClassName: istio-waypoint
      listeners:
      - allowedRoutes:
          namespaces:
            from: Same
        name: mesh
        port: 15008
        protocol: HBONE
  2. Appliquez la ressource Gateway.

    kubectl apply -f gateway.yaml

Vérifier la configuration

Après avoir appliqué les deux ressources, vérifiez qu'ASM a bien fusionné les paramètres de la ConfigMap dans le déploiement Waypoint et le HPA.

  1. Vérifiez le déploiement Waypoint. Dans la sortie, confirmez que :

    • Le conteneur istio-proxy affiche cpu: 1000m sous resources.requests.

    • terminationGracePeriodSeconds est défini sur 120.

    kubectl get deployment waypoint -n default -o yaml
  2. Vérifiez le HPA. Confirmez que MINPODS est 2 et que MAXPODS est 2 pour le HPA Waypoint.

    kubectl get hpa -n default