気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Envoy Proxyについて

Envoyとは?

  • Nginxと類似した機能を持つOSS
  • マイクロサービスに対応するために、サービス間のネットワーク制御をライブラリとしてではなく、ネットワークプロキシとして提供するために開発された
  • アーキテクチャ
    • アプリケーションと同じホスト上にEnvoyを構築
    • Kubernetesなどでは、Envoyを各アプリケーションのサイドカーコンテナとしてデプロイ
      • サイドカーとは?
        • Kubernetesポッド内のアプリケーションコンテナと連動する独立したコンテナです。アプリケーション補完機能を保持
        • 機能:SSL/mTLS、トラフィックルーティング、高可用性など
    • 各サービスは別のサービスを直接参照するのではなく、Envoyを経由してアクセスすることになる

  • Envoyはアプリケーションからネットワークの切り離しを実現
    • Envoyは、各サービスのIPアドレスを保持、アプリケーション自体が別のサービスのIPアドレスを知らなくても問題はなくなる
    • サービスの通信経路やIPアドレスが変更になった場合でも、Envoyの設定を更新するのみで、アプリケーションに手を加える必要がなくなる
    • サービスメッシュを実現する
      • 開発者はアプリケーションのビジネスロジックに専念し、それらの通信に関連する複雑な問題を解決する責任から解放される

Envoyが提供する機能

  • ネットワークレベルのフィルタ
    • L3/L4フィルタ -フィルタはTCPプロキシ、HTTPプロキシ、TLSクライアント証明書認証などをサポート
  • gRPCサポート
    • gRPCリクエスト/レスポンスのルーティングおよび負荷分散の基盤として使用する必要のあるHTTP/2機能全てをサポート
  • サービスディスカバリーとダイナミックコンフィグレーション
    • オプションとしてDNSを介してバックエンドホストの検出を行うことが出来ます。またxDS APIを使用してEnvoy内の設定を動的に更新することも可能

参考URL