إدارة متغيرات البيئة باستخدام SecretsFoundry

Built for Speed: ~10ms Latency, Even Under Load
Blazingly fast way to build, track and deploy your models!
- Handles 350+ RPS on just 1 vCPU — no tuning needed
- Production-ready with full enterprise support
لقد كتبت عن الطرق المختلفة لإدارة متغيرات البيئة سابقًا في منشوري هنا. لتسهيل التعامل مع الإعدادات في شركتنا الناشئة في Truefoundry، قمنا بتطوير أداة صغيرة تسمى SecretsFoundry والتي جعلت الأمر سلسًا للغاية لجميع فرق التطبيقات للحفاظ على إعداداتهم في Git. اعتقدنا أنها قد تكون مفيدة لفرق المطورين الأخرى ولذلك قررنا جعلها مفتوحة المصدر .
قبل الخوض في التفاصيل، من الجيد فهم المشكلة التي تحلها SecretsFoundry. يحتوي كل تطبيق على بعض متغيرات الإعدادات غير الحساسة والحساسة التي يجب توفيرها للتطبيق عند تشغيله. بالنسبة للمتغيرات غير الحساسة، يميل الأشخاص إلى وضع المتغيرات في ملف ثم تحميلها إلى التطبيق باستخدام مكتبات مثل dotenv. أما بالنسبة للمتغيرات الحساسة، فيقوم الأشخاص إما بتخزين القيم في بعض مديري الأسرار مثل AWS SecretManager و Hashicorp Vault ثم كتابة كود التطبيق لسحب الأسرار من المخزن. النهج الآخر هو أن يقوم نظام خارجي بضخ المتغيرات من مخزن الأسرار إلى بيئة التطبيق — وفي هذه الحالة، يصبح نطاق متغيرات البيئة مسؤولية DevOps بشكل أكبر ويفقد المطورون السيطرة عليها — مما يؤدي إلى المزيد من الأخطاء وصعوبة أكبر في تصحيح الأخطاء عند حدوث المشاكل.
تحاول SecretsFoundry حل المشكلات المذكورة أعلاه عن طريق القيام بما يلي:
يمكن أن توجد جميع المفاتيح الحساسة وغير الحساسة في ملف واحد.
بالنسبة للمتغيرات غير الحساسة، يمكنك وضع المتغيرات مباشرة. أما بالنسبة للمتغيرات الحساسة، فنضع المسار في مخزن الأسرار كقيمة لتلك المتغيرات. بهذه الطريقة، نخبر secretsfoundry كيفية جلب تلك القيم. مثال على هذا الملف سيكون:
ملف .env
NODE_ENV = development
HOST = localhost
DB_NAME = example_app_db
DB_USER = ${aws-secret:/development/example_app/DB_USER}
DB_PASSWORD = ${aws-secret:/development/example_app/DB_PASSWORD}
في المثال أعلاه، يتم تخزين اسم المستخدم وكلمة المرور الفعليين لقاعدة البيانات (DB_USER و DB_PASSWORD) في AWS Secrets Manager. يمكن للمطورين تحديد المسار في ملف .env وسيقوم secretsfoundry بجلبها لك.
لا يوجد كود خاص بالتطبيق لجلب متغيرات البيئة
يعمل Secretsfoundry عن طريق حقن القيم الفعلية في بيئة التطبيق قبل تشغيله بدلاً من داخل التطبيق. وهذا له ميزتان:
- لا توجد تبعيات في التطبيق ولا نحتاج إلى إضافة مكتبات عبر العديد من اللغات المختلفة.
- في حال لم يتمكن secretsfoundry من العثور على متغير بيئة معين، فإن secretsfoundry نفسه يتعطل ويقدم إشارة مبكرة على عدم الصحة لجميع أنظمة النشر مثل Kubernetes. وإلا، يقع على عاتق التطبيق مسؤولية إجراء التحقق ومعالجة الأخطاء.
دعم لمديري الأسرار المتعددين
يتكامل SecretsFoundry مع AWS Parameter Store و AWS S3 و AWS SecretsManager و Hashicorp Vault لإدارة الأسرار. إضافة مخزن أسرار جديد سهل للغاية ونخطط لتوسيع الدعم ليشمل GCP و Azure Vault في المستقبل.
استخدام SecretsFoundry
طريقة استخدام secretsfoundry هي:
secretsfoundry run -c "node start.js"
أو إذا كان لديك عدة أوامر في نص بدء التشغيل الخاص بك:
secretsfoundry run -s "node run_migration_script && node start.js"
عندما نقوم بـ secretsfoundry run, فإنه يبحث عن ملف .env في ذلك الدليل ويطبع قيم المتغيرات. إذا كان هناك -c أو -s وسيطة، فإنه يحقنها في بيئة ذلك التطبيق. لذا، إذا أخذت في الاعتبار ملف .env الذي كتبناه سابقًا، فإن تشغيل secretsfoundry run في ذلك الدليل سيخرج
secretsfoundry run
NODE_ENV = development
HOST = localhost
DB_NAME = example_app_db
DB_USER = admin
DB_PASSWORD = password
يمكننا إنشاء تطبيق نموذجي صغير في start.js يبدو كما يلي:

secretsfoundry run -c “node start.js”

يمكن لـ SecretsFoundry أيضًا تحميل أي ملف آخر بصيغة .env.<stage> باستخدام
secretsfoundry run — stage=<stage>
يمكن لـ SecretsFoundry قراءة ملفات التكوين من دليل آخر باستخدام
secretsfoundry run -p <مسار دليل التكوين الذي يحتوي على ملفات .env.>
يمكنه أيضًا قبول مسار إدخال لملف يمكن أن يكون بتنسيق .env / json / yaml وإخراج المتغيرات المحللة إلى ملف مختلف. نستخدم هذا للتكامل مع أنظمة Kubernetes المختلفة التي سأكتب عنها في مدونة أخرى.
secretsfoundry run -i <ملف الإدخال الذي يحتوي على المتغيرات (.env/json/yaml)> -o <ملف_الإخراج>
يحتاج SecretsFoundry إلى بيانات اعتماد للحصول على المعلمات من SecretStore — لذا سيتعين عليك توفير تلك المتغيرات يدويًا لبيئتك.
التثبيت والوثائق
يمكنك تنزيل secretsfoundry باستخدام npm أو yarn (https://www.npmjs.com/package/secretsfoundry)
npm install -g secretsfoundry
يتواجد SecretsFoundry في هذا مستودع Github ويمكن العثور على وثائقه على https://truefoundry.gitbook.io/secretsfoundry.
جرب SecretsFoundry وأخبرنا بتجربتك. لقد استخدمناه داخليًا بشكل مكثف مع AWS Parameter Store — ومع ذلك، لم يتم اختبار تكامل Hashicorp Vault بشكل جيد. جربه وأخبرنا إذا وجدت أي أخطاء أو لديك أي طلبات ميزات.
نُشر في الأصل على ميديوم
TrueFoundry AI Gateway delivers ~3–4 ms latency, handles 350+ RPS on 1 vCPU, scales horizontally with ease, and is production-ready, while LiteLLM suffers from high latency, struggles beyond moderate RPS, lacks built-in scaling, and is best for light or prototype workloads.
The fastest way to build, govern and scale your AI





















.png)
.webp)










.webp)






