このトピックでは、Envoy を使用する Contour パッケージのリファレンス情報を示します。

Contour と Envory について

Contour (https://projectcontour.io/) は、Envoy リバース HTTP プロキシを含む Kubernetes Ingress コントローラです。Envoy を使用する Contour は、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 サービスが Ingress 用クラスタの外部からアクセス可能であることを意味します。
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 文字列 必須パラメータ
contour.namespace contour がデプロイされる名前空間 文字列 tanzu-system-ingress
contour.config.requestTimeout Envoy に渡されるクライアント要求タイムアウト time.Duration 0s

(詳細は以下のセクションを参照)

contour.config.server.xdsServerType 使用する XDS サーバ タイプ:サポートされている値:contour または envoy 文字列 Null
contour.config.tls.minimumProtocolVersion Contour がネゴシエートする最小 TLS バージョン 文字列 1.1
contour.config.tls.fallbackCertificate.name vhost に定義されている SNI と一致しない要求に対するフォールバック証明書が含まれているシークレットの名前 文字列 Null
contour.config.tls.fallbackCertificate.namespace フォールバック証明書が含まれているシークレットの名前空間 文字列 Null
contour.config.tls.envoyClientCertificate.name クライアント証明書として使用するシークレットの名前、バックエンド サービスへの TLS 接続用プライベート キー 文字列 Null
contour.config.tls.envoyClientCertificate.namespace クライアント証明書として使用するシークレットの名前空間、バックエンド サービスへの TLS 接続用プライベート キー 文字列 Null
contour.config.leaderelection.configmapName contour leaderelection に使用される configmap の名前 文字列 leader-elect
contour.config.leaderelection.configmapNamespace contour leaderelection configmap の名前空間 文字列 tanzu-system-ingress
contour.config.disablePermitInsecure ingressroute permitInsecure フィールドを無効にします boolean false
contour.config.accesslogFormat アクセス ログ形式 文字列 envoy
contour.config.jsonFields ログに記録されるフィールド 文字列の配列 envoy パッケージのドキュメント
contour.config.useProxyProtocol https://projectcontour.io/guides/proxy-proto/ boolean false
contour.config.defaultHTTPVersions Envoy がサービスを提供するためにプログラムする必要がある HTTP バージョン 文字列の配列 "HTTP/1.1 HTTP2"
contour.config.timeouts.requestTimeout 要求全体のタイムアウト time.Duration Null(タイムアウトが無効)
contour.config.timeouts.connectionIdleTimeout アイドル接続を終了するまでの待機時間 time.Duration 60s
contour.config.timeouts.streamIdleTimeout アクティビティがない要求またはストリームを終了するまでの待機時間 time.Duration 5m
contour.config.timeouts.maxConnectionDuration アクティビティに関係なく接続を終了するまでの待機時間 time.Duration Null(タイムアウトが無効)
contour.config.timeouts.ConnectionShutdownGracePeriod 最初と最後の GOAWAY を送信するまでの待機時間 time.Duration 5s
contour.config.cluster.dnsLookupFamily HTTPProxy ルートから externalName タイプ サービスへのアップストリーム要求に使用する dns-lookup-family 文字列 Null(サポートされている値:auto、v4、v6)
contour.config.debug デバッグ機能をオンにします boolean false
contour.config.ingressStatusAddress すべての Ingress リソースのステータスで設定するアドレス 文字列 Null
contour.certificate.duration contour 証明書の有効期間 time.Duration 8760h
contour.certificate.renewBefore contour 証明書の更新が必要になるまでの期間 time.Duration 360h
contour.deployment.replicas contour レプリカの数 整数型 2
contour.image.repository Contour イメージを含むリポジトリの場所。デフォルトは、パブリック VMware レジストリです。プライベート リポジトリを使用している場合は(エアギャップ環境など)、この値を変更します。 文字列 projects.registry.vmware.com/tkg
contour.image.name contour イメージの名前 文字列 contour
contour.image.tag Contour イメージ タグ。Contour バージョンをアップグレードしている場合は、この値の更新が必要になることがあります。 文字列 v1.11.0_vmware.1
contour.image.pullPolicy Contour イメージ プル ポリシー 文字列 IfNotPresent
envoy.image.repository Envoy イメージを含むリポジトリの場所。デフォルトは、パブリック VMware レジストリです。プライベート リポジトリを使用している場合は(エアギャップ環境など)、この値を変更します。 文字列 projects.registry.vmware.com/tkg
envoy.image.name envoy イメージの名前 文字列 envoy
envoy.image.tag イメージ タグを使用します。Envoy バージョンをアップグレードしている場合は、この値の更新が必要になることがあります。 文字列

v1.17.3_vmware.1

envoy.image.pullPolicy Envoy イメージ プル ポリシー 文字列 IfNotPresent
envoy.hostPort.enable ホスト上の envoy ポートを公開するフラグ boolean true
envoy.hostPort.http Envoy HTTP ホスト ポート 整数型 80
envoy.hostPort.https Envoy HTTPS ホスト ポート 整数型 443
envoy.service.type envoy を公開するサービスのタイプ。サポートされている値:ClusterIP、NodePort、LoadBalancer 文字列 vSphere の必須パラメータ:NodePort または LoadBalancer、AWS:LoadBalancer、Azure:LoadBalancer
envoy.service.annotations Envoy サービスの注釈 マップ(キー値) 空のマップ
envoy.service.externalTrafficPolicy envoy サービスの外部トラフィック ポリシー。サポートされている値:Local、Cluster 文字列 Cluster
envoy.service.nodePort.http http 要求に使用されるタイプ NodePort のサービスに必要な nodePort 整数型 Null - Kubernetes は動的ノード ポートを割り当てます
envoy.service.nodePort.https HTTPS 要求に使用されるタイプ NodePort のサービスに必要な nodePort 整数型 Null - Kubernetes は動的ノード ポートを割り当てます
envoy.deployment.hostNetwork hostNetwork で envoy を実行します boolean false
envoy.service.aws.LBType envoy サービスの公開に使用される AWS LB タイプ。サポートされている値:classic、nlb 文字列 classic
envoy.loglevel envoy に使用するログ レベル 文字列 info

ファイル ダウンロードのルート タイムアウト

パラメータ contour.config.requestTimeout は、Contour ルート タイムアウト期間を定義します。デフォルト値は 0s です。Contour をファイル転送に使用している場合は、この値の調整が必要になる場合があります。

Contour のドキュメントによると、タイムアウト値が 0s の場合、Contour は Envoy タイムアウトを使用するように設定されます。Envoy のドキュメントによると、Envoy のデフォルトのタイムアウトは 15 秒です。また、Envoy では、要求から応答までの操作全体がタイムアウト間隔内で完了することが想定されます。

つまり、デフォルトの Contour タイムアウト設定が 0s の場合、ファイル転送は 15 秒以内に完了する必要があります。これは、サイズが大きいファイルの転送では時間が足りない可能性があります。デフォルトの Envoy のタイムアウトを無効にするには、contour.config.requestTimeout の値を 0 に設定します。