KongGateway

Kong Gateway の K8s デプロイ完全ガイド:前提・Helm・マニフェスト・セキュリティ

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

前提条件と環境要件

Kong Gateway を Kubernetes に導入するにあたって、まずはクラスタのバージョンや利用ツールが互換性を満たしているか確認する必要があります。適切なバージョンでないと CRD のロードや API 呼び出しが失敗し、デプロイ全体が止まるリスクがあります。本セクションでは、必須となるコンポーネントとチェックポイントを整理します。

推奨されるツールチェーン

以下は 2026 年時点で安定して利用できる組み合わせです。実際に構築する環境のリリースノートを確認し、同等かそれ以上のバージョンが提供されていることを目安にしてください。

ツール 推奨バージョン (例) 確認ポイント
Kubernetes 本体 1.27 系以上(公式ドキュメントで networking.k8s.io/v1 が利用可能か) kubectl api-versionsnetworking.k8s.io/v1 が含まれる
kubectl 1.27 系以上 kubectl version --short で確認
Helm 3.12 系以上 helm version --short で確認

ポイント:Kubernetes のマイナーバージョンは半年ごとにリリースされます。新しいバージョンが登場したら、公式チャートの対応状況を必ずチェックしましょう。

環境チェックコマンド例


公式 Helm チャートでのデプロイ手順

Helm を利用すると、Kong のインストール・アップグレードが一貫した操作で完了します。このセクションでは、リポジトリ追加からカスタム values.yaml 作成までの流れを具体的に示し、設定項目の意味とベストプラクティスも併せて解説します。

values.yaml の主要設定項目

以下の表は、実運用で頻繁に調整されるパラメータです。デフォルト値はチャート側で定義されていますが、要件に合わせて上書きしてください。

項目 用途 典型的な設定例
replicaCount Kong Pod の複製数。可用性とスループットを左右します。 3(本番)
service.type Service の公開方式。外部から直接アクセスさせるか内部限定にするか選択します。 "LoadBalancer"(外部向け)
env.kong_database DB-less と PostgreSQL モードの切り替えフラグです。 "off"(DB-less) / "postgres"
ingressController.enabled Kong Ingress Controller の有効化スイッチです。 true
env.kong_admin_listen Admin API のリッスンアドレスとポートです。セキュリティ要件に合わせて変更します。 "127.0.0.1:8001"(本番)

注記values.yaml はチャートリポジトリにサンプルが同梱されています。実際に上書きする項目だけを抜粋して作成すると管理が楽です。

DB-less モード用 values.yaml の例

PostgreSQL モード用 values.yaml の例

DB-less と PostgreSQL の比較

項目 DB-less PostgreSQL
導入コスト 外部 DB が不要なため最小限で済む データベースクラスターの構築・管理が必要
スケーラビリティ ConfigMap 更新で即時反映、水平スケールは Pod 増加で対応 DB のレプリカを増やすことで大規模トラフィックに耐える
永続性 ConfigMap のサイズ制限(1 MiB 前後)あり 永続ストレージ上のデータベースに完全保存
運用負荷 設定ファイル管理だけで済む バックアップ・監視・パラメータチューニングが必須
推奨シーン PoC、開発環境、トラフィックが数百 req/s 以下の小規模サービス 本番環境、大規模マイクロサービス構成、長期運用が前提

まとめ:短期間の検証や軽量 API ゲートウェイとしては DB-less が手軽です。一方で高可用性・データ永続性が求められる本番環境では PostgreSQL モードを選択してください。

Helm によるインストールコマンド

  1. 公式リポジトリの追加
    bash
    helm repo add kong https://charts.konghq.com
    helm repo update

  2. カスタム values ファイル(例:kong-values.yaml)を作成
    (上記の DB-less か PostgreSQL 用テンプレートをベースに編集)

  3. インストール実行
    bash
    helm install kong kong/kong -n kong --create-namespace -f kong-values.yaml

  4. リリース状態の確認
    bash
    helm status kong -n kong

ポイントhelm install 時に --wait --timeout 5m を付与すると、Pod が正常起動するまでコマンドがブロックされ、スクリプトでの自動化が容易になります。


マニフェスト方式によるデプロイ

Helm を使わずに Kubernetes のネイティブリソースだけで Kong を構築したい場合は、CRD(Custom Resource Definition)を直接適用します。この方法は CI/CD パイプラインへの組み込みがシンプルになるほか、細かなリソース制御が可能です。

手順概要

以下の流れに沿ってマニフェストを作成・適用してください。各ステップで必要となる設定例も併せて示します。

  1. CRD の登録
    Kong が提供する Ingress 用 CRD をクラスタに追加します。
  2. Namespace と ServiceAccount、RBAC の定義
  3. ConfigMap(DB-less)または Secret(PostgreSQL)を作成
  4. Kong Deployment と Service のマニフェストを書き込む
  5. Ingress Controller 用 Deployment を用意
  6. 全リソースを順次 kubectl apply で適用

CRD 登録コマンド

注意:CRD のバージョンは Kong のリリースに合わせて更新してください。古い CRD が残っていると apiVersion の不一致エラーが発生します。

