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

インストール

このガイドでは、本番 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 に保管してください。