Getting Started(kind / Kubernetes)
Docker Compose の代わりに kind(Kubernetes IN Docker) を使って idp-server をローカルで起動する手順です。
HPA(水平Pod自動スケーリング)や Readiness/Liveness Probe など、Kubernetes 固有の機能をローカルで検証できます。
Docker Compose との比較
| 確認項目 | docker compose | kind |
|---|---|---|
| アプリの起動確認 | docker compose up | bash k8s/local/up-app-only.sh |
| HPA の動作確認 | - | Pod 自動スケーリング |
| Readiness/Liveness Probe | - | Pod ヘルスチェック |
| Pod 分散・障害復旧 | - | Deployment による自動復旧 |
| FIDO2/MFA(ブラウザUI) | OK | OK |
構成
idp-server のみ kind クラスターにデプロイし、DB/Redis/nginx 等は Docker Compose で動かすハイ ブリッド構成です。
┌─── ホストマシン ──────────────────────────────────────────────┐
│ │
│ ブラウザ │
│ │ │
│ ▼ │
│ ┌─ Docker Compose (docker-compose-kind.yaml) ─────────────┐ │
│ │ │ │
│ │ nginx (:443) ──────────────────┐ │ │
│ │ app-view (:3000) │ │ │
│ │ sample-web (:3010) │ │ │
│ │ mockoon (:4000) │ │ │
│ │ ▼ │ │
│ │ ┌─ kind cluster (idp-local) ──────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ NodePort :30080 → host :8080 │ │ │
│ │ │ │ │ │
│ │ │ ┌─ idp-server Pod 1 ─┐ ┌─ idp-server Pod 2 ─┐│ │ │
│ │ │ │ :8080 │ │ :8080 ││ │ │
│ │ │ └─────────────────────┘ └─────────────────────┘│ │ │
│ │ │ │ │ │
│ │ │ HPA: CPU 70%, min=1, max=3 │ │ │
│ │ │ Metrics Server │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ │ host.docker.internal │ │
│ │ ▼ │ │
│ │ postgres-primary (:5432) │ │
│ │ postgres-replica (:5433) │ │
│ │ redis (:6379) │ │
│ └──────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────── ───┘
前提条件
Docker Compose 版の Getting Started の「前提条件」「サブドメイン設定」「環境変数の設定」が完了していること。
追加で必要なツール:
| ツール | インストール |
|---|---|
| kind | brew install kind |
| kubectl | brew install kubectl |
| python3 | macOS 標準搭載(status.sh の JSON 解析で使用) |
ファイル構成
k8s/local/
├── up-app-only.sh # 起動(1コマンド)
├── down-app-only.sh # 停止
├── status.sh # 状態確認
├── kind-config.yaml # kind クラスター設定
├── nginx-kind.conf # nginx 設定(→ kind NodePort)
└── manifests/
├── namespace.yaml # idp namespace
└── idp-server.yaml # Deployment + Service(NodePort) + HPA
docker-compose-kind.yaml # DB/Redis/nginx/UI(Docker Compose側)
クイックスタート
起動
bash k8s/local/up-app-only.sh
このスクリプトが以下をすべて自動で行います:
| Step | 処理 | 詳細 |
|---|---|---|
| 1 | 前提条件チェック | kind, kubectl, docker, .env, TLS証明書 |
| 2 | Docker Compose 起動 | docker-compose-kind.yaml で DB/Redis/nginx/UI を起動 |
| 3 | .env 読み込み | 環境変数を source |
| 4 | kind クラスター作成 | 既存ならスキップ、kubeconfig を export |
| 5 | idp-server イメージビルド | docker build → kind load docker-image |
| 6 | Kubernetes リソース作成 | Secret(.env から動的生成)、ConfigMap(.env + kind用DB/Redis接続先) |
| 7 | idp-server デプロイ | Deployment + NodePort Service + HPA |
| 8 | hostAliases 設定 | Pod 内から api.local.test 等を名前解決するための /etc/hosts 設定 |
| 9 | Metrics Server | HPA 用の CPU/メモリメトリクス収集 |
状態確認
bash k8s/local/status.sh
ヘルスチェック
# NodePort 直接
curl http://localhost:8080/actuator/health
# nginx 経由
curl -k https://api.local.test/actuator/health
Kubernetes リソース確認
# Pod 確認
kubectl get pods -n idp
# HPA 確認
kubectl get hpa -n idp
# ログ確認
kubectl logs -n idp -l app=idp-server -f
# メトリクス確認(起動後 1-2 分で利用可能)
kubectl top pods -n idp
停止
bash k8s/local/down-app-only.sh