הגדרת 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 שלב אחר שלב
- ביקורת תשתית – הערכת תוכנית הניתוב, העומס ודרישות האבטחה.
- בחירת מצב תצורה – DB-less או PostgreSQL בהתאם לזרימת העבודה שלכם.
- פריסה עם Helm – התקנת Kong Ingress Controller ו-proxy.
- הגדרת תוספים – הגבלת קצב, JWT, CORS וכו'.
- הגדרת שחרורים הדרגתיים (Canary) – באמצעות upstreams משוקללים.
- שילוב ניטור – 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 דרך הטופס באתר שלנו.







