ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

LEARN ENVOY - Getting Started / Routing Basics

www.envoyproxy.io

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 はこれ。

www.envoyproxy.io

なるほど、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

www.envoyproxy.io

おわり

おわり

とにかく公式ドキュメントが頼りになりすぎてよい。