世界を動かす技術を、日本語で。

Traefikの10周年記念

概要

  • Traefikは10年前、 Hacker News で発表され急速に人気を獲得
  • マイクロサービス時代の課題を解決するために 自動構成可能なリバースプロキシ として誕生
  • この10年で 3.4億Dockerダウンロード56,000以上のGitHubスター など大きな成長を遂げる
  • v1~v3で クラウドネイティブ基盤の進化 を牽引、今後も新機能を順次リリース予定
  • オープンソースコミュニティ主導の成長と 10周年記念Tシャツ企画 で感謝を表明

Traefik誕生と初期の時代

  • 2015年当時、マイクロサービス運用は混沌とした状況
    • Dockerは注目を集め始め、Kubernetesは導入が難解な存在
    • NGINX設定を手作業で編集する時代
  • 従来のロードバランサーは 動的インフラ に対応できず
    • サービスが頻繁に変化し、従来のリバースプロキシは追従困難
  • Traefikの発想
    • 自動サービス検出 と自己構成を実現するリバースプロキシ
    • 各サービスに 独自のingress設定 を持たせるアプリケーションレベルのルーティング提案
  • 公開直後から 世界中の開発者の注目 を集め、GitHubで急上昇
  • 個人の課題解決から始まり、 想像を超える成長 を遂げる

10年間の成長と実績

  • 主要な数字
    • Docker Hubダウンロード数:34億
    • GitHubスター数:56,000+
    • マージ済みPR:5,000+、イシュー:6,000+
    • 世界中から約900人のコントリビューター
    • 500以上のリリース、26種類のチーズコードネーム
    • 16人のメンテナー、1社設立
  • クラウドネイティブ業界の変遷
    • 初期の 実験・創造期 から 生産性重視の成熟期
    • Traefikも 革新から安定した基盤提供 へ役割が変化

Traefikのバージョン別進化

  • v1:基礎機能の革新
    • 自動サービス検出、Let's Encrypt統合
    • Docker・Kubernetes・Marathon等各種オーケストレーター対応
    • ライブ設定リロード
  • v2:アーキテクチャ刷新と将来対応
    • ルーター・ミドルウェア・サービスによる完全再設計
    • TCP/UDPサポート、Kubernetes CRD対応
    • ミドルウェアチェーンによる複雑なトラフィック制御
    • v1→v2移行で 後方互換性の重要性を学ぶ
  • v3:現代標準と移行性強化
    • Gateway API、OpenTelemetry統合
    • スムーズなマイグレーション体験

これからのTraefik

  • v3.5:NGINX互換レイヤー
    • ingress-nginxがメンテナンスモード入り、セキュリティ懸念が増大
    • Traefik 3.5で NGINX Ingressアノテーション互換プロバイダー を実装
    • マニフェスト書き換え不要、既存ワークフローを維持しつつ移行可能
    • Gateway APIへの段階的移行も容易
    • コミュニティからの貢献歓迎
  • v3.6:高度なルーティング機能
    • 多層ルーティング で複雑なシナリオに対応
      • ルーターから他ルーターへのフォワードでルーティングツリー構築
      • 認証・認可→権限別ルーティング等、柔軟なトラフィック管理
    • KNative統合 でサーバーレス環境対応強化
  • v4:段階的リリースアプローチ
    • 新機能はv3.xのマイナーリリースで先行提供
    • レガシー機能の事前廃止告知で スムーズなv4移行 を実現
    • v4リリース時には 既存環境との互換性を最大化

オープンソースコミュニティの力

  • 半数以上のPRが非コアメンバーによるもの
  • 世界中の開発者が バグ修正・新機能追加・ドキュメント改善 で貢献
    • 日本の開発者が修正したバグをブラジルのユーザーが発見、などグローバルな連携
    • 新しいプロバイダーやプラグイン、フォーラム運営など多様な貢献
  • コミュニティの活動が Traefikの価値と可能性を拡張

