インストール
このガイドでは、本番 HA インストールを順を追って説明します。 前提条件 を完了していることを前提としています。
オンプレミスインストールは DuoKey エンジニアリングと共同で実施されます。以下の コマンドはリファレンスフローの例示です。お客様の配信パッケージには、 お使いの環境向けの正確なマニフェストと Helm values が含まれています。
インストールの概要
フェーズ 1 — クラスターを準備する
名前空間(プロジェクト)を作成し、ベースラインのセキュリティを適用します。
# Application + platform namespaces
oc new-project duokey
oc new-project duokey-observability
# Label for pod anti-affinity / zone spreading is applied via the
# application manifests in later phases.
ストレージとイングレスの準備ができていることを確認します。
oc get storageclass
oc get ingresscontroller -n openshift-ingress-operator
フェーズ 2 — OpenBao をデプロイする(外部 VM 層)
専用の OpenBao VM 上で、Raft 統合ストレージを使用して HA クラスターを初期化し、 その後 アンシールして Kubernetes 認証メソッドを有効にします。
# On each OpenBao node (illustrative)
bao operator init # capture unseal keys + root token securely
bao operator unseal # repeat on each node to form the Raft quorum
# Enable Kubernetes auth so OpenShift pods can authenticate
bao auth enable kubernetes
bao write auth/kubernetes/config \
kubernetes_host="https://<openshift-api>:6443"
アンシールキーとルートトークンを安全なオフラインの場所に保管してください(または HSM で バックアップされた自動アンシールを使用してください)。これらを紛失すると、シークレットエンジンの復旧ができなくなります。
フェーズ 3 — シークレットを接続する(External Secrets Operator)
OperatorHub から ESO をインストールし、SecretStore と
ServiceAccount ベースのロールで OpenBao に接続します。
apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
name: openbao
namespace: duokey
spec:
provider:
vault:
server: "https://openbao.duokey.example.local:8200"
path: "secret"
version: "v2"
auth:
kubernetes:
mountPath: "kubernetes"
role: "duokey"
serviceAccountRef:
name: "duokey"
その後、シークレットは ExternalSecret リソース(アプリケーションマニフェストに同梱)を介して、
オンデマンドで tmpfs バックの Kubernetes Secret として実体化されます。
フェーズ 4 — データ層をデプロイする
PostgreSQL(HA)と Redis をプロビジョニングします。クラスター内で PostgreSQL オペレーターを使用する場合:
oc apply -f postgres-cluster.yaml # CloudNativePG / Patroni Cluster CR
oc apply -f redis-cluster.yaml # sharded Redis StatefulSet
または、OpenBao に保存された接続文字列を介して、アプリケーションを外部 PostgreSQL VM クラスターに向けます(リファレンスアーキテクチャで推奨)。
フェーズ 5 — GitOps をブートストラップする(ArgoCD)
OpenShift GitOps をインストールし、その後 DuoKey アプリケーションリポジトリを登録して、 ArgoCD が以降のすべての変更をリコンサイルするようにします。
oc apply -f argocd-application-duokey.yaml
argocd app sync duokey # initial sync
この時点以降、すべての変更は Git を通じて流れます — ArgoCD はドリフトを検出し、 クラスターを宣言された状態に整合させ続けます。
フェーズ 6 — DuoKey アプリケーションをデプロイする
アプリケーションマニフェストは、Pod アンチアフィニティとイングレスルートを備えた Cockpit フロントエンドと Rust API バックエンドをデプロイします。
# Typically reconciled by ArgoCD; shown here for clarity
oc apply -k manifests/duokey/overlays/on-prem
oc get pods -n duokey -o wide # confirm spread across nodes/zones
フェーズ 7 — オブザーバビリティをデプロイする
oc apply -f victoria-metrics-stack.yaml -n duokey-observability
oc apply -f victoria-logs.yaml -n duokey-observability
oc apply -f grafana.yaml -n duokey-observability
DuoKey の Grafana ダッシュボード(配信パッケージに含まれる)をインポートします。
フェーズ 8 — 検証と初回ログイン
検証チェックリストを実行します。
# All pods Running and Ready
oc get pods -n duokey
# Ingress route resolves and serves TLS
oc get route -n duokey
curl -I https://cockpit.duokey.example.local
# Secrets are being injected (no plaintext on disk)
oc get externalsecret -n duokey
ヘルスチェックリスト
- すべてのアプリケーション Pod が
Runningで、3 つ以上のノード/ゾーンに分散されている - OpenBao がアンシールされ、クラスターから到達可能である
- PostgreSQL のプライマリ + レプリカが正常でレプリケートされている
- ArgoCD がアプリケーションを
Synced/Healthyとして表示している - Grafana ダッシュボードがメトリクスとログを受信している
- Cockpit UI が HTTPS 経由で読み込まれ、認証できる
すべてのチェックに合格したら、環境を運用チームに引き継ぎ、 監視 および バックアップとディザスタリカバリ に進んでください。
初期の OpenBao アンシールキー、ArgoCD 管理者認証情報、および最初の 管理者アカウントを、お客様の組織の特権アクセス Vault に保管してください。