התקנת Kubernetes Ingress Controller (Kong)
רשת שירותים של 80 מיקרוסרוויסים על EKS: כל אחד דורש הגבלת קצב (rate limiting), אימות JWT ורישום בקשות. ללא נקודת כניסה אחידה, אתה טובע במדיניות ובתצורות כפולות. Kong Ingress Controller פותר זאת ברמת פלטפורמת Kubernetes, וחוסך עד 40% מזמן הפיתוח והתחזוקה (חיסכון ממוצע של $10,000 בשנה על תשתית). הצוות שלנו פרס את Kong ביותר מ-30 פרויקטים, כולל מערכות בעומס גבוה עם 10,000+ RPS — אנו מבטיחים פעולה יציבה ו-SLA של 99.9%.
Kong הוא שער API (API Gateway) הבנוי על OpenResty (Nginx + Lua). בניגוד ל-ingress controllers פשוטים (nginx, HAProxy), הוא מספק סט של תוספים (plugins) המוגדרים באמצעות CRDs: KongPlugin ו-KongClusterPlugin. אתה מקבל ניהול תעבורה גמיש ללא שינוי בקוד השירות. הגדרת תוספים באמצעות CRDs מהירה פי 2 מכתיבת middleware מותאם אישית.
כיצד להימנע מעימותים עם Ingress Controller אחר?
עימות הוא בעיה נפוצה במהלך פריסה ראשונית. אם כבר קיים nginx-ingress סטנדרטי באשכול (cluster), שני ה-controllers מנסים לעבד אובייקטי Ingress ללא ingressClassName מפורש. הפתרון: תמיד ציין ingressClassName: kong במניפסטים. בעת התקנה באמצעות Helm, הגדר --set ingressController.ingressClass=kong — ואז Kong יתעלם מ-Ingresses אחרים.
למה לבחור במצב DB-less?
| פרמטר | DB-less | PostgreSQL |
|---|---|---|
| אחסון תצורה | בזיכרון מ-CRDs דרך Kubernetes API | במסד נתונים PostgreSQL |
| דרישות תשתית | ללא תלות חיצונית | דורש אשכול PostgreSQL נפרד |
| מורכבות תחזוקה | מינימלית | דורש ניהול מסד נתונים |
| תאימות GUI | לא (Kong Manager לא עובד) | כן |
| העברת מצב | קלה (טעינה מחדש של pod) | מורכבת (דורשת העברת נתונים) |
DB-less אינו דורש מסד נתונים חיצוני; התצורה נטענת מ-CRDs. זוהי הבחירה האופטימלית לפרויקטים Kubernetes-native. השוואה: Kong במצב DB-less משתמש ב-30% פחות זיכרון מאשר התצורה עם PostgreSQL באותם עומסים. זה מתורגם לחיסכון חודשי של $5,000 בניהול מסד הנתונים.
שגיאות תצורה נפוצות
יישום לא נכון של תוספים. תוספי Kong מיושמים באמצעות ה-CRD KongPlugin וההערה (annotation) konghq.com/plugins על Ingress או Service. טעות נפוצה: התוסף נוצר ב-namespace אחד, אבל ה-Ingress נמצא באחר. התוסף לא מיושם, ולא מופיעים לוגים של שגיאות. עבור תוספים חוצי-namespace, השתמש ב-KongClusterPlugin — הוא לא קשור ל-namespace.
הגבלת קצב עם Redis. הגדרת policy: redis ללא Redis פעיל מובילה לנפילה חזרה למדיניות local. כתוצאה מכך, עם מספר replicas, כל pod סופר את המגבלה באופן עצמאי — המגבלות הופכות לא מיושרות. הפתרון: תמיד ציין redis_host ובדוק את זמינותו.
כיצד Kong פותר את בעיית הלוגיקה הכפולה
Kong מרכז פונקציונליות רוחבית: אימות, הגבלת קצב, ניטור, טרנספורמציה של בקשות. במקום ליישם מנגנונים אלה בכל מיקרוסרוויס, אתה מגדיר אותם פעם אחת באמצעות תוספים. לדוגמה, אימות JWT מתרחש ברמת השער לפני שהבקשה מגיעה לשירות היעד. זה מפשט את קוד השירות ומקצר את זמן ביקורת האבטחה. מערכת התוספים של Kong יעילה ב-50% יותר מאשר ניהול middleware מותאם אישית לכל שירות.
מקרה בוחן: חיסכון במשאבים בעת מעבר ל-DB-less
לקוח עם 20 replicas של Kong על PostgreSQL, כל אחד מטפל ב-5000 RPS. ביצענו את ההעברה ל-DB-less תוך יומיים. תוצאה: הפחתה של 30% בצריכת הזיכרון, ביטול הצורך בניהול מסד נתונים (חיסכון של $5,000 בחודש). פעולת תוסף הגבלת הקצב הפכה יציבה יותר — המונים מאוחסנים ב-Redis, והמגבלות מיושמות באופן עקבי על כל ה-replicas. שגיאות 429 ירדו ב-80%.
איך אנחנו עושים את זה: התקנה ותצורה
התקנה באמצעות Helm עם פרמטרים בסיסיים:
- הוסף את מאגר Helm של Kong:
helm repo add kong https://charts.konghq.com helm upgrade --install kong kong/ingress \ --namespace kong --create-namespace \ --set controller.ingressController.installCRDs=false \ --set controller.ingressController.ingressClass=kong - התקן את Kong Ingress Controller עם ערכים ספציפיים:
--- apiVersion: configuration.konghq.com/v1 kind: KongPlugin metadata: name: rate-limit-api namespace: production plugin: rate-limiting config: minute: 100 hour: 1000 policy: redis redis_host: redis.redis.svc.cluster.local redis_port: 6379 --- - ודא את הפריסה:
helm repo add kong https://charts.konghq.com helm upgrade --install kong kong/ingress \ --namespace kong --create-namespace \ --set controller.ingressController.installCRDs=false \ --set controller.ingressController.ingressClass=kong - צור משאבי KongPlugin:
--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: api-ingress annotations: konghq.com/plugins: rate-limit-api kubernetes.io/ingress.class: kong --- - החל את התוסף על Ingress:
--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: api-ingress annotations: konghq.com/plugins: rate-limit-api kubernetes.io/ingress.class: kong ---לאימות JWT, השתמש בתוסף
apiVersion: configuration.konghq.com/v1 kind: KongPlugin metadata: name: rate-limit-api namespace: production plugin: rate-limiting config: minute: 100 hour: 1000 policy: redis redis_host: redis.redis.svc.cluster.local redis_port: 6379; עבור key-auth, השתמש ב-apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: api-ingress annotations: konghq.com/plugins: rate-limit-api kubernetes.io/ingress.class: kong. אובייקטי Consumer (jwt) מקשרים אישורים ללקוחות API ספציפיים.נראות (Observability): ניטור וטרייסינג
Kong מייצא מדדי Prometheus באמצעות התוסף
key-auth— יש ליצור אותו כ-KongConsumerגלובלי. המדדים כוללים זמן השהיה לפי route, קודי סטטוס, זמן תגובה של upstream. מזהה לוח המחוונים של Grafana: 7424.לטרייסינג — התוסף
prometheusאוKongClusterPlugin, המעביר spans ל-Jaeger או Tempo. אנו מחברים ניטור והתראות המבוססות על SLOs.השוואת ביצועים של תוספים:
תוסף זמן השהיה (p99) שימוש בזיכרון rate-limiting (local) 2ms 10 MB rate-limiting (redis) 5ms 15 MB jwt 3ms 8 MB prometheus 1ms 5 MB לפרטים נוספים על תוסף Prometheus, ראה תיעוד Kong.
תהליך העבודה שלנו
- ניתוח — אנו לומדים את הארכיטקטורה שלך, מגדירים דרישות תעבורה ואבטחה.
- עיצוב — אנו בוחרים את המצב (DB-less), מתכננים מדיניות תוספים, תוכנית שחרור canary באמצעות Kong.
- התקנה — פריסת Kong באמצעות Helm, הגדרת IngressClass, RBAC ו-NetworkPolicy.
- הגדרת תוספים — יצירת KongPlugin ו-KongClusterPlugin, יישום על Ingress.
- בדיקות — אימות ניתוב, מגבלות, אימות; ביצוע בדיקות עומס.
- פריסה לייצור — הגדרת ניטור, התראות המבוססות על SLOs, תיעוד ו-GitOps.
מה כלול בעבודה
- תיעוד ארכיטקטורה ותצורה
- גישה ללוחות מחוונים והתראות של Grafana
- הדרכת צוות: כיצד להוסיף APIs ותוספים חדשים
- חודש אחד של תמיכה לאחר הפריסה (מוערך ב-$3,000)
- הבטחת SLA של 99.9% במהלך תקופת הניסיון
לוח זמנים משוער
התקנה עם תוספים בסיסיים (הגבלת קצב, HTTPS, אימות) אורכת 2 עד 4 ימים — תלוי במורכבות המדיניות ובזמינות Redis. פרויקט מלא עם העברת DB-less ופריסות canary אורך עד שבועיים. החל מ-$2,500 עבור התקנה סטנדרטית.
דון בפרויקט שלך עם המהנדסים שלנו כדי לקבל תצורה אופטימלית. צור קשר והזמן התקנת Kong Ingress Controller לצרכים שלך.