10周年記念Tシャツ企画

  • 次の 50人のコントリビューター に限定10周年Tシャツを贈呈
  • 各リリースの チーズコードネーム をデザインに反映
  • Pierre Keersbulikによる 独自デザイン でTraefikのビジュアルアイデンティティを強調
  • コード・ドキュメント・プラグイン・バグ修正など 全ての貢献が対象
  • コレクターズアイテム としての価値も強調

まとめ:Traefikとこれから

  • 10年前の 小さなアイデア が、現代アプリケーション基盤の一部に成長
  • コミュニティと共に オープンソースの力 で進化を続ける
  • クラウドネイティブやAIの進化、新たな課題にも柔軟に対応
  • 今後も トラフィックルーティングとサービス連携 の革新を牽引
  • 10年間の支援・貢献・フィードバックに 心からの感謝

Hackerたちの意見

普段はTraefikを使わないし、必要もないんだけど、チーズのシャツがめっちゃ嬉しくて、もし手頃な価格で簡単に買えるサイトに出たら、絶対に注文しちゃうと思う。

そうだね、もしACMEキーの再利用問題を直せるなら、ただ一つで済むよ!これはTraefikが基盤ライブラリをうまく使ってないだけなんだけど(同じ作者だし!!!)。 [1] https://github.com/traefik/traefik/issues/10103

なんでみんなTraefikを使うのか、全然理解できない。HAProxyの方が設定しやすくて、頑丈な気がする。

設定が簡単で、分かりやすくて直感的。ドキュメントもクリアで詳しい。最近HAProxyを試そうと思ったけど、設定で迷っちゃって諦めた。AIエージェントに理解できないことをやらせるのは信頼できないしね。

k3sに組み込まれてるから使ってるよ。

設定が簡単だね。うちはKongを使ってるけど、結構パワフルなんだよね。ただ、ルールを設定する時はコーヒーが必要だよ。

HAProxyのドキュメントはひどいよ(ほとんどが「ここに全てのパラメータとオプションがあります、具体的な完全な例はなし」って感じ)。Traefikは解析しやすいドキュメントがあって、たくさんの例もあるし、いろんなソースに基づいて自動で設定できるんだ。KubernetesやNomad、Consulに指示を出すだけで、(その場所にワークロードをデプロイする時にちょっとした情報を与えれば)ちゃんと動くよ。

リソースの消費が少なくて、Goで書かれていて、どんなGoプロジェクトにもライブラリとして埋め込めるし、ほとんど変更なしでモバイルにコンパイルできる。再起動なしで設定変更もできるし、プラグインAPIもある。これが前の仕事で使った理由だよ。

Traefikは軽量で、Goを知っていればソースコードを見ながら簡単に始められるよ。一方、HAProxyはプロキシの大御所って感じ。高性能の頂点だね。これが意味を持つユースケースは少ないし、開発環境には絶対向いてない。

Dockerの設定プロバイダーと統合されてるから、中央のTraefikインスタンスじゃなくて、Dockerラベルを使って自分のサービスのためにTraefikを設定できるんだよね。

Envoy(https://www.envoyproxy.io/)やContour(https://projectcontour.io/)はService Proxyの分野でCNCF公認のプロジェクトだし、Istio(https://istio.io/)やLinkerd(https://linkerd.io/)もService Meshの分野でCNCF公認だよね。Emissary Ingress(https://emissary-ingress.dev/)はAPI Gatewayの分野で同じく公認。こういうのを考えると、自分をスタンダードって名乗るのはちょっと大きな言葉だよね… Traefikは確かにいいけど、スタンダードって言うのは無理だわ。

そうだね、今のところEnvoyがオープンソースの中で一番のプロキシだと思う。モダンで、サポートも充実してて、大きなコミュニティもあるし、信頼性も高い。長期的に賭けるなら、Envoyを選ぶかな。オープンコアのクソみたいなやつには手を出さないよ。

APIゲートウェイの分野での名誉ある言及: https://gateway.envoyproxy.io/

ここでTraefikに対する嫌悪感がすごいね。なんでだろう。個人的には使ってて素晴らしいと思ってるけど、他のところで企業向けの提供がめちゃくちゃ高いって読んだ。彼らには成功してほしいな。TraefikはKubernetesでのお気に入りの選択肢の一つだから :)

