KrakenD

KrakenD Docker イメージとタグ選定ガイド【latest vs 固定版】

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

スポンサードリンク

公式 Docker イメージとタグの選び方

KrakenD が提供する公式イメージ krakend/krakend は Docker Hub のリポジトリで管理されており、latest タグは常に最新ビルドを指します。実務環境では 再現性予期せぬ破壊的変更の回避 が重要になるため、SemVer(例: 2.1.0)で明示したタグを利用することが推奨されます。

latest と特定バージョンの比較

項目 latest タグ 特定バージョンタグ
安定性 新機能やパッチが自動的に反映されるが、突如変更が入るリスクあり ビルド時点のコードに固定でき、本番環境で差分が出にくい
更新頻度 公式 CI が毎日または数日に一度自動プッシュ(※Docker Hub のタグ一覧をご参照) 必要なバージョンだけを選択し、アップデート計画を明示的に立てられる
運用コスト バージョン管理が不要で手軽だがテスト漏れリスク増大 CI/CD パイプラインで固定でき、ロールバックも容易

結論:開発・検証環境では latest が便利ですが、本番デプロイは必ず特定バージョンを指定してください。


イメージサイズと更新頻度の実情(出典付き)

公式イメージは主に以下の 2 種類が提供されています。サイズは執筆時点(2024 年 11 月)で測定した概算値です。リポジトリやベース OS のバージョン更新に伴い変動する可能性があるため、常に Docker Hub の 「Layers」 タブか docker manifest inspect コマンドで最新情報を確認してください。

イメージ ベース OS 想定サイズ*
krakend/krakend:2.1.0-alpine Alpine Linux 3.20 30 MB
krakend/krakend:2.1.0-bullseye Debian Bullseye 120 MB

*サイズは compressed のレイヤー合計で、実行時に展開されると多少増加します。

注意:公式イメージのサイズや更新頻度はリポジトリ管理者が随時変更できるため、最新のタグ情報は Docker Hub(Tags ページ)で必ず確認してください。


ローカル設定ファイルの作成とコンテナへのボリュームマウント

KrakenD の挙動は 設定ファイル(JSON または YAML)一つ で決まります。本節ではローカルに設定ファイルを用意し、Docker コンテナへ安全にマウントする手順を解説します。

設定フォーマットの概要

以下は最小構成の JSON と YAML のサンプルです。どちらでも krakend check が成功すれば問題ありません。

ディレクトリ構成例

config/ ディレクトリをそのままコンテナの /etc/krakend/ にマウントすることで、ローカルでファイルを編集すれば即座に反映できます。

Docker Run でのマウント手順

  • -v オプションでローカルの config ディレクトリをコンテナ内部にバインドマウント
  • 環境変数 KRKEND_CONFIG が設定ファイルへのパスを指示

ポイント:設定ファイル変更後はコンテナ再起動だけで新設定が有効になります。


Docker Run による基本起動とヘルスチェック

本節では最小構成で KrakenD を立ち上げ、Docker の HEALTHCHECK 機能を利用した稼働監視の実装方法を示します。ヘルスチェック用エンドポイントはバージョンによって変更されることがあるため、常に公式ドキュメント(Healthcheck セクション)で最新パスを確認してください。

ポート公開・環境変数設定例

  • --restart unless-stopped により、コンテナが異常終了した際に自動復旧します。
  • 必要に応じてホスト側ポートを変更(例:-p 8081:8080)すれば競合回避できます。

ヘルスチェックの実装例

Dockerfile に直接書くか、docker run --health-cmd オプションで指定します。公式が推奨する krakend check を利用し、設定ファイルの妥当性を検証します。

ヘルスチェックが失敗するとコンテナは unhealthy 状態となり、Swarm や Kubernetes の再起動ポリシーが自動でトリガーされます。

重要:エンドポイントパス(例 /__health)はバージョンごとに変わることがあります。最新情報は必ず公式ドキュメントで確認してください。


docker‑compose で本格的にデプロイする手順

