Cette rubrique fournit des informations de référence pour le module Contour avec Envoy.

À propos de Contour et d'Envoy

Contour (https://projectcontour.io/) est un contrôleur d'entrée Kubernetes qui utilise le proxy HTTP inverse Envoy. Contour avec Envoy est généralement utilisé avec d'autres modules, tels qu'ExternalDNS, Prometheus et Harbor.

Pour installer le module Contour sur un cluster TKG, reportez-vous aux rubriques suivantes :

Composants Contour

Le module Contour inclut le contrôleur d'entrée Contour et le proxy HTTP inverse Envoy. Ces composants sont installés en tant que conteneurs. Les conteneurs sont extraits du registre public dans le référentiel de modules.
Conteneur Type de ressource Réplicas Description
Envoy DaemonSet 3 Proxy inverse à haute performance
Contour Déploiement 2 Serveur de gestion et de configuration pour Envoy

Valeurs de données Contour

Vous trouverez ci-dessous un exemple de fichier contour-data-values.yaml.

La seule personnalisation est que le service Envoy est de type LoadBalancer (la valeur par défaut est NodePort). Cela signifie que le service Envoy sera accessible à partir de l'extérieur du cluster pour l'entrée.
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

Configuration Contour

Les valeurs de configuration du module Contour sont définies dans contour-data-values.yaml. Le tableau répertorie et décrit les paramètres disponibles.
Tableau 1. Paramètres de configuration de l'entrée Contour
Paramètre Description Type Par défaut
infrastructure_provider Fournisseur d'infrastructure. Valeurs prises en charge : vsphere, aws, azure string Paramètre obligatoire
contour.namespace Espace de noms où Contour sera déployé string tanzu-system-ingress
contour.config.requestTimeout Délai d'expiration de la demande client à transmettre à Envoy time.Duration 0s

(Pour plus d'informations, voir la section ci-dessous)

contour.config.server.xdsServerType Type de serveur XDS à utiliser : valeurs prises en charge : contour ou envoy string Null
contour.config.tls.minimumProtocolVersion Version de TLS minimale négociée par Contour string 1.1
contour.config.tls.fallbackCertificate.name Nom du secret contenant le certificat de secours pour les demandes qui ne correspondent pas à l'identité SNI définie pour un vhost string Null
contour.config.tls.fallbackCertificate.namespace Espace de noms d'un secret contenant un certificat de secours string Null
contour.config.tls.envoyClientCertificate.name Nom du secret à utiliser comme certificat client et clé privée pour la connexion TLS au service principal string Null
contour.config.tls.envoyClientCertificate.namespace Espace de noms du secret à utiliser comme certificat client et clé privée pour la connexion TLS au service principal string Null
contour.config.leaderelection.configmapName Nom du mappage de configurations à utiliser pour la sélection du leader Contour string leader-elect
contour.config.leaderelection.configmapNamespace Espace de noms du mappage de configurations pour la sélection du leader Contour string tanzu-system-ingress
contour.config.disablePermitInsecure Désactive le champ ingressroute permitInsecure booléen false
contour.config.accesslogFormat Accéder au format du journal string envoy
contour.config.jsonFields Champs qui seront journalisés groupe de chaînes Documentation du module Envoy
contour.config.useProxyProtocol https://projectcontour.io/guides/proxy-proto/ booléen false
contour.config.defaultHTTPVersions Versions HTTP que Contour doit publier en programmant Envoy groupe de chaînes "HTTP/1.1 HTTP2"
contour.config.timeouts.requestTimeout Délai d'expiration d'une demande complète time.Duration Null (délai d'expiration désactivé)
contour.config.timeouts.connectionIdleTimeout Délai d'attente avant l'arrêt d'une connexion inactive time.Duration 60 s
contour.config.timeouts.streamIdleTimeout Délai d'attente avant l'arrêt d'une demande ou d'un flux sans activité time.Duration 5 min
contour.config.timeouts.maxConnectionDuration Délai d'attente avant l'arrêt d'une connexion, avec ou sans activité time.Duration Null (délai d'expiration désactivé)
contour.config.timeouts.ConnectionShutdownGracePeriod Délai d'attente entre l'envoi d'un GOAWAY initial et final time.Duration 5 s
contour.config.cluster.dnsLookupFamily dns-lookup-family à utiliser pour les demandes en amont aux services de type externalName à partir d'un itinéraire HTTPProxy string Null (valeurs prises en charge : auto, v4, v6)
contour.config.debug Activer le débogage de Contour booléen false
contour.config.ingressStatusAddress Adresse à définir sur l'état de chaque ressource d'entrée string Null
contour.certificate.duration Durée du certificat de Contour time.Duration 8 760 h
contour.certificate.renewBefore Durée avant le renouvellement du certificat Contour time.Duration 360 h
contour.deployment.replicas Nombre de réplicas Contour entier 2
contour.image.repository Emplacement du référentiel avec l'image Contour. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). string projects.registry.vmware.com/tkg
contour.image.name Nom de l'image Contour string contour
contour.image.tag Balise d'image Contour. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version de Contour. string v1.11.0_vmware.1
contour.image.pullPolicy Stratégie d'extraction d'image Contour string IfNotPresent
envoy.image.repository Emplacement du référentiel avec l'image Envoy. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). string projects.registry.vmware.com/tkg
envoy.image.name Nom de l'image Envoy string envoy
envoy.image.tag Balise d'image Envoy. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version d'Envoy. string

v1.17.3_vmware.1

envoy.image.pullPolicy Stratégie d'image Envoy string IfNotPresent
envoy.hostPort.enable Indicateur pour exposer les ports Envoy sur l'hôte booléen true
envoy.hostPort.http Port de l'hôte HTTP Envoy entier 80
envoy.hostPort.https Port de l'hôte HTTPS Envoy entier 443
envoy.service.type Type de service à exposer (Envoy). Valeurs prises en charge : ClusterIP, NodePort, LoadBalancer string Paramètre obligatoire pour vSphere : NodePort ou LoadBalancer, AWS : LoadBalancer, Azure : LoadBalancer
envoy.service.annotations Annotations du service Envoy Carte (clés-valeurs) Carte vide
envoy.service.externalTrafficPolicy Stratégie de trafic externe du service Envoy. Valeurs prises en charge : Local, Cluster string Cluster
envoy.service.nodePort.http NodePort souhaité pour le service de type NodePort utilisé pour les demandes HTTP entier Null (Kubernetes attribue un port de nœud dynamique)
envoy.service.nodePort.https NodePort souhaité pour le service de type NodePort utilisé pour les demandes HTTPS entier Null (Kubernetes attribue un port de nœud dynamique)
envoy.deployment.hostNetwork Exécuter Envoy sur hostNetwork booléen false
envoy.service.aws.LBType Type de LB AWS à utiliser pour exposer le service Envoy. Valeurs prises en charge : classique, nlb string classic
envoy.loglevel Niveau de journal à utiliser pour Envoy string info

Délai d'expiration de la route pour les téléchargements de fichiers

Le paramètre contour.config.requestTimeout définit le délai d'expiration de la route Contour. La valeur par défaut est 0s. Si vous utilisez Contour pour le transfert de fichiers, vous devrez peut-être ajuster cette valeur.

Selon la documentation de Contour, une valeur de délai d'expiration de 0s demande à Contour d'utiliser le délai d'expiration Envoy. Selon la documentation Envoy, Envoy est configuré avec un délai d'expiration de 15 secondes. En outre, Envoy s'attend à ce que l'opération demande-réponse s'effectue avant l'expiration du délai.

Cela signifie qu'avec le paramètre de délai d'expiration Contour par défaut de 0s, le transfert de fichiers doit se terminer dans les 15 secondes. Pour les transferts de fichiers volumineux, ce délai peut être insuffisant. Pour désactiver le délai d'expiration Envoy, définissez la valeur de contour.config.requestTimeout sur 0.