ConfigMap と Secret の作成例

DB-less 用 ConfigMap(設定を宣言的に管理)

PostgreSQL 用 Secret(機密情報を暗号化)

Kong Deployment のポイント

  • envFrom を使って ConfigMap/Secret をマウントすると、環境変数の管理が楽になります。
  • Pod のリソース要求 (resources.requests) と上限 (resources.limits) は必ず設定し、ノードの過負荷を防止してください。

まとめ:CRD 登録 → RBAC/Namespace 設定 → ConfigMap/Secret 作成 → Deployment 適用 の順に実行すれば、Helm に依存しないシンプルな Kong 環境が構築できます。


デプロイ後の検証・運用フロー

Kong が正常に稼働したかどうかは、Pod の状態、Admin API の応答、Ingress 経由でのリクエスト成功率など複数観点から確認します。ここでは手動チェックと自動化の両方を紹介し、障害時の切り分け手順もまとめます。

基本的な検証項目

手順 コマンド例 期待される結果
Pod の状態確認 kubectl get pods -n kong 全て RunningREADY が 1/1 以上
Admin API アクセス curl http://<LB_IP>:8001/status JSON で Kong のバージョン・ノード情報が返る
Ingress 動作テスト curl -H "Host: example.com" http://<LB_IP>/example バックエンド(例:http://example.com)からのレスポンスが取得できる
メトリクス確認(Prometheus が有効な場合) kubectl port-forward svc/kong-prometheus 9090:9090 -n kong → ブラウザで /metrics kong_http_requests_total 等の指標が収集されている

自動化スクリプト例(簡易ヘルスチェック)

ポイント:CI パイプラインの post-deploy ステップで上記スクリプトを走らせれば、デプロイ失敗時に即座にロールバックが可能です。

Helm のアップグレードとロールバック

操作 コマンド例 補足
アップグレード helm upgrade kong kong/kong -n kong -f kong-values.yaml --reuse-values --wait を付けると完了まで待機します
リビジョン確認 helm history kong -n kong 各リリースの状態が一覧化されます
ロールバック helm rollback kong <revision> -n kong 失敗したバージョンへ即座に復帰できます

トラブルシューティングの主なシナリオ

症状 想定原因 推奨対処法
Helm リリースが失敗する (Release "kong" failed) values.yaml の構文エラー、CRD が未登録 helm template でテンプレートをローカル検証し、kubectl get crd で CRD 存在確認
Pod が CrashLoopBackOff 環境変数不足、DB 接続情報誤り、リソース上限超過 kubectl logs <pod> -n kong でエラーログを取得し、Secret/ConfigMap を再チェック
Admin API がタイムアウト Service が ClusterIP のままで外部からアクセス不可 Service タイプを LoadBalancer または Ingress 経由に変更し、ネットワークポリシーを確認

まとめ:Pod と Admin API の正常性を自動テストで確保した上で、Helm のバージョン管理機能(upgrade / rollback)を活用すれば、運用中の障害対応が格段にスピーディになります。


セキュリティベストプラクティスと次のアクション

本番環境で Kong を安全に稼働させるためには、TLS の自動取得・更新、最小権限の RBAC 設定、ネットワークレベルでの通信制御が不可欠です。この章では、実装例と導入手順を具体的に示します。

TLS 証明書の自動管理

cert‑manager と連携すれば、Ingress に tls: セクションとアノテーションを追加するだけで Let’s Encrypt の証明書が自動発行・更新されます。以下は最小構成例です。

導入手順
1. cert-manager の公式マニフェストを適用(CRD 登録含む)
2. ClusterIssuer(Let’s Encrypt 用)を作成
3. 上記 Ingress をデプロイし、Secret が自動生成されることを確認

RBAC ポリシーの最小化

Kong の管理に必要な権限だけを付与することで、万が一コンテナが侵害された場合でも被害範囲を限定できます。

ポイントClusterRole は使用せず、必ず Namespace スコープで限定してください。

NetworkPolicy による通信制限

Kong Pod への直接アクセスを防ぎ、Ingress Controller 経由だけを許可することで外部からの不正リクエストを遮断します。

補足:クラウドプロバイダーが提供する L7 ロードバランサーと併用する場合は、ロードバランサーからのトラフィックも from に追加してください。

次に取るべきアクション

  1. cert‑manager のデプロイ
    bash
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml
  2. ClusterIssuer(Let’s Encrypt)を作成
    (メールアドレスや環境に合わせて設定)
  3. 最小権限の Role と RoleBinding を適用
  4. NetworkPolicy で外部からの直接アクセスを遮断

これらを順次実装すれば、Kong Gateway が TLS による暗号化と RBAC・ネットワークレベルの防御で保護された状態になります。

最終まとめ:Kubernetes 上に Kong を構築する際は、まず互換性のあるツールチェーンを整備し、Helm かマニフェスト方式のどちらかでデプロイします。デプロイ後は自動化テストと Helm のリビジョン管理で運用安定性を確保し、TLS・RBAC・NetworkPolicy によるセキュリティ対策を施すことで、本番環境でも安全に API ゲートウェイとして活用できます。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-KongGateway