Contents
Kong Gateway Kubernetes 連携 手順: HelmとGitOpsによる実践的なデプロイフロー
Kubernetes環境でのAPIゲートウェイの運用を効率化するためには、Kong Gatewayとの連携が不可欠です。本記事では、HelmチャートとGitOpsツール(Argo CD)を活用した最新のデプロイ手順を解説します。Kubernetes 1.24以上の環境における安定性と自動化の両立を目指した手法を紹介し、実践的な導入を支援します。
Kong Gatewayの役割とKubernetesとのシナジー
Kong GatewayはAPI管理やセキュリティポリシーの設定に特化したミドルウェアであり、Kubernetes環境ではIngress Controllerとしての活用が可能です。これにより、サービスの分散・ルーティングの柔軟性が大幅に向上します。
Kubernetesとの連携を成功させるためには、以下のような基本的な理解が必要です。
- Kong Gatewayの主な機能: APIリバースプロキシ、認証・認可(OAuth, JWTなど)、ロードバランシング、モニタリングとメトリクス収集
- Kubernetesとの連携の利点: サービスデプロイの自動化とAPIゲートウェイ管理の一元化
環境準備と前提条件
Kong GatewayをKubernetes環境に導入する前に、最新の環境構築が必須です。特にKubernetes 1.24以上のバージョンでの対応が必要であり、以下のような確認手順を行いましょう。
Kubernetesクラスターのバージョン確認
|
1 2 |
kubectl version --short |
出力結果にKubernetes Version: v1.24以上が記載されている必要があります。旧バージョン(例:v1.23以下)では、今回の手順は動作しません。
Helm v3の導入
HelmはKubernetesリソースをテンプレート化してデプロイするためのツールです。v3以降が必須となります。
-
macOSユーザー
bash
brew install helm -
Linuxユーザー
bash
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
インストール後、helm versionでバージョンを確認し、v3以上が表示されていることを確認してください。
HelmチャートによるKong Gatewayのデプロイ
Helmチャートを使用することで、Kong Gatewayのインストールとカスタマイズが簡易かつ効率的に行えます。ここでは公式リポジトリの利用とYAMLテンプレートの実装例を解説します。
リポジトリの追加
|
1 2 |
helm repo add kong https://charts.konghq.com |
このコマンドで、Kong Gateway用の公式Helmリポジトリを追加します。リポジトリの一覧確認はhelm repo listで可能です。
カスタムYAMLテンプレートの実装例
以下に、カスタマイズ可能なYAMLファイルの構成を示します。
|
1 2 3 4 5 6 7 8 9 10 11 |
apiVersion: konghq.com/v1beta1 kind: KongIngress metadata: name: example-ingress spec: hosts: - host: "example.com" paths: - path: "/api" stripPath: true |
このYAMLファイルは、Kubernetes Ingressリソースと連携させたルーティング設定の一例です。カスタマイズ時にはサービス名やパス、セキュリティポリシーの追加が重要となります。
Kubernetes Ingress Resourceとの連携
Kong Gatewayは、Kubernetes Ingressリソースをベースにルーティングを行う仕組みとなっています。ここではIngress定義ファイルとルーティング設定の手順について解説します。
Ingress定義ファイルの構成
以下が基本的なIngressリソースの例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - http: paths: - path: "/api" pathType: Prefix backend: service: name: backend-service port: number: 80 |
このファイルは、/apiにアクセスした際のバックエンドサービスへのルーティング設定になります。Kong Gatewayでは、このIngressリソースをもとにルールが自動生成されます。
GitOpsによる自動デプロイ(Argo CD統合)
GitOpsは、コードベースでクラスターの状態を管理する手法です。Argo CDを用いたKong Gatewayの設定を含めた自動デプロイ手順を解説します。
Argo CDのインストール
以下のコマンドで、Argo CDをHelm経由でインストールします。
|
1 2 3 |
helm repo add argocd https://argoproj.github.io/argo-helm helm install argocd argocd/argo-cd -n argocd |
インストール後、kubectl port-forward svc/argocd-server -n argocd 8080:80でWeb UIにアクセスできます。
アプリケーションリポジトリの構成
以下がArgo CD用のアプリケーションリポジトリのフォルダ構造例です。
|
1 2 3 4 5 6 7 |
├── kong │ ├── ingress.yaml │ └── values.yaml ├── argocd │ └── Application.yaml └── README.md |
Application.yamlには、アプリケーションのリポジトリとクラスター情報が記載されます。Kong Gateway設定を含めたリソースファイルをこのディレクトリに配置し、GitPushで更新を自動反映させます。
デプロイ後の検証とトラブルシューティング
デプロイ後は、サービスの動作確認とログ監視が不可欠です。ここでは簡単なアクセステストと問題解決のヒントをお伝えします。
サービスのアクセス確認
以下のようにcurlコマンドでアクセスをテストします。
|
1 2 |
curl -v http://example.com/api |
HTTPステータスコードやレスポンスボディが正しく返されるかを確認してください。エラーが発生する場合は、Ingressリソースの定義とKong Gateway設定を再確認しましょう。
ログ監視のベストプラクティス
Kubernetesクラスターでは以下コマンドでログを表示できます。
|
1 2 |
kubectl logs -l app=kong-gateway |
また、Kong Gateway自体のログは/usr/local/kong/logs/access.logやerror.logに保存されているため、リアルタイムモニタリングツールとの連携も検討してください。
まとめ
本記事では、KubernetesとKong Gatewayの統合手順を、以下のような具体的な内容で解説しました。読者の皆様が、Kubernetes環境で安定したAPIゲートウェイ運用を実現できるよう、手順を丁寧にご説明しました。
- Helm v3経由でのインストール方法
- Ingressリソースとの連携設定
- GitOpsツール(Argo CD)による自動デプロイの実装例
| 項目 | 値 | 補足 |
|---|---|---|
| 速度 | 30 tok/s | RTX 5090 基準 |
| VRAM | 17 GB | Q6_K 量子化時 |
| コスト | 無料 | ローカル運用 |
重要: 本記事の内容は、Kubernetes 1.24以上での動作を前提としています。旧バージョンのクラスターでは、一部機能が使用できない可能性があります。