MENU

Traefikとは|コンテナ時代のリバースプロキシ入門

Traefik アイキャッチ
Traefik

Traefikは2016年にフランスのContainous社(現Traefik Labs)が公開したGo製のリバースプロキシ/エッジルータである。DockerやKubernetesに自動連携してサービスを発見し、設定ファイルを書き換えずにルーティングを更新できる点が特徴で、Let's Encryptによる証明書取得まで一体化されている。本稿ではTraefik登場の背景、アーキテクチャ、Docker・Kubernetesとの連携、運用上の勘所を順に紹介する。

目次

この記事の目次

  1. コンテナ時代の課題とTraefikの登場
  2. EntryPoint・Router・Middleware・Serviceの構造
  3. DockerとKubernetesでの実運用
  4. NginxやHAProxy、Caddyとの比較
  5. まとめ

コンテナ時代の課題とTraefikの登場

コンテナ時代の課題とTraefikの登場

2014年のDocker普及以降、サーバ上で動くサービスは「固定IP、固定ポート」を前提にした構成から、「短命なコンテナがオーケストレータによって動的に入れ替わる」モデルへと移行した。NginxやHAProxyを使う場合、サービスが増減するたびに設定ファイルを書き換えて再読み込みする必要があり、運用負荷の増大が顕著になっていた。

ContainousのEmile Vaugeはこの課題を解決するため、コンテナ環境に最適化したリバースプロキシとしてTraefikを設計した。Docker API、Kubernetes API、Consul、etcdといったサービスディスカバリ機構を「プロバイダ」として読み取り、そこから自動的にルーティングを生成する仕組みを内蔵することで、ファイル編集を中心とした運用から脱却した。

EntryPoint・Router・Middleware・Serviceの構造

EntryPoint・Router・Middleware・Serviceの構造

Traefikのモデルは四つの抽象から成る。EntryPointは80番や443番など待ち受けポート、Routerはホスト名やパスを条件にマッチさせる規則、Middlewareは認証やレート制限などの前後処理、Serviceは実際のバックエンド群である。リクエストはEntryPoint→Router→Middleware→Serviceの順に流れる。

Routerのマッチ条件はHost(example.com) && PathPrefix(/api)のようにルール言語で記述する。MiddlewareにはBasic認証、IP許可、ヘッダ書換、リトライ、サーキットブレーカ、レート制限など多彩な部品があり、Service側ではラウンドロビンやスティッキーセッションを設定できる。これらをラベルやアノテーションでコンテナ側に書くだけで、Traefikが自動的に取り込んで反映する。

DockerとKubernetesでの実運用

DockerとKubernetesでの実運用

Docker Composeでは各サービスにlabelsとしてTraefikのルーティング情報を書く。Kubernetesでは標準のIngressリソースを認識するほか、Traefik独自のIngressRouteカスタムリソースを使うとMiddlewareチェインを表現しやすい。Traefik LabsはKubernetes Gateway APIへの対応も進めている。

Let's Encryptとの統合では、ACMEのHTTP-01やDNS-01チャレンジを内蔵で処理し、ホスト名ごとに証明書を自動取得・更新する。HTTP/2やHTTP/3、TLS 1.3の対応も比較的早く、オブザーバビリティ面ではPrometheus、OpenTelemetry、Jaegerなどへエクスポートする仕組みが揃っている。

NginxやHAProxy、Caddyとの比較

NginxやHAProxy、Caddyとの比較

NginxやHAProxyは静的設定ファイルを基本とし、外部スクリプトで再生成する運用が一般的である。性能の絶対値と設定の細かさでは依然強力だが、コンテナの動的な増減に追随させるには工夫が必要である。Caddyも自動HTTPSなど共通点はあるが、サービスディスカバリの観点ではTraefikのほうが豊富である。

Traefikは静的構成と動的構成を分離しており、CRDやラベルに沿ってルーティングを宣言的に管理できる点が最大の強みである。一方で、ルール言語やCRDの学習コスト、独自概念の多さは敷居になるため、シンプルな静的構成しか必要としない場合はNginx/Caddyのほうが向く。要件に合わせて選び分けたい。

まとめ

Traefikはコンテナとオーケストレータの普及に合わせて設計されたリバースプロキシであり、自動サービスディスカバリ、TLS自動化、宣言的なルーティングという強みを持つ。Kubernetes中心の現代インフラでは有力な選択肢であり、NginxやHAProxyとの違いを理解したうえで使い分けたい。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次