Contents
Envoy Proxy導入の概要と目的
Linux環境でEnvoy Proxyを活用する際、Dockerコンテナやバイナリインストールなど、さまざまな導入方法が存在します。特にDevOpsエンジニアやシステム管理者にとって、ロードバランシング・セキュリティポリシーの実装など、アプリケーションとネットワークの境界で重要な役割を果たします。本記事では、Docker活用型での基本設定手順をわかりやすく解説し、実装に必要な知識をご提供します。
インストール方法: Dockerとバイナリの選択
Linux環境でEnvoy Proxyを導入するには、Dockerコンテナやバイナリインストールなど、用途や要件に応じて選択することが重要です。それぞれの特性を理解し、最適な方法を選定しましょう。
Dockerコンテナでの起動手順
Docker Composeを使用することで、迅速かつ簡潔に導入可能です。以下の手順を実行します。
docker-compose.ymlファイルを作成し、以下のように記述します。
注意: 証明書パスは環境変数や外部設定で管理するべきです。以下は例として示していますが、実環境ではハードコーディングを避けてください。
yaml
version: '3'
services:
envoy:
image: envoyproxy/envoy:v1.23.0 # 最新版の確認が必要なタグ
ports:
- "10000:10000"
volumes:
- ./config.yaml:/etc/envoy/config.yaml
command: /usr/local/bin/envoy -c /etc/envoy/config.yaml --configPath /etc/envoy
docker-compose up -dコマンドでコンテナを起動します。- サービスが正常に起動しているか、
docker psで確認します。
バイナリファイルの直接インストール
手動でバイナリをダウンロード・実行する場合、以下のように進めます。
- Envoy公式サイトから最新版のバイナリを取得します。
chmod +x envoyで実行権限を付与し、./envoy -c config.yamlで起動します。
| 導入方法 | 特徴 | 適した場面 |
|---|---|---|
| Docker | 起動が簡単・リソース管理容易 | テスト環境・迅速な導入 |
| バイナリ | カスタマイズ性高め | 生産環境・細かい設定が必要な場合 |
YAMLベースの構成ファイル作成ガイド
Envoy ProxyはYAML形式で構成を定義します。クラスタやルーティングポリシーを正しく記述することで、安定した運用が可能になります。
クラスタ定義の書き方
バックエンドサービスにアクセスするためには、クラスタ情報をconfig.yamlに記載します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
static_resources: clusters: - name: backend_service connect_timeout: 0.25s type: LOGICAL_DNS lb_policy: ROUND_ROBIN load_assignment: cluster_name: backend_service endpoints: - lb_endpoints: - endpoint: address: socket_address: address: 192.168.1.10 port_value: 8080 |
ルーティングポリシーの記述
HTTPリクエストを特定のクラスタに送信するには、以下のようにルートを定義します。
|
1 2 3 4 5 6 |
routes: - match: prefix: "/api" route: cluster: backend_service |
注意: 構成ファイルのエラーは起動時に強制終了されるため、YAML構文と構造に気をつけてください。
ロードバランシングの設定方法
複数のバックエンドサーバーにトラフィックを分散させるには、Envoyのlb_policyでロードバランスアルゴリズムを選択します。
ROUND_ROBIN(均等配分)やLEAST_REQUEST(リクエスト数が少ないサーバーへ送信)などのオプションを指定。-
設定例:
yaml
lb_policy: LEAST_REQUEST -
効果確認は
curl http://localhost:10000/stats/prometheusでメトリクスを確認し、トラフィックが均等に分散されているか検証します。
セキュリティポリシーの実装例
Envoy ProxyではTLSやアクセス制御ルールの設定により、セキュアな通信を実現できます。
TLS暗号化設定
|
1 2 3 4 5 6 7 8 |
transport_socket: name: envoy.transport_sockets.tls config: common_tls_context: tls_certificates: - certificate_chain: "/etc/envoy/certs/serverchain.pem" private_key: "/etc/envoy/certs/private.key" |
重要: 証明書のパスは環境変数や外部管理ファイルで設定し、ハードコーディングを避けてください。
アクセス制御ルール
IPアドレスの制限やレートリミットを設定する例です。
|
1 2 3 4 5 6 |
rate_limits: - domain: "global" descriptor: key: "client" value: "100" |
補足: レートリミットは、指定されたドメイン(ここでは
global)とクライアントごとに最大アクセス数を設定します。実環境では「Envoy Rate Limiting」や外部のサービス(Redisなど)との連携が必要な場合があります。
ステータス確認コマンドとトラブルシューティング
Envoy Proxyの動作状態は以下のコマンドで確認できます。
- 起動時のログ:
docker logs envoy(Dockerの場合)またはjournalctl -u envoy - メトリクス取得:
curl http://localhost:10000/stats/prometheus - 構成ファイルのエラーチェック:
envoy --configPath /etc/envoy/config.yaml -c config.yaml(起動時に自動チェック)
よくある質問と設定サポート
導入・運用に際して、以下の課題が発生することがあります。
- 構成ファイルのエラー → YAML構文を確認し、ツールで検証してください。
- トラフィックが通らない → ポート開放やルーティング設定を再確認。
- セキュリティ設定が反映されない → TLS証明書のパスや権限をチェック。
まとめ
本記事では、以下を解説しました。
- Linux環境でのDocker活用型Envoy Proxy導入の意義と概要
- Dockerとバイナリインストールの比較と手順
- YAML構成ファイルの作成方法と例
- ロードバランシング設定と確認手順
- TLS・アクセス制御などのセキュリティポリシー実装例
- ステータス確認コマンドとトラブルシューティング手順
Envoy Proxyの導入に際して、具体的な設定や疑問点があれば、この記事のコメント欄(例: [公式ブログURL])で質問を投稿してください。