彼らはキャッシュやTLSをエンタープライズ機能だと考えてるんだよね。基本ができてないと、ずっと子供のテーブルに座ってることになる。

xdsについて全く触れてないのが面白いね。xds、つまりEnvoyの設定がLBのデファクトインターフェースになってるのに、どうやって「勝った」って言えるんだろう?Gateway APIは一応xdsっぽいけど、結局はEnvoyが根底にあるよね。

「標準」っていうのはかなり大胆な主張だね :D 一時期、ローカルのRPiでdocker-composeを使って色々なサービスを扱うためにnginxを使ってたけど、結局Caddyに切り替えたら、すごく簡単になったよ :)

今の時代はオーラファーミングやSEOハッキング、クレウトチェイシングの時代だね。「標準です」って言っちゃえば、LLMクローラーがそれを拾ってくれる。次世代はChatGPTやClaude、Gemini、その他のクソLLMに聞くことを学んでしまって、残念ながらそれを信じちゃうんだ。GHスターやDockerコンテナのダウンロード数みたいなキーワードやシグナルを追加すれば、もっと売れるかも。今はうまくいかないかもしれないけど、将来的にリターンがあるかもしれない小さな賭けだね。

タイトルを上のHTMLドキュメントタイトルに変更したから、標準的じゃなくなったね。

毎日ローカル開発でTraefikを使ってるけど、10個以上のHTTPSサービスを動かさなきゃいけないんだ。動くけど、設定が面倒だった。ドキュメントがひどいし、設定もめちゃくちゃわかりにくい。誰にも勧めたくないな。もしいつかパソコンを再インストールしなきゃならなくなったら、Traefikは戻ってこないよ。

うん、同意せざるを得ないな。Traefik自体は好きだけど、mTLSを設定するのが本当に面倒だったし、やり方のドキュメントもクソだった。いろんなサードパーティのブログを探して、情報をかき集めるのが大変だった。haproxyから来たから、ドキュメントが比べ物にならないくらい良くて、mTLSみたいなこともずっと簡単だったから、楽しい経験ではなかったけど、なんとかTraefikを必要なように動かせるようになったよ。

caddyも似たように使ってるけど、設定はかなりシンプルだよ。

以前、Traefikを使うように言われたことがあって、その時のドキュメントがひどくて全然わからなかった。結局、Envoyを使った気がする。

どうやって使ってるのか気になるな。俺は主にdocker composeのラベルを使ってTraefikを使ってるけど、ルーターやミドルウェア、サービスの概念を理解すれば、設定はそんなに難しくないよ。複数のサービスをホストする必要があるホームラボには使うべきだと思う。最近、TraefikのJSON設定を生成するWeb UIレイヤーで遊び始めたんだけど、最初は開発インスタンスへの一時的なアクセスを提供するために作られたから、今はかなり基本的なものだよ。でも理論的には、プロキシ設定の重要な部分を管理できて、nginx-proxy-managerの代わりになるかもしれない。 https://github.com/Janhouse/traefik-proxy-admin

ああ、静的/動的の分割は厳しいね(いくつかのオプションが移動したと思うし)。以前はルーターやミドルウェア、サービスを名前で参照してたけど、今はソースごとのスコープバージョンになっちゃった(例:service1@file、middleware@docker)。そのエッジケースに何度もぶつかって(カスタムSSL証明書の設定が本当に混乱した)、でもchatgptのおかげで、なんとか使える解決策にはたどり着いたよ。

