envoyのTCPプロキシ設定

envoyは多様なプロトコルに対応しています。TCPプロキシとしても利用でき、HTTPプロキシ機能と混在も可能です。

TCPはHTTPと比べて取り扱う処理が少ないため、設定もシンプルです。以下はSSHを想定したListenerの設定例です。

- name: listener_tcp
  "@type": type.googleapis.com/envoy.config.listener.v3.Listener
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 22
  filter_chains:
  - filters:
    - name: envoy.filters.network.tcp_proxy
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
        stat_prefix: ssh
        cluster: ssh-host

TCPのサービスはポートを専有するため、この例のようにListnerを1つ追加定義することになります。

フィルタに TCP Proxyのconfigを使用する点がポイントです。
stat_prefixだけが必須項目であるため、最低限のconfigに迷うことはないでしょう。

オプション項目には、ルーティングロジックを実装するための機能が用意されています。

cluster側の設定は、HTTPと違いがないため省略します。

中馬崇尋
Chuma Takahiro