به گزارش از وبسایت cncf Harbor یک رجیستری تصویر کانتینر متنباز و ضروری است که امکاناتی مانند امنیت مبتنی بر سیاست، کنترل دسترسی مبتنی بر نقش (RBAC)، اسکن آسیبپذیری، امضای تصویر، تکرار و توزیع تصاویر را فراهم میکند. استقرار Harbor یک گام معمول و حیاتی برای سازمانهایی است که میخواهند گردشهای کاری کانتینری خود را سادهتر و قابل اطمینانتر کنند؛ این محصول میتواند حتی روی یک ماشین مجازی اجرا شود. در این مطلب ادامهای بر راهنمای پیشین ارائه شده و گامبهگام روند استقرار Harbor روی یک خوشه Kubernetes بالادستی با استفاده از Helm را تشریح میکنیم. 📦
چرا Harbor را در Kubernetes مستقر کنیم؟ اجرای Harbor در Kubernetes مزایای متعددی دارد: مقیاسپذیری: Kubernetes امکان مقیاس افقی اجزای Harbor را مطابق بار کاری فراهم میکند تا میکروسرویسها بهصورت مستقل بزرگ یا کوچک شوند. دسترسپذیری بالا: قابلیتهای داخلی Kubernetes برای بازراهاندازی پادها، بررسی سلامت و خوددرمانی، اختلالات را کاهش میدهد. بهرهوری منابع: با زمانبندی هوشمند و تخصیص منابع، استفاده از منابع بهینه میشود. ادغام بومی: قرار گرفتن رجیستری و مصرفکنندههای تصویر در یک اکوسیستم Kubernetes تجربه عملیاتی یکپارچهای ایجاد میکند. بهروزرسانی آسانتر: استفاده از Helm فرآیند ارتقا را با حداقل وقفه ساده میکند.
به گزارش از وبسایت cncf معماری Harbor مبتنی بر میکروسرویس است و هر جزء نقش مشخصی در اکوسیستم رجیستری ایفا میکند؛ شناخت این مؤلفهها برای استقرار، عیبیابی و بهینهسازی ضروری است. مؤلفهها عبارتند از: Harbor Core: ارائهدهنده API اصلی REST که احراز هویت، مجوزها، مدیریت پروژه و هماهنگی بین خدمات را کنترل میکند. پورتال Harbor: یک رابط وب (ساختهشده با Angular و Clarity) که رابط گرافیکی برای مدیریت پروژهها، کاربران و پیکربندیها فراهم میآورد و با Harbor Core تعامل میکند. Harbor Registry: مبتنی بر Docker Distribution و مسئول ذخیره و بازیابی لایهها و مانیفستهای تصویر با استفاده از Docker Registry HTTP API v2. Harbor Job Service: اجرای وظایف پسزمینه ناهمزمان مانند تکرار تصویر، جمعآوری زباله و اسکن آسیبپذیری از طریق صفها. پایگاه داده (PostgreSQL): نگهدارنده ابردادهها از جمله حسابها، پروژهها، سیاستها و گزارشها — که میتوان آن را داخلی یا خارجی پیکربندی کرد. Redis: حافظهداده درونحافظه بهعنوان کش و واسطه پیام برای بهبود پاسخدهی. Trivy (اختیاری): اسکنر آسیبپذیری که تصاویر را در برابر پایگاههای داده CVE بررسی میکند و گزارشهای امنیتی تولید مینماید.
نحوه تعامل اجزا: وقتی کاربر تصویری را push میکند، درخواست از طریق Harbor Core اعتبارسنجی و مجوزدهی میشود؛ دادههای تصویر توسط Registry ذخیره و متادیتا در PostgreSQL نگهداری میشود. Job Service میتواند اسکنهای امنیتی یا عملیات تکرار را بهصورت ناهمزمان اجرا کند و نتایج را در پایگاه داده ثبت نماید. Redis به عنوان کش برای بهبود زمان پاسخ استفاده میشود. این معماری توزیعشده امکان مقیاسپذیری، جداسازی مسئولیتها و انعطافپذیری لازم برای استقرار سازمانی را فراهم میکند.
پیشنیازها برای استقرار Harbor با Helm: یک خوشه Kubernetes فعال و دسترسی kubectl، و توصیه میشود از Helm برای مدیریت نصب استفاده کنید. نیاز به فراهمکننده ذخیرهسازی دائمی (مثل NFS یا iSCSI) دارید و در صورت نیاز میتوانید object storage را برای برخی دادهها پیکربندی کنید. برای افزودن مخزن Helm و دریافت بسته Harbor از دستورات زیر استفاده کنید:
helm repo add harbor https://helm.goharbor.io helm fetch harbor/harbor --untar
فایل values.yaml را برای پارامترهای زیر تنظیم کنید: External URL، کلاس ذخیرهسازی برای PVCها، پیکربندی PostgreSQL (داخلی یا external)، پیکربندی Redis، تنظیمات TLS/SSL و اعتبار مدیر. برای مثال در سناریوی نمونه مواردی مانند expose.type = loadBalancer، مقدار expose.ingress.hosts.core = و تنظیمات مرتبط با کلاس ذخیرهسازی و ExternalURL را اعمال میکنیم.
نصب و راهاندازی Harbor: از Helm برای نصب استفاده کنید و محتویات لازم (Deploymentها، Serviceها، StatefulSetها و PVCها) ایجاد خواهد شد. برای نصب نمونه، از دستور زیر بهره ببرید:
helm install harbor harbor/harbor --namespace harbor --create-namespace -f values.yaml
پس از اجرا، منابع Kubernetes مربوطه ساخته میشوند. بسته به زیرساخت شما ممکن است نیاز به پیکربندی دستی load balancer یا Ingress برای IP یا FQDN خارجی باشد. پس از نصب، وضعیت پادها را بررسی کرده، به رابط وب دسترسی پیدا کنید و یک push/pull آزمایشی انجام دهید تا عملکرد پایه تأیید شود. 🔒
ملاحظات تولیدی و جمعبندی: استقرار پایه Harbor در Kubernetes آن را راهاندازی و اجرا میکند اما برای محیطهای تولید باید اقدامات اضافی انجام شود؛ از جمله مدیریت گواهیهای TLS، پیکربندی load balancer مناسب، استراتژیهای پشتیبانگیری و بازیابی فاجعه برای PostgreSQL و دادههای رجیستری، تنظیم HA با نمونههای متعدد از مؤلفههای کلیدی، و راهاندازی نظارت و هشدار با ابزارهایی مانند Prometheus و Grafana بهعلاوه اعمال سیاستهای دسترسی و RBAC مناسب. در مجموع، استفاده از Helm و قابلیتهای Kubernetes یک راهکار مقیاسپذیر و cloud-native برای مدیریت تصاویر کانتینر فراهم میآورد، اما سختسازی و آمادهسازی برای تولید ضروری است. 😊