Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:configure alb listeners using albconfig

Dernière mise à jour :Aug 11, 2026

Le champ listeners d'une configuration AlbConfig permet de configurer les écouteurs pour un Application Load Balancer (ALB). Cette rubrique décrit le comportement de mise à jour du champ listeners et explique comment créer, configurer et supprimer des écouteurs.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Notes d'utilisation

Les instances ALB créées par les clusters ACK sont des ressources gérées (ServiceManagedResource). Les restrictions et directives suivantes s'appliquent lorsque vous travaillez avec ces instances.

Restrictions de la console ALB

Important

Ne créez, ne modifiez et ne supprimez pas d'écouteurs directement dans la console ALB. Par exemple, ne changez pas les ports des écouteurs et ne supprimez pas d'écouteurs depuis la console. ACK synchronise en continu la configuration des écouteurs depuis la CRD AlbConfig vers l'instance ALB. Toute modification manuelle effectuée dans la console ALB sera écrasée lors du prochain cycle de synchronisation.

Contourner AlbConfig et modifier directement les paramètres des écouteurs dans la console ALB entraîne les problèmes suivants :

  • La console ALB renvoie une erreur OperationDenied.ServiceManagedResource lorsque vous tentez de modifier les paramètres des écouteurs.

  • Les écouteurs ajoutés manuellement (par exemple, le port 443) peuvent être automatiquement supprimés après la synchronisation de la configuration par ACK.

  • Lorsque vous réutilisez une instance ALB existante avec ACK, les paramètres des écouteurs configurés manuellement ne sont pas conservés.

Chemin de configuration correct

Toute la configuration des écouteurs, y compris les certificats HTTPS, les ports et les délais d'attente des requêtes, doit être gérée exclusivement via la ressource personnalisée AlbConfig dans votre cluster Kubernetes. AlbConfig constitue la source unique de vérité pour la configuration des écouteurs ALB et ne doit pas être modifiée depuis la console ALB.

Paramètres des écouteurs

Le tableau suivant répertorie tous les paramètres disponibles sous spec.listeners dans une AlbConfig.

|
**Paramètre**
|
**Type**
|
**Valeur par défaut**
|
**Protocoles**
|
**Description**
| | --- | --- | --- | --- | --- | |
`port`
|
Entier
|

|
HTTP, HTTPS, QUIC
|
Port de l'écouteur. Obligatoire. La modification de cette valeur supprime l'écouteur d'origine et en crée un nouveau.
| |
`protocol`
|
Chaîne
|

|
HTTP, HTTPS, QUIC
|
Protocole de l'écouteur. Obligatoire. La modification de cette valeur supprime l'écouteur d'origine et en crée un nouveau.
| |
`certificates[].CertificateId`
|
Chaîne
|

|
HTTPS
|
ID du certificat à attribuer à l'écouteur.
| |
`certificates[].IsDefault`
|
Booléen
|

|
HTTPS
|
Indique s'il s'agit du certificat par défaut.
| |
`caEnabled`
|
Booléen
|
`false`
|
HTTPS
|
Indique s'il faut activer la vérification des certificats CA.
| |
`securityPolicyId`
|
Chaîne
|

|
HTTPS
|
ID de la politique de sécurité TLS. Par exemple, `tls_cipher_policy_1_1`.
| |
`requestTimeout`
|
Entier
|
`60`
|
HTTP, HTTPS
|
Délai maximal (en secondes) d'attente d'une réponse du backend avant de renvoyer une erreur HTTP 504. Valeurs valides : 1–600.
| |
`tags[].key`
|
Chaîne
|

|

|
Clé du tag.
| |
`tags[].value`
|
Chaîne
|

|

|
Valeur du tag.
| |
`gzipEnabled`
|
Booléen
|

|
HTTP, HTTPS
|
Indique s'il faut activer la compression des données. `true` : compresse les types de contenu spécifiques. `false` : désactive toute compression.
| |
`xForwardedForConfig.XForwardedForEnabled`
|
Booléen
|
`true`
|
HTTP, HTTPS
|
Indique s'il faut inclure l'adresse IP du client dans l'en-tête `X-Forwarded-For` . Toujours activé ; ne peut pas être désactivé.
| |
`xForwardedForConfig.XForwardedForProtoEnabled`
|
Booléen
|

|
HTTP, HTTPS
|
Indique s'il faut inclure le protocole de l'écouteur dans les en-têtes de requête transférés aux serveurs backend.
| |
`xForwardedForConfig.XForwardedForSLBIdEnabled`
|
Booléen
|

|
HTTP, HTTPS
|
Indique s'il faut inclure l'ID de l'instance SLB dans les en-têtes de requête transférés aux serveurs backend.
| |
`xForwardedForConfig.XForwardedForSLBPortEnabled`
|
Booléen
|

