התקנת בקר כניסה של Kubernetes (Kong)

ללא נקודת כניסה אחת ב-Kubernetes, ניהול תעבורה ומדיניות עבור מיקרוסרוויסים מרובים הוא מאתגר. אנו מגדירים את Kong Ingress Controller כפתרון turnkey, ומבצעים אוטומציה של ניתוב, אימות ומגבלות באמצעות CRDs. הצוות שלנו מספק פתרון אמין עם תמיכה מתמשכת שגדל עם העסק שלכם.

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

שאלות נפוצות

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

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

התקנת 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 עם פרמטרים בסיסיים:

  1. הוסף את מאגר 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
  2. התקן את 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
    ---
  3. ודא את הפריסה: 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
  4. צור משאבי KongPlugin:
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: api-ingress
      annotations:
        konghq.com/plugins: rate-limit-api
        kubernetes.io/ingress.class: kong
    ---
  5. החל את התוסף על 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 לצרכים שלך.