Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:configure alb listeners using albconfig

Última actualización: Sep 15, 2026

El campo listeners de un AlbConfig configura los listeners de un Application Load Balancer (ALB). Este tema describe el comportamiento de actualización del campo listeners y muestra cómo crear, configurar y eliminar listeners.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Notas de uso

Las instancias de ALB que crean los clústeres de ACK son recursos gestionados (ServiceManagedResource). Al trabajar con estas instancias, aplique las siguientes restricciones y directrices.

Restricciones de la consola de ALB

Importante

No cree, modifique ni elimine listeners directamente en la consola de ALB. Por ejemplo, no cambie los puertos de los listeners ni los elimine desde la consola. ACK sincroniza continuamente la configuración de los listeners desde el CRD AlbConfig hacia la instancia de ALB. Cualquier cambio manual en la consola de ALB se sobrescribe durante el siguiente ciclo de sincronización.

Si omite AlbConfig y modifica la configuración de los listeners directamente en la consola de ALB, se producen los siguientes problemas:

  • La consola de ALB devuelve el error OperationDenied.ServiceManagedResource cuando intenta modificar la configuración de los listeners.

  • Los listeners agregados manualmente (por ejemplo, el puerto 443) pueden eliminarse automáticamente después de que ACK sincronice la configuración.

  • Cuando reutiliza una instancia de ALB existente con ACK, la configuración manual de los listeners no se conserva.

Ruta correcta de configuración

Toda la configuración de los listeners, incluidos los certificados HTTPS, los puertos y los tiempos de espera de las solicitudes, debe gestionarse exclusivamente mediante el recurso personalizado AlbConfig de su clúster de Kubernetes. AlbConfig es la única fuente de verdad para la configuración de los listeners de ALB y no debe modificarse desde la consola de ALB.

Parámetros de los listeners

A continuación se muestran todos los parámetros disponibles en spec.listeners dentro de un AlbConfig.

Parameter

Type

Default

Protocols

Description

port

integer

—

HTTP, HTTPS, QUIC

Puerto del listener. Obligatorio. Si cambia este valor, se elimina el listener original y se crea uno nuevo.

protocol

string

—

HTTP, HTTPS, QUIC

Protocolo del listener. Obligatorio. Si cambia este valor, se elimina el listener original y se crea uno nuevo.

certificates[].CertificateId

string

—

HTTPS

ID del certificado que se asigna al listener.

certificates[].IsDefault

boolean

—

HTTPS

Indica si este es el certificado predeterminado.

caEnabled

boolean

false

HTTPS

Indica si se habilita la verificación del certificado de CA.

securityPolicyId

string

—

HTTPS

ID de la directiva de seguridad TLS. Por ejemplo, tls_cipher_policy_1_1.

requestTimeout

integer

60

HTTP, HTTPS

Tiempo máximo (en segundos) de espera por una respuesta del backend antes de devolver un error HTTP 504. Valores válidos: de 1 a 600.

tags[].key

string

—

—

Clave de la etiqueta.

tags[].value

string

—

—

Valor de la etiqueta.

gzipEnabled

boolean

—

HTTP, HTTPS

Indica si se habilita la compresión de datos. true: comprime tipos de contenido específicos. false: deshabilita toda la compresión.

xForwardedForConfig.XForwardedForEnabled

boolean

true

HTTP, HTTPS

Indica si se incluye la IP del cliente en el encabezado X-Forwarded-For. Siempre está habilitado y no puede deshabilitarse.

xForwardedForConfig.XForwardedForProtoEnabled

boolean

—

HTTP, HTTPS

Indica si se incluye el protocolo del listener en los encabezados de solicitud que se reenvían a los servidores backend.

xForwardedForConfig.XForwardedForSLBIdEnabled

boolean

—

HTTP, HTTPS

Indica si se incluye el ID de la instancia de SLB en los encabezados de solicitud que se reenvían a los servidores backend.

xForwardedForConfig.XForwardedForSLBPortEnabled

boolean

—

HTTP, HTTPS

Indica si se incluye el puerto de escucha en los encabezados de solicitud que se reenvían a los servidores backend.

xForwardedForConfig.XForwardedForClientSourceIpsEnabled

boolean

—

HTTP, HTTPS

Indica si se obtiene la IP real del cliente desde el encabezado X-Forwarded-For.

xForwardedForConfig.XForwardedForClientSourceIpsTrusted

string

—

HTTP, HTTPS

Lista de direcciones IP o bloques CIDR de proxy de confianza, separados por punto y coma. Solo surte efecto cuando XForwardedForClientSourceIpsEnabled es true.

aclConfig.aclType

string

—

HTTP, HTTPS

Tipo de ACL: White (lista de permitidos) o Black (lista de bloqueados).

aclConfig.aclEntries[]

string

—

HTTP, HTTPS

Bloques CIDR para el control de acceso. Cada entrada debe ser un bloque CIDR completo.

Comportamiento de actualización del campo listeners

El campo listeners es un arreglo, por lo que se actualiza mediante reemplazo total: la nueva configuración sustituye por completo a la existente. Comprender este comportamiento le permite predecir qué sucede al aplicar un AlbConfig actualizado.

Términos clave

  • Archivo de configuración del objeto: archivo YAML que usted aplica y que contiene el estado deseado del AlbConfig.

  • Archivo de configuración del objeto existente: configuración que ya se ejecuta en su clúster.

  • last-applied-configuration: anotación de Kubernetes que registra la configuración anterior. No se actualiza en tiempo real.

Reglas de actualización

Scenario

In new config

In existing config

In last-applied-configuration

Result

①

Sí

Sí

—

Fusión: aplica los valores de la nueva configuración para actualizar el objeto existente.

②

Sí

No

—

Creación: agrega el nuevo listener.

③

No

—

Sí

Eliminación: quita el listener. Puede restablecerse al valor predeterminado.

④

No

Sí

No

Eliminación: quita el listener de la configuración existente.

Ejemplo

A continuación se muestra cómo se aplican las reglas al actualizar el campo listeners.

Nueva configuración (archivo de configuración del objeto):

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

Configuración existente:

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

Resultado tras aplicar la nueva configuración:

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

Crear un listener

Un listener es el punto de entrada mediante el cual una instancia de ALB recibe y distribuye el tráfico según la información de la capa de aplicación. Los campos port y protocol identifican de forma única a cada listener.

Importante

Si modifica port, protocol o cualquier otra propiedad del listener, se elimina el listener original y se crea uno nuevo.

Los listeners HTTP admiten WebSocket de forma automática. No se requiere ninguna configuración adicional.

Opciones disponibles para protocol: HTTP, HTTPS, QUIC.

Console

  1. Inicie sesión en la consola de Container Service y haga clic en Clusters en el panel de navegación izquierdo.

  2. Haga clic en el nombre de su clúster. En el panel de navegación izquierdo, elija Workloads > Custom Resources.

  3. En la pestaña Resource Objects, introduzca AlbConfig en el cuadro de búsqueda y haga clic en el resultado AlbConfig.

  4. En el panel AlbConfig, busque el recurso AlbConfig (denominado alb de forma predeterminada) y haga clic en Edit YAML en la columna Actions.

  5. En el panel Edit YAML, agregue los campos spec.listeners.port y spec.listeners.protocol, y luego haga clic en OK.

    image

kubectl

Ejecute el siguiente comando para editar el AlbConfig:

kubectl edit albconfig <AlbConfig_Name>

Agregue el campo listeners dentro de 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

Causas comunes de error en la creación automática de instancias de ALB

Si AlbConfig no logra crear automáticamente una instancia de ALB, una de las causas más frecuentes es una configuración incompleta de los listeners. Por ejemplo, si sus rutas de Ingress requieren TLS/HTTPS pero AlbConfig no incluye listeners tanto para el puerto 80 (HTTP) como para el 443 (HTTPS), o si falta el certificado HTTPS obligatorio o está mal configurado, la creación o sincronización de la instancia puede fallar.

Para evitar este problema, compruebe que la configuración de los listeners de AlbConfig coincida con los requisitos de su Ingress antes de aplicarla:

  • Se definen los listeners de los puertos 80 y 443 cuando se usan rutas de Ingress con TLS/HTTPS.

  • Se asigna un certificado válido al listener HTTPS, o bien se configura correctamente la detección automática de certificados basada en el nombre de dominio.

Configurar certificados HTTPS

Establezca el campo certificates para asignar uno o más certificados a un listener HTTPS. ALB define el primer certificado como el predeterminado. Los demás certificados se utilizan para cifrar solicitudes únicamente cuando el certificado predeterminado caduca o deja de ser aplicable.

Si no especifica un certificado, el listener no se crea de inmediato. Se crea después de asociar un Ingress y detectar automáticamente un certificado según el nombre de dominio. Para más detalles, consulte Configure HTTPS certificates for encrypted communication .
listeners:
- caEnabled: false
  certificates:
  - CertificateId: 756****-cn-hangzhou   # Certificate ID
    IsDefault: true
  port: 443
  protocol: HTTPS

Configurar una directiva de seguridad TLS

Establezca securityPolicyId para aplicar una directiva de seguridad TLS a un listener HTTPS. Las directivas pueden ser personalizadas o predefinidas. Para más información, consulte TLS security policy.

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

Establecer el tiempo de espera de las solicitudes

Establezca requestTimeout para controlar cuánto tiempo espera Server Load Balancer (SLB) la respuesta de un servidor backend después de recibir una solicitud del cliente. Si no se recibe respuesta dentro de ese plazo, la instancia de SLB deja de esperar y devuelve un error HTTP 504 al cliente.

  • Valor predeterminado: 60 segundos.

  • Valores válidos: de 1 a 600 (entero, en segundos).

  • Para usar un valor superior a 600, solicite un aumento de cuota en el Centro de cuotas.

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

Ámbito de aplicación

requestTimeout es un parámetro a nivel de listener (nivel de puerto). Se aplica de manera global a todas las rutas que usan el mismo puerto de listener en la instancia de ALB. No se admite establecer distintos tiempos de espera de sesiones inactivas del frontend para rutas individuales dentro del mismo listener.

Compatibilidad con respuestas de streaming de IA

ALB es compatible con interfaces de respuestas de streaming de IA (por ejemplo, la salida de streaming de modelos de lenguaje grandes). Cuando use ALB con cargas de trabajo de streaming de IA, tenga en cuenta lo siguiente:

  • Establezca requestTimeout en un valor lo bastante alto para cubrir toda la duración de la transferencia de streaming. Un valor demasiado bajo provoca que ALB cierre la conexión antes de que finalice el flujo y devuelva un error HTTP 504 al cliente.

  • Compruebe la configuración de tiempo de espera de todos los componentes de la cadena de solicitudes, como WAF y los servicios backend, para evitar que la conexión se cierre de forma prematura e interrumpa la sesión de streaming.

Agregar etiquetas a los listeners

Use el campo tags para agregar etiquetas de clave-valor a un listener.

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

Habilitar la compresión de datos

Establezca gzipEnabled para controlar si ALB comprime los datos de respuesta antes de reenviarlos a los clientes.

  • true: comprime las respuestas con Brotli o Gzip, según el tipo de contenido.

  • false: deshabilita la compresión para todos los tipos de contenido.

La compresión se activa solo cuando Content-Length en el encabezado de respuesta supera los 1024 bytes. Los dos algoritmos de compresión funcionan de la siguiente manera:

  • Brotli: comprime todos los tipos de contenido.

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

A continuación se muestra un ejemplo que deshabilita la compresión:

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

Configurar los encabezados X-Forwarded-For

Use el campo xForwardedForConfig para controlar qué información incluye ALB en los encabezados de solicitud al reenviar tráfico a los servidores backend.

Importante

Todos los parámetros de xForwardedForConfig se aplican únicamente a los listeners HTTP y HTTPS.

Obtener la dirección IP del cliente

XForwardedForEnabled siempre está habilitado y no puede deshabilitarse. Cuando está activo, ALB agrega la IP de origen del cliente al encabezado X-Forwarded-For.

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

Obtener el protocolo del listener

Establezca XForwardedForProtoEnabled en true para incluir el protocolo del listener en los encabezados que se reenvían a los servidores backend.

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

Obtener el ID de la instancia de SLB

Establezca XForwardedForSLBIdEnabled en true para incluir el ID de la instancia de SLB en los encabezados que se reenvían a los servidores backend.

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

Obtener el puerto de escucha

Establezca XForwardedForSLBPortEnabled en true para incluir el puerto de escucha en los encabezados que se reenvían a los servidores backend.

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

Obtener la IP real del cliente detrás de proxies

Cuando las solicitudes pasan por proxies, el encabezado X-Forwarded-For puede contener una cadena de direcciones IP. Establezca XForwardedForClientSourceIpsEnabled en true para permitir que ALB identifique la IP real del cliente. Para ello, recorre la lista de derecha a izquierda y selecciona la primera IP que no esté en la lista de confianza.

Use XForwardedForClientSourceIpsTrusted para especificar qué IP de proxy son de confianza. Esto resulta útil en escenarios como la limitación de velocidad por IP de origen.

  • Formato: direcciones IP o bloques CIDR separados por punto y coma, sin espacios.

  • XForwardedForClientSourceIpsTrusted solo surte efecto cuando XForwardedForClientSourceIpsEnabled es true.

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

Configurar el control de acceso

Use el campo aclConfig para habilitar el control de acceso en un listener de ALB. El control de acceso le permite permitir o bloquear direcciones IP específicas mediante la configuración de una lista de permitidos o de bloqueados. Para más información, consulte Configure ACLs for access control.

  • aclType: establezca White para una lista de permitidos o Black para una lista de bloqueados.

  • aclEntries: lista de bloques CIDR. Cada entrada debe ser un bloque CIDR completo.

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

Eliminar un listener

Para eliminar un listener, quítelo del campo albconfig.spec.listeners.

Importante

Elimine todos los Ingress asociados al listener antes de borrarlo. Si algún Ingress sigue asociado, la eliminación falla.

Antes:

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

Después:

listeners:
- port: 8001
  protocol: HTTP