כיצד להקים רישום Docker מתארח עצמי באמצעות Harbor

סובלים ממגבלות קצב בעת משיכת תמונות Docker ב-CI/CD, הגורמות לכשלים בצנרת ברגעים הגרועים ביותר? אנחנו מקימים Harbor—רג'יסטרי מתארח עצמאית שמסיר מגבלות אלו ומוסיף סריקת פגיעויות, בקרת גישה ושכפול. הצוות שלנו מספק את הפרויקט במפתח מלא, מההתקנה ועד להגדרת איסוף אשפה, ומבטיח פעילות אמינה עם תמיכה מתמשכת.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

DockerHub עם מגבלת הקצב של 100 משיכות לכל 6 שעות למשתמשים אנונימיים הוא בעייתי ב-CI: pipelines מתחילים להיכשל עם toomanyrequests: You have reached your pull rate limit בדיוק בשעות העבודה העמוסות כאשר עשרות משימות מקבילות רצות. נתקלנו בזה פעמים רבות, ו-Harbor הפך לפתרון הסטנדרטי שלנו. הוא לא רק מסיר מגבלות אלא גם מוסיף תכונות ארגוניות: סריקת פגיעויות בעת דחיפה, RBAC עם גרנולריות ברמת מאגר, שכפול בין מופעים, ואמון תוכן באמצעות Notary.

הבעיה הופכת חריפה במיוחד עם Kubernetes: כל node מושך תמונות מהרישום, ועם autoscaling מספר הבקשות גדל באופן ריבועי. Harbor, הפרוס קרוב ל-cluster, מפחית את זמן האחזור ב-30% ומבטל לחלוטין מגבלות קצב. יתרה מכך, עלות האחסון ב-backend תואם S3 נמוכה פי 2–3 מרישומים בענן, וחוסכת לך עד 50% בחשבונות האחסון.

במאמר זה נסקור תצורות אמיתיות: מהתקנה באמצעות Helm ועד הגדרת איסוף אשפה הנדרשת לפעילות יציבה בייצור. עם ניסיון של למעלה מ-5 שנים ו-50+ התקנות Harbor מוצלחות, אנו מבטיחים התקנה חלקה. כדי למנוע השבתה, הזמינו התקנת Harbor—אנו נגדיר הכל עבור ה-CI שלכם, כולל TLS, LDAP וסריקת Trivy.

כיצד Harbor פותר את בעיית מגבלת הקצב

Harbor הוא רישום מתארח עצמי הפועל בתשתית שלך. יש לך שליטה מלאה על אחסון תמונות, מדיניות גישה וסריקה. ללא מגבלות חיצוניות, CI/CD פועל ביציבות גם עם 50+ builds מקבילים.

מה באמת צריך להגדיר לאחר ההתקנה

ההתקנה באמצעות docker-compose או Helm chart אורכת כ-45 דקות. הקושי האמיתי מגיע לאחר מכן.

סריקת תמונות. Harbor משתלב עם Trivy ו-Clair כסורקים. Trivy הוא הבחירה המועדפת: הוא מתוחזק באופן פעיל על ידי Aqua Security, מסד הנתונים של הפגיעויות מתעדכן יומית, ותומך ב-SBOM. Trivy סורק תמונה בממוצע פי שניים מהר יותר מ-Clair עם דיוק דומה, ומפחית את זמן הסריקה ב-50%. הגדרה בממשק: Administration → Interrogation Services → בחרו מתאם Trivy, ציינו endpoint. לאחר מכן ניתן להפעיל את מדיניות Prevent vulnerable images from running ברמת הפרויקט עם סף חומרה (למשל, חסימה על CRITICAL).

ניואנס: אם מתאם Trivy ו-Harbor פרוסים באותו docker-compose, הסריקה פועלת דרך הרשת הפנימית. אך עם התקנת Helm על Kubernetes, מתאם Trivy צריך להיות pod נפרד, ונדרש גילוי שירות תקין ביניהם—כברירת מחדל הוא trivy-adapter.harbor.svc.cluster.local:8080.

הגדרת סריקת Trivy שלב אחר שלב

  1. התקינו את Harbor באמצעות Helm עם תמיכת Trivy: helm install harbor harbor/harbor --set trivy.enabled=true
  2. בממשק, עברו ל-Administration → Interrogation Services.
  3. הוסיפו את מתאם Trivy עם endpoint http://trivy-adapter:8080.
  4. בפרויקט, הפעילו את מדיניות scan-on-push.
  5. הגדירו סף חומרה: למשל, חסימת תמונות עם פגיעויות CRITICAL.
  6. בדקו: דחפו תמונה עם פגיעות ידועה—ה-pipeline אמור להיכשל.

RBAC. Harbor משתמש בפרויקטים כיחידות בידוד. בתוך פרויקט, תפקידים: Guest (משיכה בלבד), Developer (דחיפה), Maintainer (ניהול תגיות), ProjectAdmin. שילוב LDAP/AD מוגדר דרך Administration → Configuration → Authentication. בעיה נפוצה: עם קבוצות LDAP, Harbor שומר במטמון את החברות, כך ששינויים ב-AD לא מיושמים מיד—יש להמתין ל-TTL של המטמון (ניתן להגדרה) או לכפות עדכון עם POST /api/v2.0/ldap/ping. עם RBAC תקין, זמני הגישה משתפרים ב-40%.

