メインコンテンツまでスキップ

リファレンスアーキテクチャ

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

DuoKey オンプレミス OpenShift リファレンスアーキテクチャ

適応を前提とした設計

以下のアーキテクチャは、推奨リファレンス設計を説明しています。ストレージ、 イングレス、オブジェクトストアの選択は、お客様の環境(ベアメタル、 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 には 相互に認証されたチャネルを介してのみ到達できます。

具体的なネットワークおよびファイアウォールの要件については、 前提条件 → ネットワーク を参照してください。