|
HTTP, HTTPS
|
Indique s'il faut inclure le port d'écoute dans les en-têtes de requête transférés aux serveurs backend.
| |
`xForwardedForConfig.XForwardedForClientSourceIpsEnabled`
|
Booléen
|

|
HTTP, HTTPS
|
Indique s'il faut récupérer l'adresse IP réelle du client à partir de l'en-tête `X-Forwarded-For` .
| |
`xForwardedForConfig.XForwardedForClientSourceIpsTrusted`
|
Chaîne
|

|
HTTP, HTTPS
|
Liste séparée par des points-virgules des adresses IP ou des blocs CIDR de proxy approuvés. Prend effet uniquement lorsque `XForwardedForClientSourceIpsEnabled` est défini sur `true` .
| |
`aclConfig.aclType`
|
Chaîne
|

|
HTTP, HTTPS
|
Type de liste de contrôle d'accès (ACL) : `White` (liste d'autorisation) ou `Black` (liste de blocage).
| |
`aclConfig.aclEntries[]`
|
Chaîne
|

|
HTTP, HTTPS
|
Blocs CIDR pour le contrôle d'accès. Chaque entrée doit être un bloc CIDR complet.
|





























































































































































































Fonctionnement de la mise à jour du champ listeners

Le champ listeners étant un tableau, sa mise à jour s'effectue par remplacement intégral : la nouvelle configuration remplace complètement l'existante. Comprendre ce comportement vous aide à anticiper les effets de l'application d'une AlbConfig mise à jour.

Termes clés

  • Fichier de configuration de l'objet : le fichier YAML que vous appliquez, contenant l'état souhaité de l'AlbConfig.

  • Fichier de configuration de l'objet existant : la configuration déjà en cours d'exécution dans votre cluster.

  • last-applied-configuration : une annotation Kubernetes qui enregistre la configuration précédente. Elle n'est pas mise à jour en temps réel.

Règles de mise à jour

|
**Scénario**
|
**Dans la nouvelle config.**
|
**Dans la config. existante**
|
**Dans ****last-applied-configuration**
|
**Résultat**
| | --- | --- | --- | --- | --- | |

|
Oui
|
Oui
|

|
Fusionne : applique les valeurs de la nouvelle configuration pour mettre à jour l'objet existant.
| |

|
Oui
|
Non
|

|
Crée : ajoute le nouvel écouteur.
| |

|
Non
|

|
Oui
|
Supprime : retire l'écouteur. Peut réinitialiser la valeur par défaut.
| |

|
Non
|
Oui
|
Non
|
Supprime : retire l'écouteur de la configuration existante.
|

















































Exemple

L'exemple suivant illustre l'application des règles lors de la mise à jour du champ listeners .

