本主题提供了 Contour with Envoy 软件包的参考信息。

关于 Contour 和 Envory

Contour (https://projectcontour.io/) 是一个 Kubernetes Ingress 控制器,包括 Envoy 反向 HTTP 代理。Contour with Envoy 通常与其他软件包一起使用,例如 ExternalDNS、Prometheus 和 Harbor。

要在 TKG 集群中安装 Contour 软件包,请参阅以下主题:

Contour 组件

Contour 软件包包括 Contour Ingress 控制器和 Envoy 反向 HTTP 代理。这些组件作为容器进行安装。将从软件包存储库中指定的公共注册表中提取容器。
容器 资源类型 副本 描述
Envoy DaemonSet 3 高性能反向代理
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 Ingress 配置参数
参数 描述 类型 默认
infrastructure_provider 基础架构提供商支持的值:vsphere、aws、azure string 必填参数
contour.namespace 将 contour 部署到的命名空间 string tanzu-system-ingress
contour.config.requestTimeout 要传递到 Envoy 的客户端请求超时 time.Duration 0 秒

(有关详细信息,请参阅下面的章节)

contour.config.server.xdsServerType 要使用的 XDS 服务器类型:支持的值:contour 或 envoy string
contour.config.tls.minimumProtocolVersion Contour 将协商的最低 TLS 版本 string 1.1
contour.config.tls.fallbackCertificate.name 包含不与为虚拟主机定义的 SNI 匹配的请求的回退证书的密钥名称 string
contour.config.tls.fallbackCertificate.namespace 包含回退证书的密钥的命名空间 string
contour.config.tls.envoyClientCertificate.name 用作客户端证书的密钥(用于与后端服务建立 TLS 连接的私钥)的名称 string
contour.config.tls.envoyClientCertificate.namespace 用作客户端证书的密钥(用于与后端服务建立 TLS 连接的私钥)的命名空间 string
contour.config.leaderelection.configmapName 要用于 contour 主节点选举的配置映射的名称 string leader-elect
contour.config.leaderelection.configmapNamespace contour 主节点选举配置映射的命名空间 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 60 秒
contour.config.timeouts.streamIdleTimeout 终止无活动的请求或流之前等待的时间 time.Duration 5m
contour.config.timeouts.maxConnectionDuration 终止连接之前等待的时间,与有无活动无关 time.Duration 空(禁用超时)
contour.config.timeouts.ConnectionShutdownGracePeriod 发送初始和最终 GOAWAY 之间等待的时间 time.Duration 5 秒
contour.config.cluster.dnsLookupFamily 用于从 HTTPProxy 路由到 externalName 类型服务的上游请求的 dns-lookup-family string 空(支持的值:自动、v4、v6)
contour.config.debug 打开 contour 调试 布尔 false
contour.config.ingressStatusAddress 要针对每个 Ingress 资源的状态设置的地址 string
contour.certificate.duration Contour 证书的持续时间 time.Duration 8760 小时
contour.certificate.renewBefore 应续订 contour 证书前的持续时间 time.Duration 360 小时
contour.deployment.replicas contour 副本数 integer 2
contour.image.repository 包含 Contour 映像的存储库的位置。默认为公共 VMware 注册表。如果使用的是专用存储库(例如气隙环境),请更改此值。 string projects.registry.vmware.com/tkg
contour.image.name 创建映像的名称 string contour
contour.image.tag Contour 映像标记。如果升级 Contour 版本,可能需要更新此值。 string v1.11.0_vmware.1
contour.image.pullPolicy 创建映像拉取策略 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 制定映像拉取策略 string IfNotPresent
envoy.hostPort.enable 用于在主机上公开 envoy 端口的标记 布尔 true
envoy.hostPort.http Envoy HTTP 主机端口 integer 80
envoy.hostPort.https Envoy HTTPS 主机端口 integer 443
envoy.service.type 用于公开 envoy 的服务类型。支持的值:ClusterIP、NodePort、LoadBalancer string 必填参数,vSphere:NodePort 或 LoadBalancer,AWS:LoadBalancer,Azure:LoadBalancer
envoy.service.annotations Envoy 服务注释 映射(键值) 空映射
envoy.service.externalTrafficPolicy envoy 服务的外部流量策略。支持的值:本地、集群 string 集群
envoy.service.nodePort.http 用于 http 请求的 NodePort 类型的服务所需的 nodePort integer Null - Kubernetes 分配动态节点端口
envoy.service.nodePort.https 用于 HTTPS 请求的 NodePort 类型的服务所需的 nodePort integer Null - Kubernetes 分配动态节点端口
envoy.deployment.hostNetwork 在 hostNetwork 中运行 envoy 布尔 false
envoy.service.aws.LBType 要用于公开 envoy 服务的 AWS LB 类型。支持的值:经典、nlb string 经典
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