التثبيت
يرشدك هذا الدليل عبر تثبيت إنتاجي عالي التوفر (HA). يفترض أنك أكملت المتطلبات المسبقة.
تُنفَّذ عمليات التثبيت المحلية بالتعاون مع فريق هندسة DuoKey. الأوامر أدناه توضيحية للتدفق المرجعي؛ تتضمن حزمة التسليم الخاصة بك البيانات الدقيقة وقيم Helm لبيئتك.
نظرة عامة على التثبيت
المرحلة 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 (طبقة الأجهزة الافتراضية الخارجية)
على أجهزة OpenBao الافتراضية المخصصة، قم بتهيئة مجموعة HA بتخزين Raft المدمج، ثم ألغِ الختم وفعّل طريقة مصادقة 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 — توصيل الأسرار (مشغّل الأسرار الخارجية)
ثبّت ESO من OperatorHub، ثم اربطه بـ OpenBao باستخدام SecretStore ودور قائم على
ServiceAccount:
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"
تُجسَّد الأسرار بعد ذلك عند الطلب في Kubernetes Secrets مدعومة بـ tmpfs عبر موارد
ExternalSecret (المشحونة مع بيانات التطبيق).
المرحلة 4 — نشر طبقة البيانات
وفّر PostgreSQL (HA) وRedis. باستخدام مشغّل PostgreSQL داخل المجموعة:
oc apply -f postgres-cluster.yaml # CloudNativePG / Patroni Cluster CR
oc apply -f redis-cluster.yaml # sharded Redis StatefulSet
أو وجّه التطبيق إلى مجموعة PostgreSQL الافتراضية الخارجية عبر سلسلة الاتصال المخزّنة في OpenBao (موصى بها للبنية المرجعية).
المرحلة 5 — تمهيد GitOps (ArgoCD)
ثبّت OpenShift GitOps، ثم سجّل مستودع تطبيق DuoKey بحيث يطابق ArgoCD جميع التغييرات اللاحقة:
oc apply -f argocd-application-duokey.yaml
argocd app sync duokey # initial sync
من هذه النقطة فصاعدًا، تتدفق جميع التغييرات عبر Git — يكتشف ArgoCD الانحراف ويبقي المجموعة متوائمة مع الحالة المعلنة.
المرحلة 6 — نشر تطبيق DuoKey
تنشر بيانات التطبيق الواجهة الأمامية لـ 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
قائمة التحقق من الصحة
- جميع حاويات التطبيق
Runningوموزّعة عبر ≥ 3 عقد/مناطق - OpenBao مفكوك الختم ويمكن الوصول إليه من المجموعة
- الأساسي + النسخ المتماثلة لـ PostgreSQL سليمة وتنسخ
- يعرض ArgoCD التطبيق كـ
Synced/Healthy - تتلقى لوحات معلومات Grafana المقاييس والسجلات
- تُحمّل واجهة Cockpit عبر HTTPS ويمكنك المصادقة
عندما تنجح جميع الفحوصات، سلّم البيئة إلى فريق العمليات لديك وتابع إلى المراقبة و النسخ الاحتياطي والتعافي من الكوارث.
احتفظ بمفاتيح إلغاء ختم OpenBao الأولية، وبيانات اعتماد مسؤول ArgoCD، وأول حساب مسؤول مخزّنة في خزنة الوصول المميز لمؤسستك.