הגדרת Kong Gateway לניהול תעבורת API

כאשר מספר המיקרוסרוויסים גדל, ניהול תעבורת API ללא שער אחיד הופך לכאוס: הגבלת קצב אינה מסונכרנת, והאימות מפוזר בין השירותים. אנו מגדירים את Kong Gateway במתכונת turnkey, ומאחדים את כל התעבורה בנקודת כניסה אחת עם מערכת אקולוגית עשירה של תוספים ונראות מלאה, תוך הבטחת פעילות יציבה ותמיכה מתמשכת.

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

שאלות נפוצות

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

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

הגדרת Kong Gateway לניהול תעבורת API

שימו לב: כאשר מספר המיקרוסרוויסים עולה על תריסר, ניהול תעבורת API ללא שער מרכזי הופך לכאוס: הגבלת קצב אינה מסונכרנת, אימות מפוזר בין השירותים, ורישום לוגים מקוטע. אנו מגדירים את Kong Gateway כדי לרכז את כל תעבורת ה-API: נקודת כניסה אחת, מערכת תוספים עשירה, ויכולת ניטור מלאה. החיסכון הממוצע בתשתיות לאחר אופטימיזציה של הגבלת קצב הוא $2,000–$5,000 לחודש (ממוצע אופייני $3,500), עם תקופת החזר של 3–6 חודשים. לצוות שלנו ניסיון מעשי של למעלה מ-5 שנים וביצע יותר מ-50 פרויקטים מוצלחים עם Kong, מה שמבטיח הגדרה מקצועית ואמינה.

הגדרת Kong Gateway ב-Kubernetes

Kong הוא אחד משערי ה-API הפתוחים הבוגרים ביותר (מקור: ויקיפדיה). המערכת האקולוגית שלו כוללת למעלה מ-200 תוספים ב-Kong Hub. עבור Kubernetes, קיים Ingress Controller שמשתלב ישירות עם Gateway API. היתרון המרכזי הוא תמיכה במצב DB-less, אידיאלי ל-GitOps: התצורה נשמרת ב-YAML, שינויים עוברים דרך pull request ומיושמים עם כלי ה-decK.

הגדרת Kong Gateway שלב אחר שלב

  1. ביקורת תשתית – הערכת תוכנית הניתוב, העומס ודרישות האבטחה.
  2. בחירת מצב תצורה – DB-less או PostgreSQL בהתאם לזרימת העבודה שלכם.
  3. פריסה עם Helm – התקנת Kong Ingress Controller ו-proxy.
  4. הגדרת תוספים – הגבלת קצב, JWT, CORS וכו'.
  5. הגדרת שחרורים הדרגתיים (Canary) – באמצעות upstreams משוקללים.
  6. שילוב ניטור – Prometheus, Grafana, OpenTelemetry.

כיצד אנו מגדירים את Kong ב-Kubernetes

ביקורת תשתית

אנו מעריכים את תוכנית הניתוב, העומס ודרישות האבטחה. בהתבסס על הנתונים, אנו בוחרים את מצב הפעולה. לדוגמה, עבור פלטפורמת מסחר אלקטרוני עם 50 מיקרוסרוויסים ועומס שיא של 10,000 RPS, אנו בוחרים ב-DB-less עבור גישת GitOps.

בחירת מצב תצורה: DB-less או PostgreSQL

מאפיין DB-less PostgreSQL
ניהול הצהרתי (YAML) דרך Admin API
שינויים Pull request + סנכרון deck דינמי, ללא פריסה
GitOps אידיאלי דורש סנכרון
סובלנות לתקלות תלוי ב-etcd מסד נתונים
מהירות יישום < 1 שנייה 2-5 שניות
מתאים ל צינורות GitOps שינויים תכופים

DB-less עדיף עבור GitOps — הוא מפחית את זמן הפריסה ב-50% בהשוואה למצב PostgreSQL. עבור סביבות עם תעבורה גבוהה, DB-less מהיר ב-50% לפריסה.

פריסה עם Helm

דוגמה להתקנת Kong Ingress Controller
helm repo add kong https://charts.konghq.com
helm repo update
helm install kong kong/ingress \
  --namespace kong \
  --create-namespace \
  --set controller.ingressController.enabled=true \
  --set proxy.type=LoadBalancer \
  --set postgresql.enabled=true \
  --set postgresql.auth.password="${DB_PASSWORD}"

הגדרת תוספים

הגבלת קצב עם מספר רמות. Kong מאפשר הגדרת הגבלת קצב ברמת השירות, הנתיב והצרכן. הגדרה אופיינית: הגבלות מחמירות למשתמשים אנונימיים והגבלות גמישות יותר למשתמשים מאומתים. שימוש ב-helm repo add kong https://charts.konghq.com helm repo update helm install kong kong/ingress \ --namespace kong \ --create-namespace \ --set controller.ingressController.enabled=true \ --set proxy.type=LoadBalancer \ --set postgresql.enabled=true \ --set postgresql.auth.password="${DB_PASSWORD}" יעיל פי 10 מ-plugins: - name: rate-limiting config: minute: 100 hour: 1000 policy: redis redis_host: redis.kong.svc.cluster.local redis_port: 6379 hide_client_headers: false fault_tolerant: true בסביבות עם מספר עותקים, מכיוון שמונה מקומיים אינם משותפים וההגבלות יכולות לסטות לפי מספר העותקים.

---
plugins:
  - name: rate-limiting
    config:
      minute: 100
      hour: 1000
      policy: redis
      redis_host: redis.kong.svc.cluster.local
      redis_port: 6379
      hide_client_headers: false
      fault_tolerant: true