Nouvelle configuration (fichier de configuration de l'objet) :

listeners:
- port: 8001
  protocol: HTTP
- port: 8003
  protocol: HTTP
- port: 8005     # New — will be added
  protocol: HTTP

Configuration existante :

listeners:
- port: 8001
  protocol: HTTP
- port: 8002     # Missing from new config and in last-applied-configuration — will be deleted
  protocol: HTTP
- port: 8003
  protocol: HTTP
- port: 8004     # Missing from new config but not in last-applied-configuration — will be deleted
  protocol: HTTP

last-applied-configuration :

listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP
- port: 8003
  protocol: HTTP

Résultat après application de la nouvelle configuration :

listeners:
- port: 8001    # Meets condition ① — retained
  protocol: HTTP
- port: 8003    # Meets condition ① — retained
  protocol: HTTP
- port: 8005    # Meets condition ② — added
  protocol: HTTP
# port 8002 meets condition ③ — deleted
# port 8004 meets condition ④ — deleted

Créer un écouteur

Un écouteur constitue le point d'entrée par lequel une instance ALB reçoit et distribue le trafic en fonction des informations de la couche application. Les champs port et protocol identifient conjointement un écouteur de manière unique.

Important

La modification du port , du protocol ou de toute autre propriété de l'écouteur entraîne la suppression de l'écouteur d'origine et la création d'un nouvel écouteur.

Les écouteurs HTTP prennent automatiquement en charge WebSocket. Aucune configuration supplémentaire n'est requise.

Options de protocole pour le paramètre protocol : HTTP , HTTPS , QUIC .

Console

  1. Connectez-vous à la console Container Service et cliquez sur Clusters dans le volet de navigation de gauche.

  2. Cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, choisissez Workloads > Custom Resources .

  3. Dans l'onglet , saisissez AlbConfig dans la zone de recherche et cliquez sur le résultat AlbConfig .

  4. Dans le panneau AlbConfig , repérez la ressource AlbConfig (nommée alb par défaut) et cliquez sur Edit YAML dans la colonne Actions .

  5. Dans le panneau , ajoutez les champs spec.listeners.port et spec.listeners.protocol , puis cliquez sur OK .

    image

kubectl

Exécutez la commande suivante pour modifier l'AlbConfig :

kubectl edit albconfig <AlbConfig_Name>

Ajoutez le champ listeners sous spec :

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
    # ... other config fields
  listeners:
  - port: 80
    protocol: HTTP   # Options: HTTP, HTTPS, QUIC

Causes fréquentes d'échec de la création automatique d'une instance ALB

Si la création automatique d'une instance ALB par AlbConfig échoue, une configuration incomplète des écouteurs en est souvent la cause. Par exemple, si vos routes Ingress nécessitent TLS/HTTPS mais que l'AlbConfig n'inclut pas à la fois les écouteurs sur le port 80 (HTTP) et le port 443 (HTTPS), ou si le certificat HTTPS requis est manquant ou mal configuré, la création ou la synchronisation de l'instance peut échouer.

Pour éviter ce problème, vérifiez que la configuration des écouteurs de votre AlbConfig correspond aux exigences de votre Ingress avant de l'appliquer :

  • Les écouteurs sur les ports 80 et 443 sont définis lorsque des routes Ingress TLS/HTTPS sont utilisées.

  • Un certificat valide est attribué à l'écouteur HTTPS, ou la découverte automatique de certificat basée sur le nom de domaine est correctement configurée.

Configurer les certificats HTTPS

Définissez le champ certificates pour attribuer un ou plusieurs certificats à un écouteur HTTPS. ALB définit le premier certificat comme certificat par défaut. ALB utilise les autres certificats pour le chiffrement des requêtes uniquement si le certificat par défaut expire ou n'est plus applicable.

Si vous ne spécifiez pas de certificat, l'écouteur n'est pas créé immédiatement. Il est créé après l'association d'un Ingress et la découverte automatique d'un certificat basée sur le nom de domaine. Pour plus de détails, consultez la page Configurer des certificats HTTPS pour une communication chiffrée .
listeners:
- caEnabled: false
  certificates:
  - CertificateId: 756****-cn-hangzhou   # Certificate ID
    IsDefault: true
  port: 443
  protocol: HTTPS

Configurer une politique de sécurité TLS

Définissez securityPolicyId pour appliquer une politique de sécurité TLS à un écouteur HTTPS. Les politiques peuvent être personnalisées ou prédéfinies. Pour plus d'informations, consultez la page Politique de sécurité TLS .

listeners:
- port: 443
  protocol: HTTPS
  securityPolicyId: tls_cipher_policy_1_1   # Security policy ID

Définir le délai d'attente des requêtes

Définissez requestTimeout pour contrôler la durée pendant laquelle Server Load Balancer (SLB) attend une réponse d'un serveur backend après avoir reçu une requête client. Si aucune réponse n'est reçue dans le délai imparti, l'instance SLB cesse d'attendre et renvoie une erreur HTTP 504 au client.

  • Valeur par défaut : 60 secondes

  • Valeurs valides : 1–600 (entier, en secondes)

  • Pour utiliser une valeur supérieure à 600, demandez une augmentation de quota dans le Quota Center .

listeners:
- port: 80
  protocol: HTTP
  requestTimeout: 60   # Seconds. Default: 60. Valid values: 1–600.

Portée d'application

Le paramètre requestTimeout est un paramètre au niveau de l'écouteur (au niveau du port). Il s'applique globalement à toutes les routes utilisant le même port d'écoute sur l'instance ALB. Il n'est pas possible de définir des délais d'inactivité de session frontend différents pour des routes individuelles sur le même écouteur.

Prise en charge des réponses en streaming pour l'IA

ALB prend en charge les interfaces de réponse en streaming pour l'IA (par exemple, la sortie en streaming des grands modèles de langage). Lorsque vous utilisez ALB avec des charges de travail de streaming IA :

  • Définissez requestTimeout suffisamment haut pour couvrir toute la durée du transfert en streaming. Une valeur trop faible entraîne la fermeture de la connexion par ALB avant la fin du flux et renvoie une erreur HTTP 504 au client.

  • Vérifiez les paramètres de délai d'attente de tous les composants de la chaîne de requête, tels que WAF et les services backend, afin d'éviter une terminaison prématurée de la connexion qui interromprait la session de streaming.

Ajouter des tags aux écouteurs

Utilisez le champ tags pour ajouter des tags clé-valeur à un écouteur.

listeners:
- port: 80
  protocol: HTTP
  tags:
  - key: "key"
    value: "value1"

Activer la compression des données

Définissez gzipEnabled pour contrôler si ALB compresse les données de réponse avant de les transmettre aux clients.

  • true : compresse les réponses à l'aide de Brotli ou Gzip, selon le type de contenu.

  • false : désactive la compression pour tous les types de contenu.

La compression est déclenchée uniquement lorsque la valeur Content-Length dans l'en-tête de réponse dépasse 1 024 octets. Les deux algorithmes de compression fonctionnent comme suit :

  • Brotli : compresse tous les types de contenu.

  • Gzip : compresse text/plain , text/css , application/javascript , application/x-javascript , application/rss+xml , application/atom+xml , application/xml et application/json .

L'exemple suivant désactive la compression :

listeners:
- port: 80
  protocol: HTTP
  gzipEnabled: false   # true: compress specific content types. false: disable all compression.

Configurer les en-têtes X-Forwarded-For

Utilisez le champ xForwardedForConfig pour contrôler les informations qu'ALB inclut dans les en-têtes de requête lors du transfert du trafic vers les serveurs backend.

Important

Tous les paramètres xForwardedForConfig s'appliquent uniquement aux écouteurs HTTP et HTTPS.

Récupérer l'adresse IP du client

XForwardedForEnabled est toujours activé et ne peut pas être désactivé. Lorsqu'il est activé, ALB ajoute l'adresse IP source du client à l'en-tête X-Forwarded-For .

listeners:
- port: 80
  protocol: HTTP
  xForwardedForConfig:
    XForwardedForEnabled: true

Récupérer le protocole de l'écouteur

Définissez XForwardedForProtoEnabled sur true pour inclure le protocole de l'écouteur dans les en-têtes transférés aux serveurs backend.

listeners:
- port: 80
  protocol: HTTP
  xForwardedForConfig:
    XForwardedForProtoEnabled: true

Récupérer l'ID de l'instance SLB

Définissez XForwardedForSLBIdEnabled sur true pour inclure l'ID de l'instance SLB dans les en-têtes transférés aux serveurs backend.

listeners:
- port: 80
  protocol: HTTP
  xForwardedForConfig:
    XForwardedForSLBIdEnabled: true   # true: include SLB instance ID. false: omit it.

Récupérer le port d'écoute

Définissez XForwardedForSLBPortEnabled sur true pour inclure le port d'écoute dans les en-têtes transférés aux serveurs backend.

listeners:
- port: 80
  protocol: HTTP
  xForwardedForConfig:
    XForwardedForSLBPortEnabled: true   # true: include listening port. false: omit it.

Récupérer l'adresse IP réelle du client derrière les proxys

Lorsque les requêtes transitent par des proxys, l'en-tête X-Forwarded-For peut contenir une chaîne d'adresses IP. Définissez XForwardedForClientSourceIpsEnabled sur true pour permettre à ALB d'identifier l'adresse IP réelle du client en parcourant la liste de droite à gauche et en sélectionnant la première adresse IP ne figurant pas dans la liste de confiance.

Utilisez XForwardedForClientSourceIpsTrusted pour spécifier les adresses IP de proxy approuvées. Cela prend en charge des scénarios tels que la limitation du débit par adresse IP source.

  • Format : adresses IP ou blocs CIDR séparés par des points-virgules, sans espaces.

  • XForwardedForClientSourceIpsTrusted prend effet uniquement lorsque XForwardedForClientSourceIpsEnabled est défini sur true .

listeners:
- port: 80
  protocol: HTTP
  xForwardedForConfig:
    XForwardedForClientSourceIpsEnabled: true
    XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16   # Semicolon-separated, no spaces

Définir le contrôle d'accès

Utilisez le champ aclConfig pour activer le contrôle d'accès sur un écouteur ALB. Le contrôle d'accès vous permet d'autoriser ou de bloquer des adresses IP spécifiques en configurant une liste d'autorisation ou une liste de blocage. Pour plus d'informations, consultez la page Configurer des listes de contrôle d'accès pour le contrôle d'accès .

  • aclType : définissez sur White pour une liste d'autorisation ou sur Black pour une liste de blocage.

  • aclEntries : liste de blocs CIDR. Chaque entrée doit être un bloc CIDR complet.

listeners:
- port: 80
  protocol: HTTP
  aclConfig:
    aclEntries:
    - 127.0.0.1/32   # CIDR block must be complete
    aclType: White    # White: allowlist. Black: blocklist.

Supprimer un écouteur

Pour supprimer un écouteur, retirez-le du champ albconfig.spec.listeners .

Important

Supprimez tous les Ingress associés à l'écouteur avant de le supprimer. Si un Ingress est encore associé, la suppression échouera.

Avant :

listeners:
- port: 8001
  protocol: HTTP
- port: 8002     # Listener to delete
  protocol: HTTP

Après :

listeners:
- port: 8001
  protocol: HTTP