概要
モダンプロキシサーバの envoy を試してみました
イメージとしては nginx や HAProxy などの代替になるツールという印象です
とりあえずデモにあるプロキシを経由するとすべてのアクセスが特定のサイトのコンテンツを表示するサンプルを試してみました
環境
- macOS 10.15.7
- envoy 1.16.0
インストール
Mac の場合は Homebrew でインストールすることが可能です
brew install envoy
--version
オプションでバージョンが確認できます
envoy --version
Getting Started
とりあえず試してみましょう
まずは起動します
wget https://www.envoyproxy.io/docs/envoy/latest/_downloads/f6e613dcd48bb592b753313e7cfb1b28/envoy-demo.yaml
envoy -c envoy-demo.yaml
localhost:10000
で envoy が起動しています
curl localhost:10000
アクセスすると www.envoyproxy.io の画面が表示されると思います
これは envoy-demo.yaml
を見るとわかりますがすべてのアクセスを www.envoyproxy.io に流すように定義されているためです
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
http_filters:
- name: envoy.filters.http.router
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
host_rewrite_literal: www.envoyproxy.io
cluster: service_envoyproxy_io
例えば localhost:10000/try
にアクセスすると www.envoyproxy.io/try のページが表示されます
管理画面にアクセスする
また localhost:9901
で管理画面が起動しているのでブラウザでアクセスしてみましょう
こんな感じで envoy の各種設定や動作しているホストの情報を確認することができます
管理画面にアクセスできる定義も envoy-demo.yaml
内で定義されています
admin:
access_log_path: /dev/null
address:
socket_address:
address: 0.0.0.0
port_value: 9901
最後に
macOS 上で envoy をとりあえず動かしてみました
k8s 上でサービスメッシュを実現するというコンテキストで使われることが多いようですが単体でも動作することが確認できました
設定ファイルを YAML で定義してプロキシへのアクセスをすべて特定のサイトに移動するようなデモを試してみました
nginx でも同じようなことができるのでイメージしやすいデモだったかなと思います
今回はルーティングルールを静的に記載しましたが envoy はこれを動的に行うこともできるようです (参考: Examples Dynamic)
0 件のコメント:
コメントを投稿