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) هستند و داده‌ها را به سرور ارسال می‌کنند.

portainer-architecture-detailed.png

امنیت و انطباق‌پذیری (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 پیش‌فرض در کلاستر خود، دستور زیر را اجرا کنید:

kubectl get storageclass

این دستور فهرست StorageClassهای موجود را نمایش می‌دهد. StorageClass دارای برچسب (default) به‌عنوان پیش‌فرض شناخته می‌شود و توسط Portainer استفاده خواهد شد.

برای بررسی اینکه آیا یک StorageClass به عنوان پیش‌فرض تنظیم شده است یا نه، می‌توانید از دستور زیر استفاده کنید:

kubectl get sc

و به دنبال StorageClassی باشید که عبارت (default) بعد از نام آن آمده باشد:

root@kubemaster01:~# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
managed-nfs-storage (default) k8s-sigs.io/nfs-subdir-external-provisioner Delete Immediate false 11d

برای تعیین یک StorageClass به‌عنوان پیش‌فرض، می‌توانید از دستور زیر استفاده کنید (نام <storage-class-name> را با نام StorageClass مورد نظر خود جایگزین کنید):

kubectl patch storageclass <storage-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

اگر از Helm chart برای نصب استفاده می‌کنید، می‌توانید با افزودن پارامتر زیر به دستور نصب خود، StorageClass موردنظر را مشخص کنید:

--set persistence.storageClass=<storage-class-name>

استقرار Portainer روی Kubernetes

برای استقرار Portainer در کلاستر Kubernetes، می‌توانید از Helm chartهای آماده یا فایل‌های YAML ارائه‌شده توسط Portainer استفاده کنید.

استقرار با استفاده از YAML

فایل‌های YAML امکان اکسپوز کردن (expose) Portainer از طریق NodePort را فراهم می‌کنند.

برای اکسپوز از طریق NodePort، می‌توانید از دستور زیر استفاده کنید:
(در این حالت، Portainer از طریق پورت 30777 برای HTTP و پورت 30779 برای HTTPS در دسترس خواهد بود)

kubectl apply -n portainer -f https://raw.githubusercontent.com/portainer/k8s/master/deploy/manifests/portainer/portainer.yaml

ورود به پنل Portainer

پس از اتمام نصب، می‌توانید وارد محیط کاربری Portainer شوید. بسته به روشی که برای اکسپوز کردن Portainer انتخاب کرده‌اید، مرورگر وب خود را باز کرده و به یکی از آدرس‌های زیر بروید:

  • http://localhost:30777

  • https://localhost:30779


مراحل اولیه راه‌اندازی

پس از دسترسی به رابط کاربری Portainer، آماده هستید تا مراحل اولیه پیکربندی را انجام دهید.

ایجاد اولین کاربر (Creating the First User)

در اولین ورود، باید یک حساب کاربری مدیر (Admin) ایجاد کنید تا بتوانید به‌طور کامل از قابلیت‌های مدیریتی Portainer استفاده کنید.

be-server-setup-1.png

پس از ایجاد کاربر مدیر (Admin)، راهنمای پیکربندی محیط (Environment Wizard) به‌صورت خودکار اجرا خواهد شد. این راهنما به شما کمک می‌کند تا تنظیمات اولیه Portainer را انجام داده و سریع‌تر کار با آن را آغاز کنید.

2.9-server-setup-wizard.png

مزایای استفاده از Portainer چیست؟

  • برای افراد مبتدی، استفاده از Portainer این امکان را فراهم می‌کند که بلافاصله کار با اپلیکیشن‌های کانتینری را شروع کنند. در نتیجه، منحنی یادگیری Docker یا Kubernetes را به شکل قابل توجهی کاهش می‌دهد.

  • برای توسعه‌دهندگان Docker، این ابزار دوستانه و کاربرپسند است؛ کانتینرها به‌راحتی اجرا می‌شوند و زمان کمتری برای مدیریت آن‌ها صرف می‌شود.

  • به‌دلیل داشتن رابط گرافیکی ساده، عملیات مدیریتی، مستندسازی و مانیتورینگ بسیار ساده‌تر می‌شود.

  • شما می‌توانید کانتینرها را ویرایش کرده و تنها در چند ثانیه دوباره استقرار دهید، که این موضوع برای کسانی که نیاز به تغییر سریع متغیرهای محیطی دارند، بسیار کارآمد است.

  • رابط کاربری تحت وب باعث می‌شود که مانیتورینگ و مدیریت کانتینرها بسیار ساده‌تر از استفاده از خط فرمان (CLI) باشد و از پیچیدگی‌های فنی بکاهد.


جمع‌بندی

اگر از اپلیکیشن‌های کانتینری استفاده می‌کنید و به دنبال راهی برای مدیریت سریع‌تر و آسان‌تر کانتینرها هستید و می‌خواهید در لحظه از وضعیت آن‌ها مطلع شوید، به احتمال زیاد Portainer برای شما ابزار بسیار مناسبی خواهد بود.

بدون نظر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *