En este tema se proporciona información de referencia para el paquete Contour with Envoy.

Acerca de Contour y Envory

Contour (https://projectcontour.io/) es un controlador de entrada de Kubernetes que incluye el proxy HTTP inverso Envoy. Contour con Envoy se utiliza habitualmente con otros paquetes, como ExternalDNS, Prometheus y Harbor.

Para instalar el paquete de Contour en un clúster de TKG, consulte los siguientes temas:

Componentes de Contour

El paquete de Contour incluye la controladora de entrada de Contour y el proxy HTTP inverso Envoy. Estos componentes se instalan como contenedores. Los contenedores se extraen del registro público especificado en el repositorio del paquete.
Contenedor Tipo de recurso Réplicas Descripción
Envoy DaemonSet 3 Proxy inverso de alto rendimiento
Contour Implementación 2 Servidor de administración y configuración para Envoy

Valores de datos de Contour

A continuación se muestra un ejemplo contour-data-values.yaml.

La única personalización es que el servicio Envoy sea de tipo LoadBalancer (el valor predeterminado es NodePort). Esto significa que se podrá acceder al servicio Envoy desde fuera del clúster para la entrada.
infrastructure_provider: vsphere
namespace: tanzu-system-ingress
contour:
 configFileContents: {}
 useProxyProtocol: false
 replicas: 2
 pspNames: "vmware-system-restricted"
 logLevel: info
envoy:
 service:
   type: LoadBalancer
   annotations: {}
   nodePorts:
     http: null
     https: null
   externalTrafficPolicy: Cluster
   disableWait: false
 hostPorts:
   enable: true
   http: 80
   https: 443
 hostNetwork: false
 terminationGracePeriodSeconds: 300
 logLevel: info
 pspNames: null
certificates:
 duration: 8760h
 renewBefore: 360h

Configuración de Contour

Los valores de configuración del paquete de Contour se establecen en contour-data-values.yaml. En la tabla se enumeran y se describen los parámetros disponibles.
Tabla 1. Parámetros de configuración de entrada de Contour
Parámetro Descripción Tipo Predeterminado
infrastructure_provider Proveedor de infraestructura. Valores admitidos: vsphere, aws, azure string Parámetro obligatorio
contour.namespace Espacio de nombres en el que se implementará Contour string tanzu-system-ingress
contour.config.requestTimeout Tiempo de espera de solicitud del cliente que se debe pasar a Envoy time.Duration 0s

(Consulte la sección a continuación para obtener más información)

contour.config.server.xdsServerType Tipo de servidor XDS que se utilizará: valores compatibles: contour o envoy string Nulo
contour.config.tls.minimumProtocolVersion Versión mínima de TLS que Contour negociará string 1,1
contour.config.tls.fallbackCertificate.name Nombre del secreto que contiene el certificado de reserva para las solicitudes que no coinciden con el SNI definido para un vhost string Nulo
contour.config.tls.fallbackCertificate.namespace Espacio de nombres del secreto que contiene el certificado de reserva string Nulo
contour.config.tls.envoyClientCertificate.name Nombre del secreto que se utilizará como certificado del cliente, clave privada para la conexión TLS al servicio back-end. string Nulo
contour.config.tls.envoyClientCertificate.namespace Espacio de nombres del secreto que se utilizará como certificado del cliente, clave privada para la conexión TLS al servicio back-end. string Nulo
contour.config.leaderelection.configmapName Nombre del configmap que se utilizará para contour leaderelection string leader-elect
contour.config.leaderelection.configmapNamespace Espacio de nombres de contour leaderelection configmap string tanzu-system-ingress
contour.config.disablePermitInsecure Deshabilita el campo ingressroute permitInsecure booleano false
contour.config.accesslogFormat Formato de registro de acceso string envoy
contour.config.jsonFields Campos que se registrarán array of strings Documento del paquete de Envoy
contour.config.useProxyProtocol https://projectcontour.io/guides/proxy-proto/ booleano false
contour.config.defaultHTTPVersions Contour debería programar a Envoy para que sirva estas versiones HTTP array of strings "HTTP/1.1 HTTP2"
contour.config.timeouts.requestTimeout El tiempo de espera de una solicitud completa time.Duration Nulo (el tiempo de espera está deshabilitado)
contour.config.timeouts.connectionIdleTimeout El tiempo de espera antes de finalizar una conexión inactiva time.Duration 60s
contour.config.timeouts.streamIdleTimeout Tiempo de espera antes de finalizar una solicitud o un flujo sin actividad time.Duration 5m
contour.config.timeouts.maxConnectionDuration Tiempo de espera antes de finalizar una conexión, independientemente de si hay actividad o no time.Duration Nulo (el tiempo de espera está deshabilitado)
contour.config.timeouts.ConnectionShutdownGracePeriod Tiempo que se debe esperar entre el envío de un GOAWAY inicial y final time.Duration 5s
contour.config.cluster.dnsLookupFamily dns-lookup-family que se utilizará para las solicitudes de subida a servicios de tipo externalName desde una ruta HTTPProxy string Nulo (valores admitidos: auto, v4, v6)
contour.config.debug Activa la depuración de Contour booleano false
contour.config.ingressStatusAddress Dirección que se establecerá en el estado de cada recurso de entrada. string Nulo
contour.certificate.duration Duración del certificado de Contour time.Duration 8760h
contour.certificate.renewBefore Duración antes de la renovación del certificado de Contour time.Duration 360h
contour.deployment.replicas Número de réplicas de Contour entero 2
contour.image.repository Ubicación del repositorio con la imagen de Contour. El valor predeterminado es el registro de VMware público. Cambie este valor si utiliza un repositorio privado (p. ej., un entorno aislado). string projects.registry.vmware.com/tkg
contour.image.name Nombre de la imagen de Contour string contour
contour.image.tag Etiqueta de la imagen de Contour. Es posible que este valor tenga que actualizarse si va a actualizar la versión de Contour. string v1.11.0_vmware.1
contour.image.pullPolicy Directiva de extracción de imagen de Contour string IfNotPresent
envoy.image.repository Ubicación del repositorio con la imagen de Envoy. El valor predeterminado es el registro de VMware público. Cambie este valor si utiliza un repositorio privado (p. ej., un entorno aislado). string projects.registry.vmware.com/tkg
envoy.image.name Nombre de la imagen de Envoy string envoy
envoy.image.tag Etiqueta de la imagen de Envoy. Es posible que este valor tenga que actualizarse si va a actualizar la versión de Envoy. string

v1.17.3_vmware.1

envoy.image.pullPolicy Directiva de extracción de la imagen de Envoy string IfNotPresent
envoy.hostPort.enable Etiqueta para exponer los puertos de Envoy en el host booleano true
envoy.hostPort.http Puerto de host HTTP de Envoy entero 80
envoy.hostPort.https Puerto de host HTTPS de Envoy entero 443
envoy.service.type Tipo de servicio para exponer Envoy. Valores admitidos: ClusterIP, NodePort y LoadBalancer string Parámetro obligatorio para vSphere: NodePort o LoadBalancer, AWS: LoadBalancer, Azure: LoadBalancer
envoy.service.annotations Anotaciones en el servicio Envoy Mapa (valores de clave) Mapa vacío
envoy.service.externalTrafficPolicy Directiva de tráfico externo del servicio Envoy. Valores admitidos: Local, Clúster string Clúster
envoy.service.nodePort.http NodePort deseado para el servicio de tipo NodePort utilizado para las solicitudes http entero Nulo: Kubernetes asigna un puerto de nodo dinámico
envoy.service.nodePort.https NodePort deseado para el servicio de tipo NodePort utilizado para las solicitudes HTTPS entero Nulo: Kubernetes asigna un puerto de nodo dinámico
envoy.deployment.hostNetwork Ejecuta envoy en hostNetwork booleano false
envoy.service.aws.LBType Tipo AWS LB que se utilizará para exponer el servicio Envoy. Valores admitidos: clásico, nlb string clásico
envoy.loglevel Nivel de registro que se utilizará para Envoy string info

Tiempo de espera de ruta para las descargas de archivo

El parámetro contour.config.requestTimeout define la duración del tiempo de espera de la ruta de Contour. El valor predeterminado es 0s. Si utiliza Contour para la transferencia de archivos, es posible que deba ajustar este valor.

Según la documentación de Contour , un valor de tiempo de espera de 0s indica a Contour que utilice el tiempo de espera de Envoy. Según la documentación de Envoy, Envoy tiene un tiempo de espera de 15 segundos de forma predeterminada. Además, Envoy espera que toda la operación de solicitud-respuesta se complete dentro del intervalo de tiempo de espera.

Esto significa que con la configuración predeterminada de tiempo de espera de Contour de 0s, la transferencia de archivos debe completarse en 15 segundos. Para las transferencias de archivos grandes, es posible que este tiempo no sea suficiente. Para deshabilitar el tiempo de espera predeterminado de Envoy, establezca el valor de contour.config.requestTimeout en 0.