本主題提供 Contour with Envoy 套件的參考資訊。

關於 Contour 和 Envory

Contour (https://projectcontour.io/) 是包括 Envoy 反向 HTTP Proxy 的 Kubernetes 入口控制器。Contour with Envoy 通常與其他套件一起使用,例如 ExternalDNS、Prometheus 和 Harbor。

若要在 TKG 叢集上安裝 Contour 套件,請參閱以下主題:

Contour 元件

Contour 套件包含 Contour 入口控制器和 Envoy 反向 HTTP Proxy。這些元件作為容器進行安裝。將從套件存放庫中指定的公開登錄中提取容器。
容器 資源類型 複本 說明
Envoy DaemonSet 3 高效能反向 Proxy
Contour 部署 2 適用於 Envoy 的管理和組態伺服器

Contour 資料值

下面是一個範例 contour-data-values.yaml

唯一的自訂是 Envoy 服務的類型為 LoadBalancer (預設為 NodePort)。這意味著,入口可以從叢集外部存取 Envoy 服務。
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

Contour 組態

Contour 套件組態值於 contour-data-values.yaml 中設定。下表列出並說明了可用參數。
表 1. Contour 入口組態參數
參數 說明 類型 預設值
infrastructure_provider 基礎結構提供者。支援的值:vsphere、aws、azure string 必要參數
contour.namespace 將部署 Contour 的命名空間 string tanzu-system-ingress
contour.config.requestTimeout 要傳遞到 Envoy 的用戶端要求逾時 time.Duration 0s

(如需詳細資料,請參閱下列章節)

contour.config.server.xdsServerType 要使用的 XDS 伺服器類型:支援的值:contour 或 envoy string 空值
contour.config.tls.minimumProtocolVersion Contour 將交涉的最低 TLS 版本 string 1.1
contour.config.tls.fallbackCertificate.name 包含要求 (與為 vhost 定義之 SNI 不相符) 的後援憑證之密碼的名稱 string 空值
contour.config.tls.fallbackCertificate.namespace 包含後援憑證之密碼的命名空間 string 空值
contour.config.tls.envoyClientCertificate.name 要用作用戶端憑證之密碼的名稱,私密金鑰用於與後端服務建立 TLS 連線 string 空值
namespace.config.tls.envoyClientCertificate.namespace 要用作用戶端憑證之密碼的命名空間,私密金鑰用於與後端服務建立 TLS 連線 string 空值
contour.config.leaderelection.configmapName 要用於 contour leaderelection 的 configmap 名稱 string leader-elect
contour.config.leaderelection.configmapNamespace contour leaderelection configmap 的命名空間 string tanzu-system-ingress
contour.config.disablePermitInsecure 停用 ingressroute permitInsecure 欄位 布林值 false
contour.config.accesslogFormat 存取記錄格式 string envoy
contour.config.jsonFields 將記錄的欄位 字串陣列 envoy 套件說明文件
contour.config.useProxyProtocol https://projectcontour.io/guides/proxy-proto/ 布林值 false
contour.config.defaultHTTPVersions Contour 為提供服務而應對 Envoy 進行程式設計的 HTTP 版本 字串陣列 "HTTP/1.1 HTTP2"
contour.config.timeouts.requestTimeout 整個要求的逾時 time.Duration 空值 (逾時將會停用)
contour.config.timeouts.connectionIdleTimeout 終止閒置連線前的等待時間 time.Duration 60s
contour.config.timeouts.streamIdleTimeout 終止要求或串流 (無活動) 前的等待時間 time.Duration 5m
contour.config.timeouts.maxConnectionDuration 終止連線 (不論活動與否) 前的等待時間 time.Duration 空值 (逾時將會停用)
contour.config.timeouts.ConnectionShutdownGracePeriod 傳送初始和最終 GOAWAY 之間等待的時間 time.Duration 5s
contour.config.cluster.dnsLookupFamily Dns-lookup-family 用於來自 HTTPProxy 路由之針對 externalName 類型服務的上游要求 string 空值 (支援的值:auto、v4、v6)
contour.config.debug 開啟 contour 偵錯 布林值 false
contour.config.ingressStatusAddress 針對每個入口資源的狀態設定的位址 string 空值
contour.certificate.duration contour 憑證的持續時間 time.Duration 8760h
contour.certificate.renewBefore 應更新 contour 憑證前的持續時間 time.Duration 360h
contour.deployment.replicas contour 複本數 整數 2
contour.image.repository 具有 Contour 映像的存放庫的位置。預設為公用 VMware 登錄。如果您要使用私人存放庫 (例如氣隙環境),請變更此值。 string projects.registry.vmware.com/tkg
contour.image.name contour 映像的名稱 string contour
contour.image.tag Contour 映像標籤。如果您要升級 Contour 版本,則可能需要更新此值。 string v1.11.0_vmware.1
contour.image.pullPolicy Contour 映像提取原則 string IfNotPresent
envoy.image.repository 具有 Envoy 映像的存放庫的位置。預設為公用 VMware 登錄。如果您要使用私人存放庫 (例如氣隙環境),請變更此值。 string projects.registry.vmware.com/tkg
envoy.image.name envoy 映像的名稱 string envoy
envoy.image.tag Envoy 映像標籤。如果您要升級 Envoy 版本,則可能需要更新此值。 string

v1.17.3_vmware.1

envoy.image.pullPolicy Envoy 映像提取原則 string IfNotPresent
envoy.hostPort.enable 公開主機上 envoy 連接埠的旗標 布林值 true
envoy.hostPort.http Envoy HTTP 主機連接埠 整數 80
envoy.hostPort.https Envoy HTTPS 主機連接埠 整數 443
envoy.service.type 要公開 envoy 的服務類型。支援的值:ClusterIP、NodePort、LoadBalancer string 必要參數,vSphere:NodePort 或 LoadBalancer,AWS:LoadBalancer,Azure:LoadBalancer
envoy.service.annotations Envoy 服務註解 對應 (索引鍵-值) 空白對應
envoy.service.externalTrafficPolicy envoy 服務的外部流量原則。支援的值:Local、Cluster string 叢集
envoy.service.nodePort.http HTTP 要求所使用之類型為 NodePort 的服務所需的 nodePort 整數 空值 - Kubernetes 會指派動態節點連接埠
envoy.service.nodePort.https 用於 HTTPS 要求的類型為 NodePort 的服務所需的 nodePort 整數 空值 - Kubernetes 會指派動態節點連接埠
envoy.deployment.hostNetwork 在 hostNetwork 上執行 envoy 布林值 false
envoy.service.aws.LBType 用於公開 envoy 服務的 AWS LB 類型。支援的值:classic、nlb string classic
envoy.loglevel 要用於 envoy 的記錄層級 string 資訊

檔案下載的路由逾時

參數 contour.config.requestTimeout 將定義 Contour 路由逾時持續時間。預設值為 0s。如果使用 Contour 進行檔案傳輸,您可能需要調整此值。

根據 Contour 說明文件0s 的逾時值會指示 Contour 使用 Envoy 逾時。根據 Envoy 說明文件,Envoy 的預設逾時為 15 秒。此外,Envoy 還預期在逾時間隔內完成整個請求回應作業。

這意味著,如果 Contour 預設逾時設定為 0s,則必須在 15 秒內完成檔案傳輸。對於大型檔案傳輸,這可能時間不夠。若要停用預設 Envoy 逾時,請將 contour.config.requestTimeout 值設定為 0