APIには以下のAPIが含まれます。APIを利用できます。Envoyの利用例サービスディスカバリーサービスメッシュ内であるサービスが別のサービスに接続するには、接続先のIPアドレスを知る必要があります。KubernetesのようにIPアドレスが不定の環境では必要な仕組みです。単純なサービスディスカバリーの実装はDNSです。KubernetesではユーザーがServiceリソースを作成すると、対応するDNSレコードがDNSサーバーに登録されます。DNSは詳細な経路設定ができませんし、負荷分散のルールも設定できません(KubernetesのServiceリソースはラウンドロビンでPodを選びます)。Envoyではより柔軟なサービスディスカバリーを実装できます。この機能を使うと、たとえば一部のユーザーにのみ新しいサービスを提供できたり、データベースを分割してる環境で欲しいデータのあるインスタンスを見つけたりできます。Envoyを利用するとこういった柔軟な設定ができます。アプリケーションは宛先のインスタンスを直接知らずとも、Envoyを経由して透過的に目的のサービスに到達できます。コントロールプレーンとデータプレーンが役割ごとに別れて、わかりやすいアーキテクチャになっています。エッジプロキシサービスディスカバリーの仕組みを使うと、エッジプロキシとしても役立てる事ができます。EnvoyはNGINXのように、HTTPリクエストのヘッダーやパスに応じた経路を設定したり、複数経路を重み付けでロードバランシングできます。そのためBlue-Greenデプロイやカナリアリリースに必要な機能が備わっています。ContourはバックエンドにEnvoyを採用したKubernetesで利用できるエッジプロキシです。ControllerではBlue-Greenデプロイやカナリアリリースをできるほどの柔軟性がありません。Definitionとして提供します。CloudNativeConでもあったので時間のある人はぜひ。HeptioまとめEnvoyを軽く触って最初に思ったのは「高級なL7LBだなぁ」という感想程度でした。機能自体は目新しいものは少ないですが、素な機能のみを提供してるため使い方は無限大です。APIなどの設計は良くできてるなという感想です。他のロードバンサーの実装と違い、クラウドネイティブなアプリケーションでは大活躍できそうだと思いました。今後もちまちまと調査を進めて、もう少し実用的な記事も書いていきたいと思います。(@ueokande)Webの会社のミドルウェアエンジニア。