複数サービスや永続ボリュームが必要になるケースでは docker‑compose が便利です。本節では、前述の設定ファイルとヘルスチェックを組み込んだ docker-compose.yml の最小構成を示します。

docker‑compose.yml の主要セクション

  • services:本番環境ではバックエンドモックや DB コンテナを同一ファイルに追加可能です。
  • volumes:ローカルの config/ ディレクトリが永続化され、編集即反映できます。
  • healthcheckdocker compose up 後も自動で krakend check が走り、コンテナの状態を監視します。

起動・確認コマンド

ベストプラクティスdocker compose config で最終的な設定を検証し、CI パイプラインでも同様に docker-compose -f <file> config --quiet を走らせることで構文ミスを防止します。


カスタムプラグイン・ミドルウェアの Dockerfile 拡張

KrakenD は Go 製プラグイン(.so)をロードでき、認証やロギングなど独自機能を追加できます。公式イメージに組み込む際は マルチステージビルド を用いて最終イメージのサイズを抑えることが推奨されます。

プラグインビルド用 Dockerfile の例

  • マルチステージ により最終イメージは 30 MB 前後に抑えられます。
  • KRKEND_PLUGIN_DIR が設定されていれば、krakend run 時に自動でプラグインがロードされます。

本番環境でのスケーリング戦略(概要)

プラットフォーム 推奨ポイント
Docker Swarm docker service create --replicas 3 ... で水平スケール。内部 DNS と overlay network が自動ロードバランシングを提供。
Kubernetes Deployment + Service に加え、livenessProbe/readinessProbekrakend check を設定し、Pod のヘルス判定を正確に行う。
シークレット管理 API キーや証明書は Kubernetes Secret / Swarm secret としてマウントし、イメージ内に平文を書かない。

注記:プラグインが glibc に依存する場合は Alpine ではなく Debian 系ベース(krakend/krakend:2.1.0-bullseye)を選択してください。


デプロイ後の動作確認とトラブルシューティング

デプロイが完了したら、エンドポイントの挙動とログ出力を必ず確認し、想定通りにリクエストが転送されているか検証します。

エンドポイントテスト例(curl)

  • 200 OKContent-Type: application/json が返れば稼働中です。
  • jq が無い環境では生の出力を目視で確認してください。

よくあるエラーと対処法

質問 主な原因 推奨解決策
ポート競合が起きる ホスト側で 8080 が別プロセスに使用中 docker run -p 8081:8080 に変更、または該当プロセスを停止
設定ファイルのパースエラー (krakend check が失敗) JSON/YAML の構文ミスや必須フィールド欠如 python -m json.tool < file.json で整形確認、ローカルでも krakend check -c … を実行
プラグインロード失敗 .so が見つからない・ABI 不一致 Dockerfile の COPY --from=builder /out/*.so /etc/krakend/plugins/ パスを再確認、ldd で依存関係をチェック
コンテナが Unhealthy ヘルスチェックコマンドが失敗 docker logs <container> でエラーログ取得、設定パスや権限の誤りを修正

デバッグ手順docker inspect --format='{{json .State.Health}}' <container> でヘルスステータスと直近のログが確認できます。Kubernetes 環境では kubectl describe pod <pod>kubectl logs <pod> が同等です。


次のステップ

  1. 本ガイドに沿って サンプルリポジトリ(例:github.com/yourorg/krakend-sample)をクローンし、ローカルで動作確認。
  2. CI/CD パイプラインに docker compose build && docker compose up -dヘルスチェック を組み込み、PR ごとに自動テストを走らせる。
  3. 実運用環境では 特定バージョンタグ のロック、脆弱性スキャン(Trivy 等)シークレット管理 を必ず実装し、セキュリティ基準に合致させる。

以上の手順をすべて実行したら、独自の KrakenD API ゲートウェイが本番レベルで稼働できるはずです。ぜひ体験レポートや改善点をご共有ください!

スポンサードリンク

-KrakenD