Ingressシステムの再設計:Dockerの次の世代Ingressアーキテクチャへの移行

はじめに

Kubernetes環境におけるIngress管理は、サービスの外部アクセスを効率化し、柔軟なルーティングを実現するための核となる技術です。しかし、従來のIngressアーキテクチャは複雑な依存関係や制限により、運用コストと信頼性の課題を抱えていました。本記事では、Dockerが採用した新たなIngressアーキテクチャの設計思想、技術的選択肢、実裝戦略、および移行プロセスを詳細に解説します。Envoy GatewayやHAProxy、EngineXといった技術の選択理由や、CNCF(Cloud Native Computing Foundation)の枠組みにおける位置づけについても説明します。

主要な技術と設計思想

1. 舊システムの課題

制御臺の依存

舊システムでは、制御臺クライアント/サーバーを介したKeyValueストレージや動的再構成、サービスディスカバリーに依存していました。これにより、制御臺サービスの高可用性を確保する必要があり、システム全體の脆弱性が増加しました。

EngineXの限界

EngineXは10年前に開発され、HAProxyでは実現できない機能を補うために設計されました。しかし、これにより追加のプロキシレイヤーが導入され、レイテンシーと複雑性が増加しました。LuaスクリプトによるJWT認証やレート制限、セッション管理の処理は、複數のレイヤーで重複され、故障リスクとリソース消費が増加しました。

HAProxyの制限

HAProxyはOpen Telemetryのサポートが不足しており、観測性の欠如が課題でした。また、複雑なSidecarエコシステムの必要性により、運用が困難になっていました。

2. 新しいアーキテクチャの設計

Envoy Gatewayの選択

Envoy Gatewayは動的XDS再構成をサポートし、強力なコミュニティとGo言語による拡張性を備えています。Kubernetesネイティブなソリューションとして、自サービスルーティングを実現し、Gateway APIを通じて豊富なルーティングモデルと操作の簡素化を提供します。

システムアーキテクチャの構成

  • エントリーレイヤー:AWS ALB(L7)がTLS終了、ホストパスベースのルーティング、ロードバランシングを擔當します。
  • データプレーン:Envoy Proxyのクラスターが、流量タイプ(外部/內部)ごとに分類されます。
  • コントロールプレーン:Envoy GatewayがXDS構成、ルーティング戦略の変換、検証を管理します。
  • 抽象レイヤー:內部のカスタムAPIがGateway APIをラップし、デフォルト値と戦略検証を提供します。
  • 戦略検証:OPA Agentがルート構成(ドメイン/パスの一意性など)を検証します。

重要な技術統合

  • レート制限サービス:Envoy Rate Limiter(Goサービス)とXDS動的構成を組み合わせます。
  • トラフィックスイッチメカニズム:ALBのウェイトルーティングにより、グレースフルデプロイと即時ロールバックを実現します。
  • 観測性:Open TelemetryとEnvoyのネイティブトレース機能を統合します。

3. 移行プロセス

ネットワークレイヤーの移行

NLB(L4)からALB(L7)への移行を行い、Route 53 DNSウェイト調整を用いて段階的に切り替えます。ALBが追加するX-Forwarded-Forヘッダーのアプリケーションレイヤー調整を解決し、ALBの即時トラフィックスイッチ機能によりサービスごとに移行を実現します。

構成管理

Helmチャートを用いてルート構成を管理し、Kubernetes注釈でトラフィックルールを定義します。例として、http.routetrafficPolicyの構成でトラフィック比率とルート目標を指定します。Canaryデプロイをサポートし、90%はHAProxy、10%はEnvoyにトラフィックを導きます。

移行成果

  • パフォーマンス向上:トゥルース量が4倍に、コア使用量が50%削減されました。
  • 信頼性向上:LB切り替えとコントロールプレーンの分離により、障害リスクが低下しました。
  • リソース最適化:Sidecarとプロキシレイヤーの削減により、運用複雑性が低下しました。
  • 観測性向上:Open Telemetryの統合により、全リンクトレースが実現されました。

4. 技術的課題と解決策

Gateway APIの制限

一部の機能(グローバルレート制限、IPタグ)は未実裝であり、XDS APIによるパッチを用いて拡張します。コントロールプレーン拡張により、カスタム戦略の統合を実現します。

移行リスクの管理

ALBのウェイトルーティングにより、トラフィックスイッチとロールバックを実現します。OPA戦略検証により、構成エラー(重複ドメイン/パス)を防止します。Helmチャートによる構成プロセスの標準化により、人為的エラーのリスクを低減します。

結論

本記事では、Dockerが採用したIngressアーキテクチャの再設計プロセスと技術的選択肢を詳細に解説しました。Envoy Gatewayの選択により、動的XDS再構成、Kubernetesネイティブな機能、豊富なルーティングモデルが実現され、運用効率と信頼性が向上しました。また、HAProxyやEngineXの制限を克服し、Open Telemetryによる観測性の向上により、システムの可視性が強化されました。今後の課題として、Gateway APIの制限を克服するためのXDSパッチや、コントロールプレーンのグレースフルデプロイの実裝が挙げられます。これらの技術は、CNCFの枠組みにおいても重要な役割を果たしており、今後のクラウドネイティブアーキテクチャの進化に貢獻するでしょう。