מסירה הדרגתית (Progressive Delivery) באמצעות Argo Rollouts: הגדרה ואוטומציה
פריסה רגילה (Standard kubectl apply) מבצעת עדכון מתגלגל: פודים ישנים מוחלפים בחדשים אחד אחד. אם הגרסה החדשה שבורה, עד שמגלים זאת, 50% מהתעבורה כבר מופנית אליה. לפי סטטיסטיקות, 40% מהתקריות בסביבת ייצור קשורות לפריסות כושלות. אנו משתמשים ב-Argo Rollouts כדי ליישם מסירה הדרגתית (Progressive Delivery) — גישה שבה הגרסה החדשה של האפליקציה מקבלת תעבורה בהדרגה, עם בדיקות מדדים אוטומטיות בין השלבים. זה מקצר את זמן ההתאוששות הממוצע (MTTR) משעות לדקות (ירידה של 93% ל-2 דקות). במקום ניטור ידני, Rollouts מבצע בדיקות אוטומטיות בכל שלב. כאשר חריגת סף השגיאות, הפריסה נעצרת ומתבצע rollback. אתם יכולים לסמוך על המהנדסים המוסמכים שלנו עם 10 שנות ניסיון ב-Kubernetes—השירותים שלכם יעודכנו ללא זמן השבתה ועם סיכון מינימלי. הזמינו ביקורת (audit) על התשתית שלכם—גלו כיצד ליישם מסירה הדרגתית ללא זמן השבתה. עלות ביקורת: $500, יישום מ-$2000 עד $5000.
אילו בעיות Argo Rollouts פותר?
- MTTR ארוך. ללא rollback אוטומטי, מהנדסים מבלים בממוצע 30 דקות בזיהוי וב-rollback. Rollouts מקצר זאת ל-2 דקות, ומפחית עלויות תקריות ב-60%.
- חוסר שליטה בתעבורה. עדכון מתגלגל אינו יכול להפנות רק חלק מהתעבורה לגרסה החדשה. פריסת Canary עם משקל של 5% מאפשרת בדיקה על משתמשים אמיתיים, תוך מזעור ההשפעה.
- שגיאות אנוש. ניטור ידני של מדדים וקבלת החלטות ל-rollback הוא מקור לשגיאות. Rollouts הופך את הניתוח וה-rollback לאוטומטיים בהתבסס על ספים מוגדרים, ומבטל את הסיכון.
כיצד אנו מיישמים מסירה הדרגתית
הצוות שלנו פועל לפי המתודולוגיה הבאה:
- ביקורת תשתית. קביעת ה-ingress בשימוש (nginx, Istio, Traefik), המדדים הנוכחיים וההתראות.
- התקנת Argo Rollouts. פריסת ה-controller ב-namespace ייעודי, הגדרת RBAC.
- העברת השירות הראשון. בחירת שירות בסיכון נמוך, המרת Deployment ל-Rollout עם אסטרטגיה פשוטה.
- פיתוח AnalysisTemplate. חיבור Prometheus, כתיבת שאילתות לשיעור שגיאות וזמן השהיה (latency).
- בדיקות. ביצוע rollout עם שגיאה מכוונת, אימות rollback אוטומטי.
- אינטגרציה עם ArgoCD. הגדרת pipeline של GitOps עם כללי סנכרון.
- תיעוד והדרכה. מתן הוראות לצוות וביצוע webinar של שעתיים.
ערימת הטכנולוגיות: Kubernetes 1.29+, Helm 3, Prometheus + Grafana, nginx-ingress או Istio, ArgoCD. כל התצורות מנוהלות בגרסאות ב-Git. דוגמה ל-Rollout מינימלי:
---
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: api-service
spec:
replicas: 10
strategy:
canary:
canaryService: api-canary-svc
stableService: api-stable-svc
steps:
- setWeight: 5
- pause: {duration: 10m}
- analysis:
templates:
- templateName: latency-and-errors
- setWeight: 50
- pause: {duration: 30m}
- setWeight: 100
מדוע AnalysisTemplate הוא מרכיב האבטחה המרכזי
AnalysisTemplate הוא CRD המגדיר בדיקות מדדים בין שלבי ה-rollout. דוגמה עבור Prometheus:
---
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: latency-and-errors
spec:
metrics:
- name: error-rate
interval: 2m
count: 5
successCondition: result[0] <= 0.01
failureLimit: 2
provider:
prometheus:
address: http://prometheus-operated:9090
query: |
sum(rate(http_requests_total{status=~"5.."}[2m])) / sum(rate(http_requests_total[2m]))
- name: p99-latency
interval: 2m
count: 5
successCondition: result[0] < 0.5
failureLimit: 2
provider:
prometheus:
address: http://prometheus-operated:9090
query: |
histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[2m])) by (le))
---
אם שיעור השגיאות > 1% או זמן השהיה p99 > 500ms פעמיים ברציפות, ה-rollout מתבצע rollback אוטומטית. ללא התערבות אנושית. זה מהיר פי 6 מניטור ידני.
כיצד Argo Rollouts מנהל תעבורה
הכלי תומך בתוספים לניתוב. עבור nginx-ingress, הוא משתמש ב-canary annotations. עבור Istio, הוא משתמש ב-VirtualService עם משקלים. בשני המקרים, ה-controller מעדכן אוטומטית את המשקל בכל שלב. לבדיקות פנימיות, ניתן להגדיר ניתוב מבוסס כותרות (header-based routing): בקשות עם הכותרת apiVersion: argoproj.io/v1alpha1 kind: Rollout metadata: name: api-service spec: replicas: 10 strategy: canary: canaryService: api-canary-svc stableService: api-stable-svc steps: - setWeight: 5 - pause: {duration: 10m} - analysis: templates: - templateName: latency-and-errors - setWeight: 50 - pause: {duration: 30m} - setWeight: 100 מופנות ל-canary ללא קשר למשקל. זה מאפשר ל-QA לבדוק את הגרסה החדשה לפני פריסה רחבה.
| קריטריון | Deployment רגיל | Argo Rollouts |
|---|---|---|
| שליטה בתעבורה | לא | Canary, Blue-Green, מבוסס כותרות |
| Rollback אוטומטי | לא | כן, בהתבסס על מדדים |
| זמן זיהוי בעיות | דקות | שניות |
| אינטגרציית CI/CD | בסיסי | מלא (ArgoCD, Jenkins) |
מתי להשתמש ב-Rollout במקום ב-Deployment
אם השירות הוא קריטי לעסק, דורש עדכונים ללא זמן השבתה, או שיש לכם מדדים ב-Prometheus—השתמשו ב-Rollout. עבור שירותים פנימיים פשוטים ללא SLIs, Deployment רגיל מספיק.
ניהול ידני של rollout
ניתן לבטל, לקדם או לבצע rollback ל-rollout באופן ידני:
kubectl argo rollouts abort api-service
kubectl argo rollouts promote api-service
kubectl argo rollouts get rollout api-service --watch תהליך היישום ולוחות זמנים
| שלב | תיאור | לוח זמנים |
|---|---|---|
| ביקורת | הערכת תשתית, בחירת שירות ראשון | 0.5 יום |
| התקנה | התקנת Argo Rollouts, הגדרת RBAC | יום אחד |
| העברה | המרת Deployment ל-Rollout, הגדרת אסטרטגיה | יום אחד |
| AnalysisTemplate | כתיבת שאילתות למדדי שירות | יום אחד |
| בדיקות | אימות rollout ו-rollback | יום אחד |
| אינטגרציה | ArgoCD, תיעוד, הדרכה | יום אחד |
לוח זמנים כולל: מ-5 ימי עסקים עד שבועיים, תלוי במורכבות. התמחור מחושב באופן פרטני לאחר הביקורת.
מה כלול
- תיעוד: הוראות הפעלת Rollout, תיאור AnalysisTemplate, playbook ל-rollback.
- גישה: מתן גישה למאגר Git עם התצורות, לוחות מחוונים של Grafana.
- הדרכה: webinar של שעתיים לצוות, הקלטה ושאלות ותשובות.
- תמיכה: שבועיים לאחר היישום—ייעוץ ותיקוני באגים.
טעויות נפוצות ביישום
- חוסר ב-failureLimit. ללא מגבלה, מדידה רעה אחת יכולה לבצע rollback ל-rollout. אנו ממליצים על failureLimit: 2 או 3.
- ספים אגרסיביים מדי. הגדירו תנאים ראשוניים עם מרווח ביטחון, ואז הדקו בהדרגה.
- התעלמות מניתוב מבוסס כותרות. תמיד כדאי לאפשר לצוות לבדוק canary לפני פתיחת תעבורה.
הקימו מסירה הדרגתית ללא סיכונים בעזרתנו. צוות המהנדסים המוסמכים שלנו עם 10 שנות ניסיון ב-Kubernetes ו-CI/CD יבצע ביקורת על התשתית שלכם ביום אחד. צרו קשר כדי לקבל הצעה מותאמת אישית. הזמינו ייעוץ.







