API ゲートウェイは、クライアントアプリケーションとバックエンドサービスの間で流量管理、認証、監視などの機能を提供する重要な構成要素です。特に、マイクロサービスアーキテクチャにおいて、複雑な流量制御やセキュリティポリシーの実裝が求められるため、API ゲートウェイの存在は不可欠です。
Apache API 6(Apache APISIX と推定される)は、進階的な流量管理機能を備えており、以下のような特徴を持っています。
Kubernetes では、ClusterIP、NodePort、LoadBalancer などのサービスタイプが提供されていますが、これらは細粒度の流量制御に不向きです。従來の Ingress API は、注釈(Annotations)を介して拡張機能を追加する必要があり、結果としてベンダー鎖定(Vendor Lock-in)のリスクを生じます。また、クエリパラメータによるルーティングや URL 重構などの高度な機能はサポートされていません。
一方、Kubernetes Gateway API は、標準化された拡張ポイントを提供し、以下のような利點があります。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /left
backend:
service:
name: left-service
port:
number: 80
- path: /right
backend:
name: right-service
port:
number: 80
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: example-http-route
spec:
host: example.com
rules:
- matches:
- path:
type: Prefix
value: /left
- path:
type: Prefix
value: /right
backendRefs:
- name: left-service
port: 80
- name: right-service
port: 80
Apache API 6 は、Kubernetes の原生 Ingress コントローラーとして機能し、etcd を使用して構成情報を保存します。また、パスストリピング(Path Stripping)などの進階機能をサポートしています。このように、Apache API 6 は Gateway API の実裝者として機能し、現時點では Gateway API の一部の実験的機能を完全にサポートしていません。
Kubernetes Gateway API は v1.0 に到達し、生産環境での利用が可能となっています。ただし、URL 重構フィルターなどの実験的機能は、実裝者(Apache API 6 など)のサポートが必要です。Apache API 6 は、Gateway API の新機能を継続的に実裝しており、今後、API ゲートウェイの標準化と柔軟性を高めることが期待されます。
機能 | Ingress API | Gateway API |
---|---|---|
パスマッチング | Prefix/Exact | Prefix/Exact/Regex |
クエリパラメータルーティング | 不支援 | 支援 |
URL 重構 | 不支援 | 支援 |
拡張ポイント | 注釈依存 | 標準化拡張ポイント |
ベンダー鎖定 | 存在 | 低減 |
Kubernetes Gateway API は、マイクロサービスアーキテクチャにおける流量管理の標準化を推進する重要な技術です。Apache API 6 との統合により、柔軟性と拡張性が向上し、実際の運用環境での導入が可能となっています。今後、Gateway API が Kubernetes のサービス流量管理の終極的な標準として広く採用されることを期待します。