本主題提供 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
中設定。下表列出並說明了可用參數。
參數 | 說明 | 類型 | 預設值 |
---|---|---|---|
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 |
|
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
。