デプロイメント
Cockpit v2 の出荷・実行形態 — 単一の自己完結型デプロイメント、コンテナ、マイグレーション、ヘルスプローブ、高可用性、オブザーバビリティ。
単一のデプロイ単位
Cockpit v2 は単一の自己完結型アーティファクトとしてデプロイされます。一つのサービスプロセスが REST API、KMIP リスナー、バックグラウンドジョブをまとめて提供します。アプリケーションとそのランタイムデータのみを含む、最小限の非 root コンテナイメージとして出荷されます。
REST API
UI、PKCS#11 プロバイダー、外部クライアントが利用する管理・暗号 API 全体。
KMIP リスナー
KMIP エンドポイントは REST API と同一プロセス内で稼働 — 別途デプロイやスケールする必要のあるサービスはありません。
バックグラウンドジョブ
スケジュールされたタスクや遅延処理(アウトボックス配信、メンテナンスタスク)は同じバイナリ内で実行されます。
コンテナ
ローカル環境および開発用に Docker Compose スタックが提供されており、本番環境はKubernetes上で稼働します。
| 環境 | 形態 |
|---|---|
| ローカル/開発 | Docker Compose スタック:API + UI + HTTPS イングレス + PostgreSQL + Redis。 |
| 本番 | 同一の最小限・非 root イメージを使用する Kubernetes。 |
マイグレーション
スキーマ変更は起動時に自動的に適用されます。Cockpit v2 は統合済みの冪等な init スクリプトと番号付きの増分マイグレーションを併用します。適用済みのマイグレーションはデータベースで追跡されるため、各バージョンは一度だけ適用され、起動処理を繰り返しても安全です。
マイグレーションはサービス起動時に実行されます。init スクリプトは冪等であり、増分マイグレーションはデータベースで追跡されるため、新しいノードを立ち上げる場合も新バージョンをロールフォワードする場合も、別途マイグレーション手順は不要です。
高可用性とレジリエンス
Cockpit v2 は、L7/TLS ロードバランサーの背後でステートレスな API ノードとして動作するよう設計されています。すべての認証状態は JWT に保持されるため、どのノードもあらゆるリクエストを処理でき、ノードは自由に追加・削除できます。
ステートレス API ノード
すべての認証状態は JWT に含まれ、ノードは L7/TLS ロードバランサーの背後で水平方向にスケールします。
コネクションプーリング
データベースのコネクションプーリングにより、負荷下でもデータベースアクセスを一定範囲内かつ効率的に保ちます。
Vault ごとのサーキットブレーカー
各 Vault バックエンドは専用のサーキットブレーカーで保護され、障害を封じ込め分離します。
ジッター付きリトライ
一時的な障害はジッター付きバックオフでリトライされ、同期的なリトライストームを回避します。
グレースフルシャットダウン
ノードの停止やローリング時、処理中のリクエストは正常にドレインされます。
厳密に一度の副作用
トランザクショナルなイベントアウトボックスと冪等キーにより、リトライ間でも副作用の一貫性を保ちます。
キャッシュフォールバック
読み取りは Redis からデータベースへとフォールバックするため、キャッシュ障害時も完全には失敗せず性能が低下するだけで済みます。
データ層の高可用性
本番環境では、レプリカを伴う PostgreSQL プライマリと高可用性の Redis を推奨します。
本番環境では、レプリカを伴う PostgreSQL プライマリと高可用性 Redis デプロイメントを稼働させてください。API 層はステートレスのままなので、レジリエンスはデータ層とロードバランサーに集約されます。
ヘルスプローブ
Cockpit v2 は、Kubernetes がライブネスとレディネスを制御するための二つのエンドポイントを公開します。
| プローブ | エンドポイント | 目的 |
|---|---|---|
| ライブネス | /health/live | プロセスが生存していることを通知します。失敗すると再起動がトリガーされます。 |
| レディネス | /health/ready | ノードがトラフィックを受け付ける準備ができていることを通知します。失敗するとロードバランサーから除外されます。 |
オブザーバビリティ
Cockpit v2 は構造化された JSON ログを出力し、すべてのエントリにリクエスト、テナント、ユーザーのコンテキストを含めます。メトリクスとアラートは標準的な運用ツールと統合します。
構造化ログ
リクエスト/テナント/ユーザーのコンテキストで補強された構造化 JSON ログ。
メトリクス
ランタイムおよびリクエストメトリクスを取得するための Prometheus メトリクスエンドポイント。
SIEM 転送
Splunk、Azure Sentinel、Elastic へのログ転送。
アラート
運用イベントおよびセキュリティイベントに対する Webhook およびメールによるアラート。
設定
Cockpit v2 は完全に環境変数を通じて設定されます。これにより、設定は明示的でコンテナネイティブなものとなり、Kubernetes のシークレットや ConfigMap を通じた管理が容易になります。
# Cockpit v2 reads all configuration from the environment.
DATABASE_URL=postgres://...
REDIS_URL=redis://...
# See the full reference for the complete set of variables.完全な環境変数リファレンスと本番用 .env の例については、Cockpit v2 設定リファレンスを参照してください。
Cockpit v2 について示されるスループット、レイテンシ、フットプリントの数値は目安となる目標値であり、ベンチマークによる保証値ではありません。キャパシティプランニングに利用する前に、自身の環境で検証してください。