本主题提供了 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
中设置。下表列出并介绍了可用的参数。
参数 | 描述 | 类型 | 默认 |
---|---|---|---|
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 |
|
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
。