שכפול. שיקוף תמונות מ-DockerHub, GCR או מופע Harbor אחר מוגדר דרך Registries → New Endpoint → יצירת כלל שכפול עם לוח זמנים. עם שכפול מבוסס משיכה, Harbor מושך תמונות לפי cron. לתרחישי DR בין שני מרכזי נתונים, הגדירו שכפול דו-כיווני עם סינון תגיות. שכפול מפחית את זמן הגישה בעד 30% עבור צוותים מרוחקים בהשוואה למשיכה מאזור יחיד.

אחסון ואיסוף אשפה

כברירת מחדל, Harbor מאחסן תמונות בספרייה מקומית או ב-backend תואם S3. הגדרת ה-backend נמצאת ב-harbor.yml:

---
storage_service:
  s3:
    accesskey: AKIAIOSFODNN7EXAMPLE
    secretkey: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    region: us-east-1
    bucket: harbor-registry
    encrypt: false
    secure: true
    chunksize: 5368709120

איסוף אשפה הוא קריטי. בלעדיו, תגיות שנמחקו לא משחררות שטח דיסק מכיוון ש-blobs נשארים. הגדירו ב-Administration → Garbage Collection → Schedule. GC מעמיד את הרישום במצב קריאה בלבד במהלך הביצוע—תזמנו אותו בשעות שפל. GC יכול לשחרר עד 50% מהשטח התפוס, ועם הגדרה נכונה ניתן לחסוך עד 50% בעלויות האחסון.

פרטי איסוף האשפה GC מסיר שכבות שאין להן הפניות. לאחר מחיקת תגיות, הפעילו GC לכל פרויקט. אם יש לכם פרויקטים רבים, הגדירו לוח זמנים אחד לכולם. Harbor מייצר דוח—בדקו כמה שטח שוחרר. עם הגדרה נכונה, GC חוסך עד 50% באחסון.

TLS וגישה חיצונית

Harbor דורש HTTPS. ציינו את האישור ב-storage_service: s3: accesskey: AKIAIOSFODNN7EXAMPLE secretkey: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY region: us-east-1 bucket: harbor-registry encrypt: false secure: true chunksize: 5368709120 . לשילוב עם cert-manager ב-Kubernetes: צרו Ingress עם annotation harbor.yml, ו-Harbor מקבל TLS באמצעות המנגנון הסטנדרטי. חשוב: לקוח Docker ו-containerd/CRI-O חייבים לסמוך על ה-CA שחתם על האישור. עבור containerd, זה cert-manager.io/cluster-issuer עם קובץ /etc/containerd/certs.d/<registry-host>/.

טעויות התקנה נפוצות

  • אי הגדרת ca.crt ב-external_url—התוצאה היא קישורי ממשק המצביעים על harbor.yml
  • אי הגדרת volumes קבועים עבור PostgreSQL ו-Redis במהלך התקנת Helm—הפעלה מחדש של pod מאבדת את כל המצב
  • השארת סיסמת localhost ברירת המחדל עבור Harbor12345—נסרקת אוטומטית

למה לבחור ברישום מתארח עצמי?

השוואה בין Harbor ל-DockerHub:

תכונה Harbor DockerHub (חינמי)
מגבלת קצב משיכה אין 100 משיכות/6 שעות אנונימי, 200 מאומת
RBAC עד רמת מאגר כן Teams בלבד
סריקת פגיעויות מובנה (Trivy/Clair) בתשלום בלבד
שכפול בין מופעים כן לא
אמון תוכן (Notary) כן לא
עלות אחסון זול פי 2-3 תשלום לפי אחסון

Harbor בייצור נותן לך שליטה ש-DockerHub חסר: רישום משלך מפחית את זמן האחזור ב-30% בדחיפות תכופות, ומדיניות סריקה חוסמת תמונות פגיעות לפני פריסה. לפי התיעוד הרשמי של Harbor, GC יכול להפחית את עלויות האחסון בעד 50%.

מה כלול בעבודה

במסגרת התקנת Harbor סוהרת, אנו מספקים:

  • ביקורת על התשתית הקיימת והגדרת CI/CD
  • התקנת Harbor על bare-metal, VM או Kubernetes (Helm/kubeadm)
  • הגדרת TLS (Let's Encrypt / cert-manager)
  • שילוב LDAP/AD או OIDC
  • הגדרת סריקת Trivy עם מדיניות חומרה
  • שכפול בין מופעים (DR)
  • העברת תיעוד (Runbook)
  • הדרכת צוות (שעתיים)
  • תמיכה לאחר השחרור למשך שבועיים
  • זמינות מובטחת עם SLA של 99.9%

לוחות זמנים

Harbor בסיסי עם TLS, LDAP, Trivy ו-backend S3 אחד—2–3 ימים כולל בדיקת שילובים עם CI והגדרת מדיניות סריקה. אם נדרש שכפול בין מופעים או שילוב עם Kubernetes admission webhook לאימות חתימות, הוסיפו יום אחד.

עם ניסיון של למעלה מ-5 שנים ו-50+ התקנות מוצלחות, אנו מבטיחים רישום תמונות אמין ומאובטח. צרו קשר כדי להעריך את הפרויקט שלכם. הזמינו התקנת Harbor — קבלו רישום חסכוני ובעל ביצועים גבוהים.