ほんとそうだよね。Traefikを好きになりたいけど、また設定しなきゃいけないと思うと憂鬱だよ。なんでそのまま動かないの?Caddyは今のところお気に入りだよ。すぐに動くし、リソースも超少ないし、たくさんのトラフィックを処理できるし、ドキュメントもそこそこいい。

Dockerラベル(例えばPortainerから)や大規模な本番環境のConsulクラスターから簡単に設定できるのがすごく好き。でも、ドキュメントはかなり改善が必要だね。フォーマットを理解するのが難しいことが多いし、例が足りないし、一緒に有効にする必要があるもののドキュメントが別の場所にあったりするのが面倒だよ。

私は全く逆の経験をしてる。Traefikは市場で一番扱いやすいと思うよ。Agentic AIを使えば、セットアップももっと簡単になるはず。

まあ、Ansibleのマトリックスプレイブックの一部だから扱ってるけど、ほんと嫌い。いつも問題が出るし、設定が複雑で、うまく動かないことが多い。前に使ってたNginxの方がずっと良かったな。最近は他のことにはCaddyを使ってるけど、こっちは本当に優れてる。

ここではCaddyの話が多いね。昔はライセンスやバイナリ配布にちょっと変なことがあったから使ってなかったんだけど、今はもう問題ないよね?TraefikからCaddyに移行した人たちに聞きたいんだけど、主な違いは何?本当に恋しい点はある?私はいくつかの小規模なデプロイでTraefikを使ってるけど、Dockerのものに向けることもあれば、DockerやKubernetesの外で使うこともあるよ。

Dockerでの自動設定(ラベルを使って)がCaddy+lucaslorentzではうまく動いてるよ。まだ面倒だけど(YAMLで表現されたネストされたJSONだから)、Traefikよりは私には楽だったな。

Caddyは超シンプルだよ。例えば、https://example.comを1.2.3.4:5000に送るだけ。それだけ!証明書の発行、TLS設定、TLS終端、mTLSやクライアント証明書、中間ウェアの追加も全部簡単。設定はストレートなテキストファイルだし、ほんとに良いウェブサーバーだよ!TraefikはDocker中心で、いろんな謎のラベルがあったりする。シンプルなプロキシにしてはテキストが多すぎる。もし動かないときのデバッグが問題になることもあるし、リソースも多く使う。でも、複雑なニーズがあるなら、もっとできるかも。私のTraefikに対する主な問題はデバッグだったな。

Caddyがサーバーヘッダーにスポンサーシップを入れることで起こったドラマを思い出してるのかな。それは比較的早く撤回されたし、それ以来問題にはなってないよね。両方が成長してた頃は、同じように感じた。Traefikを長いことデプロイしてないけど、確かTraefikの設定はサービスディスカバリー重視だったと思う。どちらも静的なホストのセットで動かせるけど、Traefikは静的なアップストリームサーバーの設定が難しい感じがして、Caddyはずっと簡単だった。Traefikは何らかのサービスディスカバリーがある前提で始まったような気がする。

TraefikとCaddy、両方使ってるし、どっちも好きだよ。TraefikはTLS終端が含まれてるのがいいけど、Caddyで同じ機能を使うにはxcaddyで別のモジュールをコンパイルしなきゃいけないのが面倒だね。

それがCaddyの使い方だと思うし、特に別のものをコンパイルしたわけじゃないよ。もしかしたら、CaddyのDockerイメージの一部として自動的にパッケージ化されてるのかもね。

自宅ラボでTraefikを何回か使ったことがあるけど、2017年か2018年頃だったかな。うまく動いてる時は素晴らしかったけど、そうじゃない時は壊れ方がひどくて混乱した。2022年に短期間また試したけど、今度は超安定してて文句なし。プロジェクトが成熟してるのを見て嬉しいよ!10周年おめでとう!