Portainer چیست؟
Portainer یک ابزار قدرتمند و متنباز است که به شما این امکان را میدهد تا بهسادگی کانتینرها را در محیطهای Docker، Docker Swarm، Kubernetes و Azure ACI بسازید و مدیریت کنید. Portainer پیچیدگیهای مدیریت کانتینرها را پشت یک رابط کاربری ساده پنهان میکند. با حذف نیاز به استفاده از خط فرمان (CLI)، نوشتن فایلهای YAML یا درک ساختار فایلهای manifest، Portainer فرآیند استقرار برنامهها و رفع اشکال را آنقدر ساده میکند که هر کسی بتواند از آن استفاده کند.
Portainer برای سازمانهایی طراحی شده است که به تخصص در زمینه مدیریت کانتینرها دسترسی ندارند، اما میخواهند از قدرت این فناوری استفاده کنند.
ویژگیهای Portainer
با داشتن یک رابط کاربری گرافیکی (GUI) ساده و مجموعهای از تنظیمات پیشفرض منطقی که کاربران را سریعاً راهاندازی میکند، Portainer نیاز به یادگیری عمیق Docker و Kubernetes را بهطور چشمگیری کاهش میدهد، که این موضوع باعث تسریع در پذیرش فناوری و صرفهجویی در زمان در سراسر سازمان میشود.
پیچیدگیهای عملیاتی مرتبط با کانتینرها را کاهش میدهد که موجب تسریع در پیادهسازی و کاهش خطاها میشود.
کمبود مهارتهای فنی را با فراهم کردن دسترسی ایمن به فناوری برای همه افراد در سازمان، برطرف میکند.
پیکربندیهای امنیتی “ایمن” در Docker و Kubernetes را از طریق مدیریت دسترسی متمرکز (IAM) ساده میکند.
معماری Portainer
مروری بر معماری
Portainer از دو جزء تشکیل شده است: سرور Portainer و عامل Portainer (Portainer Agent). هر دو بهصورت کانتینرهای سبک در زیرساخت کانتینری موجود شما اجرا میشوند. عامل Portainer باید روی هر نود (گره) در کلاستر شما نصب شده و طوری پیکربندی شود که به سرور Portainer گزارش دهد.
یک سرور Portainer میتواند اتصالات را از هر تعداد عامل Portainer دریافت کند و این امکان را فراهم میکند که چندین کلاستر را از طریق یک رابط مرکزی مدیریت کنید. برای این منظور، کانتینر سرور Portainer نیاز به پایداری داده (data persistence) دارد. در حالی که عاملهای Portainer بدون حالت (stateless) هستند و دادهها را به سرور ارسال میکنند.
امنیت و انطباقپذیری (Security and Compliance)
Portainer بهصورت کامل روی سرورهای شما، درون شبکه داخلی و پشت فایروالهای سازمانیتان اجرا میشود. به همین دلیل، این پلتفرم در حال حاضر گواهیهای انطباقی مانند SOC یا PCI/DSS را ندارد، چرا که هیچ بخشی از زیرساخت آن در فضای ابری یا توسط ما میزبانی نمیشود. حتی میتوان Portainer را بهصورت کاملاً آفلاین و ایزوله (air-gapped) اجرا کرد، بدون اینکه هیچ محدودیتی در عملکرد آن ایجاد شود.
هرچند Portainer میتواند (بهصورت اختیاری) اطلاعات ناشناس مربوط به نحوه استفاده کاربران را جمعآوری کند، این فرایند کاملاً مطابق با مقررات GDPR انجام میشود. امکان غیرفعالسازی این قابلیت در زمان نصب یا در هر زمان پس از آن وجود دارد. در صورت اجرای آفلاین، تلاش برای جمعآوری دادهها بهصورت بیصدا انجام شده و بدون هیچ خطا یا پیام خاصی، نادیده گرفته میشود.
شروع کار با Portainer (Getting Started)
نصب (Installation)
نسخه Community از Portainer رایگان، متنباز و بسیار ساده برای نصب است. شما میتوانید یا نصب جدید انجام دهید، یا یک محیط (Environment) جدید را به یک نصب موجود اضافه کنید.
در این راهنما، روش نصب جدید Portainer روی پلتفرم Kubernetes را بررسی خواهیم کرد.
مقدمهای بر نصب روی Kubernetes
Portainer از دو مؤلفه اصلی تشکیل شده است:
Portainer Server
Portainer Agent
هر دو جزء بهصورت کانتینرهای سبک روی بستر Kubernetes اجرا میشوند.
برای شروع نصب، به موارد زیر نیاز خواهید داشت:
یک کلاستر Kubernetes فعال و بهروز
دسترسی برای اجرای دستورات
helm
یاkubectl
روی کلاستردسترسی مدیر کلاستر (Cluster Admin) جهت ایجاد ServiceAccount و ClusterRoleBinding موردنیاز
یک StorageClass پیشفرض پیکربندیشده برای ذخیره دادهها
پایداری دادهها (Data Persistence)
Portainer برای ذخیره اطلاعات مورد نیاز خود به پایداری داده وابسته است؛ بنابراین، حداقل باید یک StorageClass در کلاستر شما در دسترس باشد. در هنگام نصب، Portainer تلاش میکند تا بهصورت خودکار از StorageClass پیشفرض استفاده کند. اگر StorageClass پیشفرض در دسترس نباشد، نصب با خطا مواجه خواهد شد.
برای بررسی وجود StorageClass پیشفرض در کلاستر خود، دستور زیر را اجرا کنید:
این دستور فهرست StorageClassهای موجود را نمایش میدهد. StorageClass دارای برچسب (default)
بهعنوان پیشفرض شناخته میشود و توسط Portainer استفاده خواهد شد.
برای بررسی اینکه آیا یک StorageClass به عنوان پیشفرض تنظیم شده است یا نه، میتوانید از دستور زیر استفاده کنید:
و به دنبال StorageClassی باشید که عبارت (default) بعد از نام آن آمده باشد:
برای تعیین یک StorageClass بهعنوان پیشفرض، میتوانید از دستور زیر استفاده کنید (نام <storage-class-name>
را با نام StorageClass مورد نظر خود جایگزین کنید):
اگر از Helm chart برای نصب استفاده میکنید، میتوانید با افزودن پارامتر زیر به دستور نصب خود، StorageClass موردنظر را مشخص کنید:
استقرار Portainer روی Kubernetes
برای استقرار Portainer در کلاستر Kubernetes، میتوانید از Helm chartهای آماده یا فایلهای YAML ارائهشده توسط Portainer استفاده کنید.
استقرار با استفاده از YAML
فایلهای YAML امکان اکسپوز کردن (expose) Portainer از طریق NodePort را فراهم میکنند.
برای اکسپوز از طریق NodePort، میتوانید از دستور زیر استفاده کنید:
(در این حالت، Portainer از طریق پورت 30777 برای HTTP و پورت 30779 برای HTTPS در دسترس خواهد بود)
ورود به پنل Portainer
پس از اتمام نصب، میتوانید وارد محیط کاربری Portainer شوید. بسته به روشی که برای اکسپوز کردن Portainer انتخاب کردهاید، مرورگر وب خود را باز کرده و به یکی از آدرسهای زیر بروید:
http://localhost:30777
https://localhost:30779
مراحل اولیه راهاندازی
پس از دسترسی به رابط کاربری Portainer، آماده هستید تا مراحل اولیه پیکربندی را انجام دهید.
ایجاد اولین کاربر (Creating the First User)
در اولین ورود، باید یک حساب کاربری مدیر (Admin) ایجاد کنید تا بتوانید بهطور کامل از قابلیتهای مدیریتی Portainer استفاده کنید.
بدون نظر