מדריך מקיף להקמת תשתית ענן היברידי ושילובה

כשמערכת מדור קודם במרכז נתונים אינה מוכנה למעבר לענן, ושירותים חדשים דורשים את הגמישות של Kubernetes, אנחנו מקימים תשתית היברידית במפתח מלא. הצוות שלנו מאחד בין מתקן מקומי לענן למעגל אחד עם רשת, DNS ואבטחה משותפים, ומבטיח פעילות אמינה עם תמיכה מתמשכת.

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

שאלות נפוצות

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

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

הקמת תשתית ענן היברידית

תארו לעצמכם: יש לכם מערכת מדור קודם במרכז נתונים עם עשרות תלותיות חומרה ורישיונות. העברתה לענן היא סיכון של חודשים רבים. אבל אתם רוצים להריץ מיקרוסרביסים חדשים על Kubernetes ב-AWS. הפתרון הוא תשתית היברידית. אנו מגדירים אותה במפתח פתוח כך שהאתר המקומי והענן עובדים כקלאסטר אחד עם רשת משותפת, DNS ו-IAM.

היכן דברים בדרך כלל נשברים

הבעיה הנפוצה ביותר היא חוסר עקביות בכתובות IP. הרשת המקומית חיה ב-10.0.0.0/8, ה-VPC בענן ב-172.16.0.0/12, ובמבט ראשון הכל נראה בסדר. אבל כשמוסיפים Transit Gateway, peering למספר VPCs, ו-VPN ארגוני, CIDRs חופפים מתחילים לבלבל בשקט את הנתב. חבילות נופלות, שירותים הופכים ללא זמינים, ואף צד לא רואה שגיאה ברמה שלו.

נקודת הכאב השנייה היא DNS. בסביבה היברידית, db.internal.company.com מ-pod בענן חייב להיפתר לכתובת ה-IP של מסד נתונים מקומי, ו-api.svc.cluster.local מיישום מקומי חייב להיפתר ל-ClusterIP של שירות Kubernetes. זה נפתר באמצעות Route 53 Resolver עם כללי העברה ל-DNS המקומי, ו-Conditional Forwarder בצד המקומי ל-Route 53. אם לא מגדירים את שני הכיוונים, חצי מהפתרונות ייכשלו עם NXDOMAIN.

אימות הוא גם לא טריוויאלי. יישומי ענן זקוקים לאישורים עבור מערכות מקומיות ולהיפך. IAM Roles for Service Accounts (IRSA) ב-EKS עובד מצוין בתוך AWS, אבל עבור משאבים מקומיים צריך או Vault עם AWS auth backend או סודות דרך AWS Secrets Manager המשוכפלים לקלאסטר עם External Secrets Operator.

Direct Connect או VPN: מה לבחור?

פרמטר Direct Connect Site-to-Site VPN
רוחב פס עד 10 Gbps (צבירה עד 100 Gbps) תלוי בקישור האינטרנט, בדרך כלל עד 1 Gbps
השהיה יציבה, צפויה משתנה עקב האינטרנט
SLA 99.99% 99.95% (תלוי בספק)
אבטחה בידוד פיזי, IPSec אופציונלי IPSec חובה
עלות גבוהה יותר (השכרת פורט, תעבורה) נמוכה יותר (רק עלות שער VPN)
זמן פריסה 2–4 שבועות (תלוי בספק) 1–2 ימים

מקור: תיעוד AWS Direct Connect ו-Site-to-Site VPN

עבור עומסי עבודה בייצור עם השהיה קריטית, Direct Connect אמין עד פי 10 יותר מ-VPN. עבור dev/staging או נפחים נמוכים, VPN מספיק.

כיצד אנו בונים את הרשת ההיברידית

קישוריות רשת היא הדבר הראשון שאנו מתכננים. אנו משתמשים ב-Transit Gateway כ-hub מרכזי. כל ה-VPCs מתחברים אליו, לא דרך peering אחד עם השני. זה ניתן להרחבה: הוסיפו VPC חדש — חברו אותו ל-TGW, והנתיבים לשאר מופיעים אוטומטית.

טופולוגיית רשת לפרויקט בגודל בינוני:

On-Premise (10.10.0.0/16) │ │ Direct Connect / VPN ▼ AWS Transit Gateway ├── Production VPC (10.20.0.0/16) │ ├── Private Subnet (10.20.1.0/24) — EKS nodes │ └── Private Subnet (10.20.2.0/24) — RDS ├── Staging VPC (10.30.0.0/16) └── Shared Services VPC (10.40.0.0/16) ├── Route 53 Resolver Inbound Endpoint └── Route 53 Resolver Outbound Endpoint 

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

כל תשתית הרשת היא בקוד. דוגמת Terraform עבור Route 53 Resolver:

resource "aws_route53_resolver_endpoint" "outbound" {
  name = "hybrid-outbound-resolver"
  direction = "OUTBOUND"
  security_group_ids = [aws_security_group.resolver.id]

  ip_address {
    subnet_id = aws_subnet.shared_services_a.id
  }

  ip_address {
    subnet_id = aws_subnet.shared_services_b.id
  }
}

resource "aws_route53_resolver_rule" "onprem" {
  domain_name = "internal.company.com"
  name = "forward-to-onprem"
  rule_type = "FORWARD"
  resolver_endpoint_id = aws_route53_resolver_endpoint.outbound.id

  target_ip {
    ip = "10.10.0.53"
    port = 53
  }

  target_ip {
    ip = "10.10.0.54"
    port = 53
  }
}

