Envoy

KubernetesでEnvoy Gatewayを導入する方法

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

Gateway APIとの連携

Envoy Gatewayは、Gateway API CRDと密接に連携して動作します。このAPIにより、Kubernetesクラスター内でのHTTPルーティングや負荷分散を柔軟に制御できます。現在の最新バージョン(v1.2.5以降)では、CRDの定義が強化され、複雑なネットワーク構成もサポートしています。

注意: 本記事の記載は2024年3月時点の情報に基づいています。技術仕様は随時更新されるため、公式ドキュメントを常に確認してください。


AIモデルルーティングの意義

AIサービスと連携する際、LLM(大規模言語モデル)の切り替えは重要な課題です。Envoy Gatewayには、HTTPヘッダを基に異なるモデルを動的に選択する機能が備わっており、開発者は効率的なロードバランシングやA/Bテストを実現できます。

以下に技術的詳細を解説します。

  • ルーティングメカニズム: Gateway APIのHTTPRouteリソース内でヘッダマッチ条件を設定することで、LLMモデルの切り替えが可能になります。
  • 動的振り分け: X-Model-Versionヘッダの値に応じて、Envoy Gatewayは対応するサービスバージョンへのルーティングを行います。
  • 実装例:
    yaml
    spec:
    rules:

    • matches:
      • headers:
        • name: X-Model-Version
          value: v2.0
          backendRefs:
      • name: llm-v2-service
        port: 80

Gateway API CRDのインストール手順

KubernetesクラスターへGateway API CRDを導入するには、kubectl applyコマンドを使用します。このステップが正しく行われることで、Envoy Gatewayと連携したネットワーク設定が可能になります。

kubectl applyでのCRD適用

  1. 事前にKubernetes v1.26以降を確認してください。
  2. GitHubからGateway APIのYAMLファイルを取得します。
  3. kubectl apply -f gateway-api.yamlでCRDを適用します。

重要: CRDとEnvoy Gatewayのバージョンが互換性を持つことを必ず確認してください。最新版に対応していないと機能が動作しない場合があります。


バージョン確認方法

確認項目 コマンド 補足
CRDバージョン kubectl get crd gatewayclasses.gateway.networking.k8s.io CRDが正しく適用されているか確認
Kubernetesバージョン kubectl version --short v1.26以降が推奨

Envoy GatewayのHelmによるインストール

Envoy GatewayをKubernetesにインストールする際、Helmチャートを使用すると効率的です。カスタムパラメータを活用することで、運用環境に応じた柔軟な設定が可能です。

Helmリポジトリ追加手順

  1. Helmリポジトリを追加します。
    bash
    helm repo add envoy-gateway https://envoyproxy.github.io/gateway

  2. リポジトリの更新を行います。
    bash
    helm repo update


カスタム設定パラメータ一覧

以下は、Envoy Gatewayをインストールする際によく使われるカスタムパラメータです。

  • replicaCount: レプリカ数(デフォルト: 2)
  • image.tag: 使用するイメージバージョン
  • metrics.enabled: メトリクスの有効化

ヒント: パラメータはhelm show values envoy-gateway/envoy-gatewayで確認可能です。


HTTPルーティング設定ファイルの作成

Envoy Gatewayは、YAML形式で定義されたGatewayとRouteリソースを使ってルーティングを制御します。以下の手順で設定ファイルを作成し、実装してください。

Gatewayリソース定義例

以下は、シンプルなHTTP Gatewayの定義です。


Routeリソースの詳細設定

Routeリソースは、具体的なルーティングルールを定義します。


LLMモデル切り替え用ヘッダ指定方法

AIサービスとの連携において、HTTPヘッダーを介したLLMモデルの動的切り替えは効率的な運用が可能です。Envoy Gatewayでは、この機能をシンプルな設定で実装できます。

モデル選択用HTTPヘッダー仕様

  • ヘッダ名: X-Model-Version
  • 値の例: "v1.0", "v2.0"
  • 動作: 異なるモデルをロードバランシングで振り分け

OCI Network Load Balancerとの統合構成

クラウドプロバイダのOCI(Oracle Cloud Infrastructure)Network Load BalancerとEnvoy Gatewayを連携させることで、高可用性とセキュリティを両立できます。以下に設定手順を紹介します。

NLBのリスナーコンフィグ

  1. OCIコンソールからNLBを作成し、Listenerを設定します。
  2. Protocol: TCP or HTTP
  3. Backend Set: Envoy Gatewayが動いているPodに接続する設定を行います。

例: Listener設定パラメータ

項目 補足
プロトコル TCP HTTPも選択可能
ポート 80/443 サービスの要件に応じて設定
Backend IP Envoy Gateway PodのIP Kubernetesサービスのエンドポイントを指定

証明書設定手順

SSL証明書のインストールには、以下のようにcert-managerを使用できます。

  1. cert-managerをクラスターにデプロイします。
  2. Issuerリソースを作成し、Let's Encryptなどから証明書を取得します。
  3. NLBに証明書をアップロードし、Listenerで有効化します。

参考: OCIでは、NLBの「SSL終端」機能を使用して証明書を直接設定可能です。


まとめ

本記事では、Kubernetes環境でのEnvoy Gatewayの導入手順を具体的に解説しました。

  • Gateway API CRDのインストール方法
  • HelmによるEnvoy Gatewayのデプロイ
  • HTTPルーティング設定ファイルの作成
  • LLMモデル切り替え用ヘッダー指定と動的ルーティング実装
  • OCI Network Load Balancerとの統合構成

これらのステップを踏むことで、Kubernetes環境でのネットワーク制御を効率的に実現できます。実際にローカル環境で検証しながら導入を体験してみてください。


スポンサードリンク

-Envoy