Contents
導入: Kubernetes Gateway API と Envoy Gateway の統合概要
Kubernetes Gateway API と Envoy Gateway を統合することで、柔軟なサービスゲートウェイ構築が可能になります。特に OCI ネットワークロードバランサー (NLB) との連携は、クラウドネイティブ環境での高可用性やセキュリティ強化に貢献します。本記事では、Kubernetes Gateway API と Envoy Gateway の統合設定方法を中心に、OCI NLB との統合手順を具体的に解説します。
Helm チャートによる Envoy Gateway インストール手順
Kubernetes 環境で Envoy Gateway を導入する際には、Helm チャートを使用するのが最も効率的な方法です。OCI クラウド特有のパラメータ調整も含め、ステップバイステップで確認してください。
リポジトリ追加とバージョン選定
-
Helm リポジトリに Envoy Gateway の公式リポジトリ を追加します。
例:helm repo add envoy https://envoyproxy.github.io/gateway -
helm repo updateでリポジトリ情報を更新し、利用可能なバージョンを確認します。 - OCI NLB との互換性を考慮し、最新版または安定版を選定します。
例:helm install envoy-gateway oci://registry.envoyproxy.io/envoy/gateway --version v1.6.0
注意: 公式リポジトリ URL(
https://envoyproxy.github.io/gateway)を必ず使用してください。
カスタムリソース定義の有効化
インストール後は、Kubernetes クラスターで Envoy Gateway 用のカスタムリソース(CRD)を有効にする必要があります。以下のように kubectl apply で適用します。
|
1 2 |
kubectl apply -f https://raw.githubusercontent.com/envoyproxy/gateway/v1.6.0/config/crd.yaml |
注意: OCI クラウド環境では、ネットワークポリシーに応じて CRD のマニフェストをカスタマイズする必要があります。詳細は Envoy Gateway ドキュメント を参照してください。
GatewayClass リソースの定義方法
GatewayClass リソースは、Envoy Gateway がどのネットワークプロバイダと連携するかを指定します。特に OCI NLB との接続には、以下の設定パラメータを活用します。
Envoy 特有の設定パラメーター
controllerName: "envoyproxy.io/gateway-class" を指定。parametersRef.name: 使用する Envoy Gateway のコンフィグリソース名を設定。
例:
|
1 2 3 4 5 6 7 8 9 10 11 |
apiVersion: gateway.networking.k8s.io/v1beta1 kind: GatewayClass metadata: name: envoy-gateway-class spec: controllerName: "envoyproxy.io/gateway-class" parametersRef: group: envoyproxy.io kind: EnvoyGatewayParameters name: default-parameters |
OCI NLB との接続指定
OCI NLB と連携するには、Envoy Gateway のパラメータに以下を追加します。
| パラメータ名 | 値例 | 補足 |
|---|---|---|
ociNLB.Enabled |
true | OCI NLB 連携有効化 |
ociNLB.SubnetId |
ocid1.subnet.oc1.ap-tokyo-... | ロードバランサーが配置されるサブネットID |
参照: OCI NLB 特有パラメータの詳細は、Oracle Cloud Infrastructure ドキュメント で確認してください。
Route リソースと HTTPRoute の設定ポイント
Envoy Gateway でのルーティングは、HTTPRoute リソースを通じて定義されます。OCI NLB との整合性を取るためには以下の点に注意が必要です。
TLS 終端設定
TLS 証明書は Envoy Gateway が直接管理するか、OCI NLB で処理させるかを選択します。以下が代表的な設定例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: example-http-route spec: hostnames: - "example.com" rules: - matches: - path: type: PathPrefix value: "/api" backendRefs: - name: backend-service port: 80 |
ポイント: OCI NLB が証明書を管理する場合は、Envoy Gateway の
tls.secretNameフィールドは省略します。
リバースプロキシルールの最適化
以下の設定で、リバースプロキシのパフォーマンスやセキュリティを強化できます。
- rewrite: URL パスの変換
- timeout: タイムアウト時間を明示的に設定
- headers: リクエストヘッダの変更
OCI Network Load Balancer 統合時の注意点
OCI NLB との連携においては、セキュリティグループやヘルスチェックパスの整合性が非常に重要です。
セキュリティグループ設定
- Envoy Gateway と OCI NLB が配置されたサブネットに属するインスタンスのセキュリティグループを確認。
- 下記ポートを開く必要があります:
- Envoy Gateway: TCP 10000〜10240
- OCI NLB: TCP 80, 443 (外部アクセス用)
ヘルスチェックパスの同期
OCI NLB が正常性を判断するためには、Envoy Gateway とのヘルスチェックパスを一致させる必要があります。
| 設定項目 | 値例 | 補足 |
|---|---|---|
healthCheckPath |
/healthz |
Envoy Gateway のエンドポイント |
intervalSeconds |
10 | チェック間隔 |
トラブルシューティング: ヘルスチェックが失敗する場合は、Envoy Gateway のログからエラーコードを確認し、セキュリティグループやネットワーク設定を再検証してください。
GitLab CI/CD との連携設定
CI/CD パイプラインで Envoy Gateway の設定変更を自動化することで、デプロイの一貫性と品質が向上します。
Helm チャートの自動デプロイ
GitLab CI/CD の .gitlab-ci.yml に以下のステップを追加します。
|
1 2 3 4 5 6 7 8 9 |
stages: - deploy deploy_envoy: stage: deploy script: - helm repo add envoy https://envoyproxy.github.io/gateway - helm upgrade --install envoy-gateway envoy/gateway --version v1.6.0 -f values.yaml |
変更履歴のアーカイブ
変更履歴を記録するには、以下のように GitLab の Artifact 機能を使用します。
|
1 2 3 4 5 6 7 |
job: script: - echo "Updated Envoy Gateway settings" > change_log.txt - git add change_log.txt - git commit -m "Update for OCI NLB integration" - git push origin main |
セキュリティ注意:
git push origin mainは 推奨されません。代わりに GitLab API タークンや SSH キーを環境変数で管理し、安全な認証を行うことをお勧めします。
まとめ
本記事では、Kubernetes Gateway API と Envoy Gateway の統合設定手順について以下を解説しました。
- Helm チャートによるインストール: OCI クラウド環境向けのカスタムリソース定義を活用
- GatewayClass リソース: Envoy 特有パラメータと OCI NLB 接続指定の記述例
- HTTPRoute 設定: TLS 終端、ルール最適化のポイントを具体的に提示
- OCI NLB 統合注意点: セキュリティグループ・ヘルスチェックパスの整合性確認
- GitLab CI/CD 連携: 自動デプロイと変更履歴管理の実装例
Kubernetes Gateway API と Envoy Gateway の統合設定は、クラウドネイティブ環境におけるネットワーク構成の鍵です。公式ドキュメントと本記事の手順で検証し、環境に応じた調整を行ってください。