このトピックでは、Envoy を使用する Contour パッケージのリファレンス情報を示します。
Contour と Envory について
Contour (https://projectcontour.io/) は、Envoy リバース HTTP プロキシを含む Kubernetes Ingress コントローラです。Envoy を使用する Contour は、ExternalDNS、Prometheus、Harbor などの他のパッケージで一般的に使用されます。
Contour のコンポーネント
コンテナ | リソースの種類 | レプリカ | 説明 |
---|---|---|---|
Envoy | DaemonSet | 3 | 高パフォーマンスのリバース プロキシ |
Contour | デプロイ | 2 | Envoy 用の管理および構成サーバ |
Contour のデータ値
contour-data-values.yaml
のサンプルを以下に示します。
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-data-values.yaml
で設定されます。次の表に、使用可能なパラメータとその説明を示します。
パラメータ | 説明 | タイプ | デフォルト |
---|---|---|---|
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 バージョンをアップグレードしている場合は、この値の更新が必要になることがあります。 | 文字列 |
|
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
に設定します。