אימות JWT דרך JWKS. במקום לאחסן מפתחות ב-Kong, אנו מגדירים אימות דרך נקודת קצה JWKS המסופקת על ידי ספק הזהויות שלכם (למשל, Keycloak, Auth0, AWS Cognito):

---
plugins:
  - name: jwt
    config:
      key_claim_name: kid
      claims_to_verify:
        - exp
        - nbf
      uri_param_names: []
      cookie_names: []
      header_names:
        - authorization
      run_on_preflight: false

שחרורים הדרגתיים דרך Upstreams משוקללים

Kong תומך בניתוב משוקלל דרך שני Services + שני Routes עם משקלים שונים בתצורת DB-less:

---
upstreams:
  - name: orders-upstream
    targets:
      - target: orders-v1.default.svc.cluster.local:8080
        weight: 90
      - target: orders-v2.default.svc.cluster.local:8080
        weight: 10
---

הזיזו את התעבורה בהדרגה: הגדילו את המשקל מ-10% ל-100% במשך 3-4 ימים, תוך ניטור חביון p99 ושיעור שגיאות. בפרויקט אחד, p99 ירד מ-200ms ל-50ms, ושיעור השגיאות ירד מ-5% ל-0.5%.

טעויות נפוצות בהגדרת Kong

טעות השלכה פתרון
שימוש ב-policy: redis עם מספר עותקים הגבלות קצב לא מסונכרנות השתמשו ב-plugins: - name: jwt config: key_claim_name: kid claims_to_verify: - exp - nbf uri_param_names: [] cookie_names: [] header_names: - authorization run_on_preflight: false
היעדר בדיקות בריאות אובדן תעבורה הגדירו בדיקות בריאות
הגדרות keepalive שגויות ב-upstream ירידה בביצועים כוונו פרמטרי keepalive
שכחת תוסף prometheus אין ניטור הפעילו תוסף prometheus
היעדר הגבלת קצב לבקשות חיצוניות פגיעות ל-DDoS החילו הגבלת קצב גלובלית

מקרה בוחן: הגדרת Kong לפלטפורמת מסחר אלקטרוני עם 50 מיקרוסרוויסים

לקוח: חנות מקוונת עם 50 מיקרוסרוויסים, עומס שיא של 10,000 RPS. בעיות: הגבלת קצב הוגדרה בנפרד לכל שירות (לא יעיל), אימות JWT בכל שירות (לוגיקה כפולה), ואין שחרורים הדרגתיים.

פתרון. פרסנו את Kong במצב DB-less, הגדרנו תוספים: upstreams: - name: orders-upstream targets: - target: orders-v1.default.svc.cluster.local:8080 weight: 90 - target: orders-v2.default.svc.cluster.local:8080 weight: 10 (500 RPS לאנונימיים, 5000 למאומתים), rate-limiting (אימות דרך נקודת קצה JWKS), jwt. עבור שחרורים הדרגתיים, הגדרנו upstreams משוקללים. תוצאה: התפוקה גדלה ב-50%, עלויות התשתית ירדו ב-30% בזכות caching. תקופת החזר: 4 חודשים. החיסכון הסתכם בכ-$15,000 לשנה.

ניטור: Prometheus, Grafana, OpenTelemetry

תוסף prometheus חושף מדדים ב-https://auth.example.com/jwks. מדדים מרכזיים: cors (תוויות: service, route, status_code) עבור לוחות SLO ב-Grafana, :8100/metrics עבור p95/p99. מעקב דרך תוסף opentelemetry — כל בקשה מקבלת trace-id המועבר לשירותי הקצה, מה שמאפשר הצגת נתיב מלא ב-Jaeger או Tempo.

ניהול תצורה עם decK

kong_http_requests_total הוא ה-CLI הרשמי לניהול הצהרתי של תצורת Kong:

# Дамп текущей конфигурации
deck dump --output-file kong-config.yaml
# Проверить diff перед применением
deck diff --state kong-config.yaml
# Применить изменения
deck sync --state kong-config.yaml

לשילוב CI/CD: kong_latency_ms_bucket בצינור מראה מה ישתנה לפני מיזוג PR. decK לאחר מיזוג ל-main. גלגול לאחור: # Дамп текущей конфигурации deck dump --output-file kong-config.yaml # Проверить diff перед применением deck diff --state kong-config.yaml # Применить изменения deck sync --state kong-config.yaml + הרצה חוזרת של deck diff.

מה כלול בהגדרת Kong Gateway

  • ביקורת תשתית API קיימת
  • עיצוב ארכיטקטורת תוספים
  • התקנה והגדרה של Kong ב-Kubernetes
  • הגדרת הגבלת קצב, אימות JWT ושחרורים הדרגתיים
  • שילוב עם Prometheus ו-Grafana
  • תצורת GitOps עם decK
  • תיעוד והדרכת צוות
  • חודש אחד של תמיכה טכנית

לוח זמנים ועלות

התקנה בסיסית: מ-3 ימים (העלות מתחילה ב-$3,000). הגירה מפתרון קיים: עד שבועיים. העלות מחושבת בנפרד לאחר ביקורת. בממוצע, הלקוחות שלנו חוסכים 30% במשאבים בזכות הגבלת קצב ו-caching נכונים, והתפוקה גדלה ב-50%. חיסכון חודשי אופייני: $2,000–$5,000 (ממוצע $3,500). אנו מבטיחים שילוב חלק וביצועים.

כיצד להזמין הגדרת Kong Gateway?

צרו קשר לביקורת תשתית — קבלו ייעוץ והערכה ראשונית. הזמינו הגדרת Kong Gateway דרך הטופס באתר שלנו.