リファレンスアーキテクチャ
DuoKey のオンプレミスデプロイメントは、高可用性(HA)で本番グレードの ハイブリッドアーキテクチャです。コンテナ化された アプリケーションワークロード向けの OpenShift クラスターと、コアデータ、 CI/CD、シークレット管理向けの専用 VM インフラストラクチャを組み合わせ、 すべてを包括的なバックアップおよびリストア 計画で支えています。

適応を前提とした設計
以下のアーキテクチャは、推奨リファレンス設計を説明しています。ストレージ、 イングレス、オブジェクトストアの選択は、お客様の環境(ベアメタル、 VMware、OpenStack、Nutanix)に合わせて適応できます。DuoKey の担当者がお客様に合わせた 調整をお手伝いします。
コアコンポーネント
1. 一元化されたシークレット — 外部 OpenBao
- スタンドアロンの分離 — OpenBao(Vault の Linux Foundation による コミュニティ主導のオープンソースフォーク)は専用の仮想マシン上で 外部に実行され、 Raft コンセンサスストレージエンジンを用いた HA 構成で構成されています。
- セキュアな認証ハンドシェイク — OpenShift クラスターは **External Secrets Operator(ESO)**を実行します。アプリケーション Pod が起動すると、ESO は Pod の ServiceAccount トークンを使用して Kubernetes Auth Method 経由で OpenBao と認証します。
- 動的で非永続的なインジェクション — 認証情報、データベース接続
文字列、キャッシュキーは OpenBao からオンデマンドで取得され、一時的なインメモリ
(
tmpfs)ボリュームにマッピングされたネイティブの Kubernetes Secret プリミティブとして インジェクトされます。生のシークレットがクラスターストレージに書き込まれたり、Git に ハードコードされたりすることは一切ありません。
HSM 統合
最高レベルの保証のために、キー管理は DuoKey 独自の MPC(分散キーシェア、単一障害点なし)または Securosys HSM のいずれかに固定されます。詳細は 前提条件 を参照してください。
2. 継続的デリバリーとソース管理 — GitLab
- ソースおよびレジストリのハブ — コードリポジトリ、CI パイプライン、カスタムベース コンテナイメージは、スタンドアロン VM 上で実行されるセルフホスト型の GitLab インスタンスに配置されます。ポリシーで許可される場合は、これを GitLab の SaaS 版に 置き換えることができます。
3. 永続データベース — PostgreSQL クラスター
- データベースの高可用性 — PostgreSQL は、クラウドネイティブのデータベース オペレーター(CloudNativePG や Patroni など)の下で実行され、 プライマリの読み書きノードと複数のホットスタンバイレプリカを維持します。
4. プラットフォームとアプリケーションのオーケストレーション
- OpenShift コントロールプレーン — 組み込みの OpenShift Operator を活用して、 ライフサイクル、ネットワーク、ルーティング、プラットフォームのアップグレードを 自動的に管理します。
- イングレスとロードバランシング — 組み込みの高可用性 OpenShift Ingress Router がエッジトラフィックを処理し、TLS を終端し、フロントエンド Pod 全体で ロードバランシングを行います。フロントエンドと Rust API バックエンド間の 内部ルーティングには、ネイティブのヘッドレスおよび ClusterIP Kubernetes Service を使用します。
- HA トポロジー — すべてのフロントエンドおよびバックエンド Pod は明示的な Pod アンチアフィニティルールを使用し、ワークロードが異なるワーカー ノードと個別のアベイラビリティゾーン(AZ)に分散されることを保証します。
- GitOps リコンサイル — クラスター内の OpenShift GitOps(ArgoCD) オペレーターが GitLab のブランチを継続的に追跡します。アプリケーションマニフェストが 変更されると、ArgoCD はドリフトを検出し、対象の名前空間に更新をクリーンに プッシュします。
5. 永続データ層
- ステートフルオーケストレーション — データベースとキャッシングエンジンは、 再起動をまたいでネットワーク ID とブロックデバイスのマッピングを保持するために StatefulSet としてデプロイされます。
- ストレージプロバイダー — 永続化は OpenShift Data Foundation (ODF)、またはお使いのプラットフォームに適した CSI ドライバー(例: OpenStack Cinder、 vSphere CSI)によって提供されます。
- キャッシュの高可用性 — Redis は、マスター/レプリカの自動フェイルオーバーを備えた マルチノードの シャード化クラスターとして構成されます。
6. オブザーバビリティ — VictoriaMetrics と VictoriaLogs
- メトリクス — 軽量な
vmagentインスタンスがパフォーマンスエンドポイントをスクレイプし、 分散型の VictoriaMetrics スタック(vmstorage、vminsert、vmselect)にルーティングします。 - ログ — Vector エージェントが
stdout/stderrを収集し、構造化検索のために VictoriaLogs に転送します。 - ダッシュボード — 統合された Grafana が両方をデータソースとして接続し、 運用ダッシュボードを提供します。
リクエストとデータのフロー
ネットワークとアベイラビリティゾーン
- アプリケーション Pod は、個別のアベイラビリティゾーン / 障害ドメインにまたがる 少なくとも 3 つのワーカーノードに分散されます。
- 専用の VM 層(OpenBao、PostgreSQL、GitLab)は分離された ネットワークにセグメント化され、理想的には HSM 用に別個の強化された VLAN を設けます。
- すべてのコンポーネント間トラフィックは転送中に暗号化されます(TLS)。OpenBao には 相互に認証されたチャネルを介してのみ到達できます。
具体的なネットワークおよびファイアウォールの要件については、 前提条件 → ネットワーク を参照してください。