بخوانید 5 دقیقه ارسال شده در
Helm به بسته بندی مدولار برنامه های Kubernetes اجازه می دهد و منطق استقرار مختلف را بر اساس پیکربندی کاربر اعمال می کند. مقادیر ".
معمولاً در اولین استقرار باید اسرار تصادفی ایجاد کنیم (به عنوان مثال اسرار JWT / session یا گذرواژه های تصادفی)
ما می توانیم به کاربران اجازه دهیم که این اسرار را به صورت دستی خارج از چرخه حیات استقرار نمودار Helm ایجاد یا مدیریت کنند
اما اگر نمودار Helm بتواند تولید اسرار خودکار را مدیریت کند راحت تر خواهد بود.
با این حال ، تولید خودکار و مدیریت این اسرار به عنوان بخشی از استقرار نمودار آسان نیست.
در این مقاله ، ما در مورد مشکلات احتمالی برخی از راه حل های ساده و پیشنهاد راه حل انعطاف پذیرتر بر اساس تابع جستجو Helm.
تولید اسرار با توابع رشته تصادفی
Helm ارائه می دهد در اینجا لیستی از توابع ایجاد رشته های تصادفی وجود دارد که به ما امکان می دهد رشته های تصادفی ایمن رمزنگاری شده ایجاد کنیم.
نوع: مخفی
فراداده:
نام: "jwt-secret"
نوع: مات
داده ها:
# یک رشته تصادفی با طول 32 نویسه ایجاد کنید ، آن را در base64 رمزگذاری کنید و سپس رشته به دست آمده را در نقل قول های دوگانه قرار دهید.
jwt-secret: {{randAlphaNum 32 | b64enc | quote}}
این راه حل ساده جالب به نظر می رسد.
اما وقتی سعی می کنید یک برنامه کاربردی موجود را بعداً به روز کنید ، با مشکلاتی روبرو می شوید ، زیرا الگو هیچ ایده ای در مورد اسرار فعلی در خوشه ندارد و همیشه راز را با یک مقدار تصادفی جدید.
نوع: مخفی
فراداده:
نام: "jwt-secret"
نوع: مات
داده ها:
# داده های محرمانه را با استفاده از تابع جستجو دریافت کنید و در صورت وجود ، فرهنگ لغت / نقشه خالی را در نتیجه بازگردانید
{{- $ secret: = (جستجو "v1" "Secret" .Release.Namespace "jwt-secret") | حکم پیش فرض}}
# اختصاص $ jwtSecret به راز موجود یا تولید تصادفی در صورت عدم وجود
{{- $ jwtSecret: = ($ secretData "jwt-secret" را دریافت کنید) | پیش فرض (randAlphaNum 32 | b64enc)}}
# یک رشته تصادفی با طول 32 نویسه ایجاد کنید ، آن را در base64 رمزگذاری کنید و سپس رشته به دست آمده را در نقل قول های دوگانه قرار دهید.
jwt-secret: {{$ jwtSecret | b64enc | quote}}در اینجا ما دیگر همیشه راز را بر روی یک مقدار ایجاد شده به طور تصادفی تنظیم نمی کنیم.
در عوض ، ما سعی می کنیم با استفاده از تابع جستجو مقدار مخفی فعلی را بدست آوریم و راز را فقط در صورتی که مقدار تولید شده به طور تصادفی تنظیم شود ما نمی توانیم هیچ یک از مقادیر مخفی موجود را پیدا کنیم. توسط Helm مدیریت می شود ، هنگامی که استقرار Helm حذف می شود ، همیشه حذف خواهد شد. حاشیه نویسی "helm.sh / resource-policy" برای "نگه داشتن" هنگام حذف یا حذف نصب هلم از حذف منابع جلوگیری می کند.
در اینجا یک مثال از ذخیره منبع مخفی ما پس از حذف با استفاده از حاشیه نویسی سیاست منبع:
api نسخه: v1 نوع: مخفی فراداده: نام: "jwt-secret" حاشیه نویسی: "helm.sh/resource-policy": "حفظ" نوع: مات داده ها: {{- $ secret: = (جستجو "v1" "Secret" .Release.Namespace "jwt-secret") | حکم پیش فرض}} {{- $ jwtSecret: = ($ secretData "jwt-secret" را دریافت کنید) | پیش فرض (randAlphaNum 32 | b64enc)}} jwt-secret: {{$ jwtSecret | b64enc | quote}}چگونه به کاربر اجازه دهیم یک راز وارد کند
اگرچه در بیشتر موارد ما می خواهیم از اسرار خودکار به صورت خودکار استفاده کنیم ، اما همچنان می توانیم به کاربر اجازه دهیم که یک راز دستی ایجاد کند تا راه حل انعطاف پذیرتر شود.
برای انجام این کار ، می توانیم از کاربر بخواهیم نام راز دستی ایجاد شده را از طریق قسمت پیکربندی مشخص کند ، به عنوان مثال .Values.manualSecretName ، و راز تولید شده را تنها در صورتی نمایش دهد که .Values.manualSecretName خالی باشد.
{{- اگر خالی است. ارزشها .manualSecretName}} apiVersion: v1 نوع: مخفی فراداده: نام: "jwt-secret" حاشیه نویسی: "helm.sh/resource-policy": "حفظ" نوع: مات داده ها: {{- $ secret: = (جستجو "v1" "Secret" .Release.Namespace "jwt-secret") | حکم پیش فرض}} {{- $ jwtSecret: = ($ secretData "jwt-secret" را دریافت کنید) | پیش فرض (randAlphaNum 32 | b64enc)}} jwt-secret: {{$ jwtSecret | b64enc | نقل قول}} {{- پایان}}درباره جستجو بیشتر بدانید
تابع جستجو در Helm یک ابزار بسیار قدرتمند است که به ما اجازه می دهد منطق استقرار مختلف را بر اساس وضعیت خوشه اعمال کنیم.
از آنجا که تابع جستجو به داده های حالت خوشه نیاز دارد ، در توجه داشته باشید که همیشه یک پاسخ خالی برمی گرداند:
- نمودار را با الگوی فرمان
- شروع کنید یا نمودار را با سوئیچ [1945902020]-خشک اجرا کنید
نتیجه گیری
راحت است از نمودار خود بخواهید Helm به صورت خودکار در صورت نیاز برای کاربران شما اسرار ایجاد کند. همچنین: