پرش به مطلب اصلی

مدیریت سکرت‌ها

Secret Manager ابرکلیک اطلاعات حساس (مانند کلیدهای خصوصی و credentials ایمیج رجیستری‌های خصوصی) را در سطح پروژه ذخیره می‌کند و به اپلیکیشن‌ها اختصاص می‌دهد.

تفاوت سکرت و متغیر محیطی

ویژگیمتغیر محیطی (env_vars)سکرت (secrets)
محدودههر اپسطح پروژه — قابل استفاده مجدد
نوعرشته سادهنوع‌دار: registry یا kv
مورد استفادهپیکربندی اپلیکیشنcredentials رجیستری، کلیدهای مشترک
رمزنگاریدر دیتابیس رمز می‌شوددر دیتابیس رمز می‌شود
توصیه

از سکرت برای اطلاعات حساسی که بین چند اپ به اشتراک گذاشته می‌شوند استفاده کنید. از متغیر محیطی برای پیکربندی خاص هر اپ.

انواع سکرت

registry — رجیستری خصوصی

برای pull کردن ایمیج از رجیستری‌های خصوصی (مثلاً ghcr.io یا Docker Hub private) استفاده می‌شود.

{
"registry": "ghcr.io",
"username": "mahyar",
"password": "ghp_xxxxxxxxxxxxxxxxxx"
}

سکرت نوع registry به‌عنوان imagePullSecret در Kubernetes تبدیل می‌شود و به اپلیکیشن اختصاص داده می‌شود.

kv — کلید-مقدار

برای ذخیره کلیدهای API، توکن‌ها یا هر مقدار دلخواه:

{
"STRIPE_KEY": "sk_live_xxxxxxxxxxxx",
"GITHUB_TOKEN": "ghp_yyyyyyyyyyyy",
"CUSTOM_SECRET": "value"
}

کلیدهای سکرت نوع kv به‌عنوان متغیر محیطی به اپلیکیشن تزریق می‌شوند.

توجه

نام و نوع سکرت پس از ایجاد غیرقابل تغییر است. برای تغییر نوع یا نام، سکرت را حذف کرده و دوباره بسازید.

🖼️
نمایش سکرت‌های پروژه در داشبوردplaceholder — تصویر را اینجا جایگزین کنید

ایجاد سکرت

از طریق داشبورد

۱. وارد داشبورد ابرکلیک شوید ۲. پروژه موردنظر را باز کنید ۳. به بخش سکرت‌ها بروید ۴. روی ایجاد سکرت کلیک کنید ۵. نام سکرت و نوع (registry یا kv) را انتخاب کنید ۶. فیلدهای data را پر کنید ۷. تأیید کنید

از طریق API

curl -X POST https://api.abrclick.ir/v1/projects/{projectId}/secrets \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "ghcr-pull-secret",
"type": "registry",
"data": {
"registry": "ghcr.io",
"username": "mahyar",
"password": "ghp_xxxxxxxxxx"
}
}'

سرور فیلدهای حساس (مثلاً password) را رمزنگاری می‌کند. شما مقادیر را plaintext ارسال می‌کنید.

اختصاص سکرت به اپلیکیشن

پس از ایجاد سکرت در سطح پروژه، باید آن را به یک اپ اختصاص دهید.

از طریق داشبورد

۱. وارد صفحه اپلیکیشن شوید ۲. تب سکرت‌ها را باز کنید ۳. روی اضافه کردن سکرت کلیک کنید ۴. سکرت موردنظر را از لیست پروژه انتخاب کنید ۵. اپ را ری‌دپلوی کنید (الزامی برای اعمال)

از طریق API

# اختصاص
curl -X POST https://api.abrclick.ir/v1/apps/{appId}/secrets/{secretId} \
-H "Authorization: Bearer <token>"

# جداسازی
curl -X DELETE https://api.abrclick.ir/v1/apps/{appId}/secrets/{secretId} \
-H "Authorization: Bearer <token>"
توجه

پس از اختصاص یا جداسازی سکرت، اپ باید ری‌دپلوی شود تا تغییرات اعمال شوند.

مثال: استفاده از ایمیج خصوصی GitHub

فرض کنید شما یک ایمیج Docker خصوصی در ghcr.io/mahyar/my-app:latest دارید.

۱. ایجاد سکرت رجیستری

curl -X POST https://api.abrclick.ir/v1/projects/{projectId}/secrets \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "github-registry",
"type": "registry",
"data": {
"registry": "ghcr.io",
"username": "mahyar",
"password": "ghp_xxxxxxxxxxxxxxxxxxxx"
}
}'

۲. اختصاص سکرت به اپ

از داشبورد وارد اپ شوید و سکرت github-registry را اضافه کنید.

۳. ری‌دپلوی اپ

abrclick deploy --image ghcr.io/mahyar/my-app:latest

حالا Kubernetes می‌تواند ایمیج خصوصی را pull کند.

مثال: سکرت KV برای کلیدهای API

curl -X POST https://api.abrclick.ir/v1/projects/{projectId}/secrets \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "api-keys",
"type": "kv",
"data": {
"STRIPE_KEY": "sk_live_xxxxxxxxxxx",
"SENDGRID_KEY": "SG.xxxxxxxxxxxxxxx"
}
}'

پس از اختصاص به اپ، این کلیدها به‌عنوان process.env.STRIPE_KEY و process.env.SENDGRID_KEY در دسترس هستند.

به‌روزرسانی سکرت

curl -X PATCH https://api.abrclick.ir/v1/projects/{projectId}/secrets/{secretId} \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"data": {
"password": "ghp_newtoken"
}
}'

نام و نوع سکرت غیرقابل تغییر است. فقط data قابل به‌روزرسانی است.

حذف سکرت

curl -X DELETE https://api.abrclick.ir/v1/projects/{projectId}/secrets/{secretId} \
-H "Authorization: Bearer <token>"
هشدار

حذف یک سکرت آن را از تمام اپلیکیشن‌های اختصاص‌یافته جدا می‌کند. اپ‌ها باید ری‌دپلوی شوند تا سکرت از محیط حذف شود.

رفع خطاهای رایج

PULL_IMAGE_FAILED — ایمیج قابل دسترس نیست

علت: سکرت رجیستری اشتباه یا اختصاص نیافته.

راه‌حل:

۱. بررسی کنید username و password درست باشد ۲. بررسی کنید سکرت به اپ اختصاص داده شده باشد ۳. اپ را ری‌دپلوی کنید

سکرت نوع kv تزریق نمی‌شود

علت: اپ بعد از اختصاص ری‌دپلوی نشده.

راه‌حل: اپ را از داشبورد یا CLI ری‌دپلوی کنید:

abrclick deploy

SECRET_NAME_CONFLICT — نام تکراری

علت: سکرتی با همین نام در پروژه وجود دارد.

راه‌حل: نام دیگری انتخاب کنید.

مطالب مرتبط