كيف يستخدم Agent-Lab خدمة Vault
يستخدم Agent-Lab HashiCorp Vault لإدارة
الأسرار بشكل آمن: تُحفظ مفاتيح API وبيانات اعتماد قواعد البيانات وغيرها من القيم الحساسة
في Vault، وليس في قاعدة البيانات أو ملفات البيئة. وأثناء بدء تشغيل التطبيق
يتصل ConfigSource النشط بـ
Vault ويحمّل حمولة الإعدادات؛ وتخزّن التكاملات
المراجع في قاعدة البيانات بينما تُجلب القيم الحساسة من Vault عند
الطلب.
إعداد Vault
للتطوير المحلي، تأتي حزم Compose مع خادم Vault بإعدادات
تطوير (الواجهة على http://localhost:8200، ورمز تسجيل الدخول
dev-only-token). راجع تشغيل التطبيق.
لبيئة الإنتاج، جهّز النسخة باستخدام وحدة Terraform
terraform/08_vault-instance/ من دليل النشر — بما في ذلك
تسلسل init + unseal:
kubectl --namespace vault exec vault-0 -- vault operator init \
-key-shares=1 \
-key-threshold=1 \
-format=json > cluster-keys.json
export VAULT_UNSEAL_KEY=$(jq -r ".unseal_keys_b64[]" cluster-keys.json)
kubectl --namespace vault exec vault-0 -- vault operator unseal $VAULT_UNSEAL_KEYتجهيز حمولة السر
يقرأ VaultConfigSource سراً واحداً من نوع KV-v2 — نقطة التركيب secret، والمسار
app_secrets — ويربطه بـ
مفاتيح إعدادات التطبيق. مفاتيح الحمولة
مدرجة في مرجع الإعدادات؛
اكتبها مرة واحدة باستخدام Vault CLI:
vault kv put secret/app_secrets \
api_base_url="https://<agent_lab_fqdn>" \
cdp_url="http://<cdp_host>:9222" \
auth_enabled="true" \
auth_url="https://<auth_fqdn>" \
auth_realm="<realm_name>" \
auth_client_id="<client_name>" \
auth_client_secret="<client_secret>" \
broker_url="redis://:<password>@<redis_host>:6379/0" \
db_url="postgresql://<user>:<pass>@<db_host>:5432/agent_lab" \
db_vectors="postgresql://<user>:<pass>@<db_host>:5432/agent_lab_vectors" \
db_checkpoints="postgresql://<user>:<pass>@<db_host>:5432/agent_lab_checkpoints"عندما لا يستطيع التطبيق (أو لا ينبغي له) استخدام VAULT_TOKEN ثابت، ينتقل المصدر الافتراضي
تلقائياً إلى KubernetesVaultConfigSource عند ضبط VAULT_K8S_ROLE
— إذ يصادق باستخدام رمز ServiceAccount المُسقَط الخاص بالـ pod، فلا حاجة إلى تجهيز رمز ثابت
أو تدويره.
بيئة الإنتاج
انسجاماً مع مبادئنا السحابية الأصلية (cloud-native)، نوصي بـ
إعداد Vault عالي التوافر على Kubernetes.
تتولى وحدة Terraform 15_agent-lab-dependencies/ ربط بيانات اعتماد وقت التشغيل؛ ويلتقط
التطبيق كل شيء عند بدء التشغيل عبر
عقد الإعدادات.