Routing components
Route
A route is a set of rules that match virtual hosts to clusters and allow you to create traffic shifting rules. Routes are configured either via static definition, or via the route discovery service (RDS).
仮想ホスト名を clusters に一致させるルールセット。static に設定することも、route discovery service を使うこともできる。
Cluster
A cluster is a group of similar upstream hosts that accept traffic from Envoy. Clusters allow for load balancing of homogenous service sets, and better infrastructure resiliency. Clusters are configured either via static definitions, or by using the cluster discovery service (CDS).
upstream の host group のこと。こちらも static に設定することも、cluster discovery service を使うこともできる。
Listener
A listener is a named network location (e.g., port, unix domain socket, etc.) that can accept connections from downstream clients. Envoy exposes one or more listeners. Listener configuration can be declared statically in the bootstrap config, or dynamically via the listener discovery service (LDS).
downstream からの通信を受け付ける君。static にも dynamic にもできる。
Defining Routes
前回の sample を参照する。domain がワイルドカードになっているが、 specific にしてもいい。foo.example.com みたいな。host header が残ってれば。
virtual_hosts: - name: backend domains: - "*"
clusters definition は特にコメントなし。
Configuring listeners
これもシンプルなので特に気になるところはないかな。
http_filters: - name: envoy.router config: {}
ここには何が入るんだろ。
envoy.router はこれ。
なるほど、timeout とか retry とかを header に埋めて設定できるんですね。
filter.network.HttpFilter は他にこんなやつがある。
envoy.buffer envoy.cors envoy.fault envoy.http_dynamo_filter envoy.grpc_http1_bridge envoy.grpc_json_transcoder envoy.grpc_web envoy.health_check envoy.lua envoy.rate_limit envoy.router
おわり
おわり
とにかく公式ドキュメントが頼りになりすぎてよい。