Questo argomento fornisce informazioni di riferimento per il pacchetto Contour con Envoy.

Informazioni su Contour ed Envory

Contour (https://projectcontour.io/) è un controller in ingresso Kubernetes che include il proxy HTTP inverso Envoy. Contour con Envoy viene in genere utilizzato con altri pacchetti, come ExternalDNS, Prometheus e Harbor.

Per installare il pacchetto Contour in un cluster TKG, fare riferimento agli argomenti seguenti:

Componenti di Contour

Il pacchetto Contour include il controller di ingresso di Contour e il proxy HTTP inverso Envoy. Questi componenti vengono installati come container. I container vengono estratti dal registro pubblico di specificato nel repository dei pacchetti.
Container Tipo di risorsa Repliche Descrizione
Envoy DaemonSet 3 Proxy inverso ad alte prestazioni
Contour Distribuzione 2 Server di gestione e configurazione per Envoy.

Valori dei dati di Contour

Di seguito è disponibile un contour-data-values.yaml di esempio.

L'unica personalizzazione riguarda il fatto che il servizio Envoy è di tipo LoadBalancer (il valore predefinito è NodePort). Questo significa che il servizio Envoy sarà accessibile dall'esterno del cluster per l'ingresso.
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

Configurazione di Contour

I valori di configurazione del pacchetto Contour sono impostati in contour-data-values.yaml. La tabella elenca e descrive i parametri disponibili.
Tabella 1. Parametri di configurazione di Contour Ingress
Parametro Descrizione Tipo Predefinito
infrastructure_provider Provider dell'infrastruttura. Valori supportati: vsphere, aws, azure stringa Parametro obbligatorio
contour.namespace Spazio dei nomi in cui Contour verrà distribuito stringa tanzu-system-ingress
contour.config.requestTimeout Timeout della richiesta client da trasmettere a Envoy time.Duration 0s

(Per informazioni dettagliate, vedere la sezione seguente)

contour.config.server.xdsServerType Tipo di server XDS da utilizzare. Valori supportati: contour o envoy stringa Null
contour.config.tls.minimumProtocolVersion Versione di TLS minima che Contour negozierà stringa 1.1
contour.config.tls.fallbackCertificate.name Nome del segreto contenente il certificato di fallback per le richieste che non corrispondono alla SNI definita per un vhost stringa Null
contour.config.tls.fallbackCertificate.namespace Spazio dei nomi del segreto contenente il certificato di fallback stringa Null
contour.config.tls.envoyClientCertificate.name Nome del segreto da utilizzare come certificato client, chiave privata per la connessione TLS al servizio di back-end stringa Null
contour.config.tls.envoyClientCertificate.namespace Spazio dei nomi del segreto da utilizzare come certificato client, chiave privata per la connessione TLS al servizio back-end stringa Null
contour.config.leaderelection.configmapName Nome della mappa di configurazione da utilizzare per leaderelection di Contour stringa leader-elect
contour.config.leaderelection.configmapNamespace Spazio dei nomi della mappa di configurazione leaderelection di Contour stringa tanzu-system-ingress
contour.config.disablePermitInsecure Disabilita il campo ingressroute permitInsecure booleano false
contour.config.accesslogFormat Formato del registro di accesso stringa envoy
contour.config.jsonFields Campi che verranno registrati array di stringhe pacchetto envoy doc
contour.config.useProxyProtocol https://projectcontour.io/guides/proxy-proto/ booleano false
contour.config.defaultHTTPVersions Versioni HTTP per cui Contour deve programmare Envoy array di stringhe "HTTP/1.1 HTTP2"
contour.config.timeouts.requestTimeout Timeout per un'intera richiesta time.Duration Null (il timeout è disabilitato)
contour.config.timeouts.connectionIdleTimeout Tempo di attesa prima della terminazione di una connessione inattiva time.Duration 60s
contour.config.timeouts.streamIdleTimeout Tempo di attesa prima della terminazione di una richiesta o di un flusso senza attività time.Duration 5m
contour.config.timeouts.maxConnectionDuration Tempo di attesa prima che la connessione venga terminata, indipendentemente dall'attività o meno time.Duration Null (il timeout è disabilitato)
contour.config.timeouts.ConnectionShutdownGracePeriod Tempo di attesa tra l'invio di un GOAWAY iniziale e finale time.Duration 5s
contour.config.cluster.dnsLookupFamily dns-lookup-family da utilizzare per le richieste upstream ai servizi di tipo externalName da una route HTTPProxy stringa Null (valori supportati: auto, v4, v6)
contour.config.debug Attiva il debug di Contour booleano false
contour.config.ingressStatusAddress Indirizzo da impostare sullo stato di ogni risorsa in ingresso stringa Null
contour.certificate.duration Durata certificato root time.Duration 8760h
contour.certificate.renewBefore Data prima della quale è necessario rinovare il certificato di Contour time.Duration 360h
contour.deployment.replicas Numero di repliche di Contour numero intero 2
contour.image.repository Posizione del repository con l'immagine di Contour. L'impostazione predefinita è il registro di VMware pubblico. Modificare questo valore se si utilizza un repository privato (ad esempio, un ambiente air gap). stringa projects.registry.vmware.com/tkg
contour.image.name Nome dell'immagine di Contour stringa contour
contour.image.tag Tag dell'immagine di Contour. Potrebbe essere necessario aggiornare questo valore se si esegue l'aggiornamento della versione di Contour. stringa v1.11.0_vmware.1
contour.image.pullPolicy Criterio di pull dell'immagine di Contour stringa IfNotPresent
envoy.image.repository Posizione del repository con l'immagine di Envoy. L'impostazione predefinita è il registro di VMware pubblico. Modificare questo valore se si utilizza un repository privato (ad esempio, un ambiente air gap). stringa projects.registry.vmware.com/tkg
envoy.image.name Nome dell'immagine di Envoy stringa envoy
envoy.image.tag Tag dell'immagine di Envoy. Potrebbe essere necessario aggiornare questo valore se si esegue l'aggiornamento della versione di Envoy. stringa

v1.17.3_vmware.1

envoy.image.pullPolicy Criterio di pull dell'immagine di Envoy stringa IfNotPresent
envoy.hostPort.enable Contrassegno per esporre le porte di Envoy nell'host booleano true
envoy.hostPort.http Porta dell'host HTTP di Envoy numero intero 80
envoy.hostPort.https Porta dell'host HTTPS di Envoy numero intero 443
envoy.service.type Tipo di servizio per esporre Envoy. Valori supportati: ClusterIP, NodePort, LoadBalancer stringa Parametro obbligatorio per vSphere: NodePort o LoadBalancer, AWS: LoadBalancer, Azure: LoadBalancer
envoy.service.annotations Annotazioni del servizio Envoy Mappa (valori chiave) Mappa vuota
envoy.service.externalTrafficPolicy Criterio del traffico esterno del servizio Envoy. Valori supportati: Local, Cluster stringa Cluster
envoy.service.nodePort.http Valore di NodePort desiderato per il servizio di tipo NodePort utilizzato per le richieste HTTP numero intero Null - Kubernetes assegna una porta del nodo dinamico
envoy.service.nodePort.https Valore di NodePort desiderato per il servizio di tipo NodePort utilizzato per le richieste HTTPS numero intero Null - Kubernetes assegna una porta del nodo dinamico
envoy.deployment.hostNetwork Eseguire Envoy in hostNetwork booleano false
envoy.service.aws.LBType Tipo di AWS LB da utilizzare per esporre il servizio Envoy. Valori supportati: classic, nlb stringa classic
envoy.loglevel Livello di registrazione da utilizzare per Envoy stringa info

Timeout della route per i download dei file

Il parametro contour.config.requestTimeout definisce la durata del timeout della route di Contour. Il valore predefinito è 0s. Se si utilizza Contour per il trasferimento del file, potrebbe essere necessario modificare questo valore.

In base alla Documentazione di Contour, un valore di timeout di 0s indirizza Contour a usare il timeout di Envoy. In base alla Documentazione di Envoy, per impostazione il predefinita timeout di Envoy è di 15 secondi. Envoy si aspetta inoltre che l'intera operazione di richiesta-risposta venga completata entro l'intervallo di timeout.

Questo significa che, con l'impostazione predefinita del timeout di Contour di 0s, il trasferimento del file deve essere completato entro 15 secondi. Per trasferimenti di file di grandi dimensioni, questo tempo potrebbe non essere sufficiente. Per disabilitare il timeout predefinito di Envoy, impostare il valore di contour.config.requestTimeout su 0.