נתיבים בטבלת הנתיבים של Transit Gateway הם גם דקלרטיביים — אין לחיצות ידניות בקונסולה שאיש לא מתעד.

Kubernetes בסביבה היברידית

קלאסטר EKS עם קבוצת צמתים בתתי-רשת פרטיים אין לו גישה ישירה לאינטרנט. כדי למשוך תמונות מ-ECR, צריך VPC Endpoints עבור ECR ו-S3 (שכבות תמונה מאוחסנות ב-S3). לגישה למשאבים מקומיים, משתמשים בנתיבים דרך TGW. CoreDNS בקלאסטר מוגדר דרך ConfigMap עם Corefile:

דוגמת Corefile ל-DNS היברידי
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
        }
        forward internal.company.com 10.10.0.53 10.10.0.54
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

כך, pods ב-EKS פותרים את On-Premise (10.10.0.0/16) │ │ Direct Connect / VPN ▼ AWS Transit Gateway ├── Production VPC (10.20.0.0/16) │ ├── Private Subnet (10.20.1.0/24) — EKS nodes │ └── Private Subnet (10.20.2.0/24) — RDS ├── Staging VPC (10.30.0.0/16) └── Shared Services VPC (10.40.0.0/16) ├── Route 53 Resolver Inbound Endpoint └── Route 53 Resolver Outbound Endpoint ישירות ל-DNS המקומי, תוך עקיפת פותרי חיצוניים.

אבטחה והפרדה

Security Groups ב-AWS הם stateful. Network ACLs הם stateless. עבור היברידי, חשוב לאפשר תעבורה בשני הכיוונים ברמת ה-NACL, אחרת תעבורה חוזרת תיחסם. טעות נפוצה: פותחים כלל כניסה ב-SG עבור תת-הרשת המקומית אבל שוכחים את ה-NACL ברמת תת-הרשת, והתעבורה עדיין לא עוברת.

AWS Network Firewall או NGFW מקומי (Palo Alto, Fortinet) לבדיקת תעבורה בין אתרים — הבחירה תלויה בדרישות רגולציה. אם הנתונים הם PCI DSS או בריאותיים, בדיקה היא חובה.

ניטור היברידי

Prometheus עם remote_write ל-AWS Managed Prometheus, exporters מקומיים שולחים מדדים דרך נקודת קצה מאובטחת. Grafana מספק נקודת תצוגה אחת לשני האתרים. ניטור VPN/Direct Connect דרך מדדי CloudWatch resource "aws_route53_resolver_endpoint" "outbound" { name = "hybrid-outbound-resolver" direction = "OUTBOUND" security_group_ids = [aws_security_group.resolver.id] ip_address { subnet_id = aws_subnet.shared_services_a.id } ip_address { subnet_id = aws_subnet.shared_services_b.id } } resource "aws_route53_resolver_rule" "onprem" { domain_name = "internal.company.com" name = "forward-to-onprem" rule_type = "FORWARD" resolver_endpoint_id = aws_route53_resolver_endpoint.outbound.id target_ip { ip = "10.10.0.53" port = 53 } target_ip { ip = "10.10.0.54" port = 53 } } ו-apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: | .:53 { errors health kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa } forward internal.company.com 10.10.0.53 10.10.0.54 forward . /etc/resolv.conf cache 30 loop reload loadbalance } — התראה על כשל במנהרה מגיעה ל-PagerDuty לפני שהמשתמש מתקשר.

מה העבודה שלנו כוללת (תוצרים)

  • ביקורת של תשתית הרשת הנוכחית ותלותיות יישומים (מלאי CIDR, ניתוח דרישות השהיה ותפוקה).
  • עיצוב טופולוגיית רשת תוך התחשבות ב-CIDR, השהיה ותפוקה.
  • הקמת Direct Connect או VPN, הגדרת Transit Gateway.
  • פריסת פתרון DNS (Route 53 Resolver, Conditional Forwarder).
  • שילוב IAM (IRSA, Vault, או External Secrets Operator).
  • הקמת ניטור והתראות (Prometheus, Grafana, CloudWatch).
  • תיעוד מלא של התשתית בקוד (Terraform).
  • הדרכת צוות והעברת גישה.
  • תמיכה בתקופת האחריות (שבועיים לאחר ההעברה).

עלויות להקמה היברידית טיפוסית: VPN בסיסי מ-$500 לחודש, Direct Connect מ-$2000 לחודש. חיסכון מהשהיה מופחתת ואמינות מוגברת יכול להיות 20–30% בעלויות תפעול.

סיפקנו מעל 30 פרויקטים. צרו קשר לייעוץ: נבחן את הפרויקט שלכם ביומיים ונציע פתרון אופטימלי.

הערכות לוחות זמנים

היקף מה כלול לוח זמנים עלות משוערת לחודש
היברידי בסיסי VPN + VPC אחד + העברת DNS 2–3 שבועות $500–$1,000
בינוני Direct Connect + TGW + EKS + Vault 6–10 שבועות $2,000–$5,000
ארגוני רב-אזורי + רגולציה + NGFW + IaC מלא 3–5 חודשים $10,000+

לפני התחלה, אנו מבצעים ביקורת רשת: מלאי CIDR, ניתוח תלותיות יישומים, דרישות השהיה ותפוקה. התמחור מחושב באופן אישי לאחר הביקורת.

תיעוד רשמי של AWS Direct Connect