יצירת רשת משנה גלובלית לאיזון עומסים חיצוני

בדף הזה מוסבר איך יוצרים רשת משנה גלובלית ב-Google Distributed Cloud (GDC)‎ עם air gap, ואיך משתמשים ברשת המשנה הזו למאזן עומסים חיצוני (ELB).

רשתות משנה גלובליות מאפשרות להגדיר רשתות משנה שיכולות להשתמש בפעולות של איזון עומסים חיצוני בכמה אזורים בארגון ב-GDC. איזון עומסים משפר את הביצועים, האמינות והזמינות של אפליקציות ושירותים, על ידי פיזור התנועה ברשת בין כמה שרתים. מידע נוסף על רשתות משנה גלובליות לאיזון עומסים זמין במאמר מידע על רשתות משנה לאיזון עומסים.

הדף הזה מיועד למפתחים בקבוצת מפעילי האפליקציות שרוצים לנהל את איזון העומסים בארגון. מידע נוסף זמין במאמר קהלי היעד של מסמכי התיעוד של GDC עם air gap.

לפני שמתחילים

כדי ליצור רשת משנה גלובלית ולהגדיר אותה ל-ELB, צריך:

  • להיות הבעלים של הפרויקט שבו מגדירים את מאזן העומסים. למידע נוסף, קראו את המאמר יצירת פרויקט.
  • התפקידים הנדרשים לניהול זהויות והרשאות גישה:

    • מבקשים ממנהל החשבון הארגוני ב-IAM להקצות לכם את התפקיד "אדמין של מאזן עומסים" (load-balancer-admin).
    • מבקשים ממנהל החשבון הארגוני ב-IAM להקצות לכם את התפקיד "אדמין של מאזן עומסים גלובלי" (global-load-balancer-admin).
    • מבקשים ממנהל החשבון הארגוני ב-IAM להקצות לכם את התפקיד "אדמין ארגוני של רשת משנה" (subnet-org-admin).
    • מבקשים ממנהל החשבון הארגוני ב-IAM להקצות לכם את התפקיד "אדמין של פרויקט רשת משנה" (subnet-project-admin).

    למידע נוסף, קראו את תיאורי התפקידים המוגדרים מראש.

יצירת רשת משנה גלובלית ראשית

רשת המשנה הגלובלית הראשית שתיצרו בקטע הזה משמשת כמאגר כתובות ה-IP שממנו נלקחות כתובות ה-IP של ה-ELB. רשת המשנה חייבת לכלול את התווית ipam.gdc.goog/network-segment: data. אפשר לציין את ההורה של רשת המשנה באמצעות השדה spec.parentReference.name. יש שתי אפשרויות להגדרת ה-CIDR של רשת המשנה הראשית:

למידע נוסף על ההבדל בין הגדרות CIDR סטטיות ודינמיות, קראו את המאמר הגדרת CIDR סטטית ודינמית.

יצירת רשת משנה באמצעות הגדרת CIDR סטטית

כדאי להשתמש בהגדרת CIDR סטטית כשצריך שליטה מדויקת במרחב כתובות ה-IP. סוג רשת המשנה הזו הוא Branch. למידע נוסף על סוגי רשתות המשנה (שורש, ענף ועלים), ראו היררכיית רשתות משנה.

כדי ליצור רשת משנה ראשית גלובלית עם הגדרת CIDR סטטית, מוסיפים את בלוק ה-CIDR שבחרתם לשדה spec.ipv4Request.cidr:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
    ipam.gdc.goog/network-segment: data
  name: ELB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    cidr: STATIC_CIDR
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch
EOF

מחליפים את מה שכתוב בשדות הבאים:

  • ‫GLOBAL_API_SERVER: הנתיב של kubeconfig בשרת ה-API של הניהול הגלובלי. מידע נוסף זמין במאמר שרתי API גלובליים ואזוריים. אם עדיין לא יצרתם קובץ kubeconfig לשרת ה-API, תוכלו לקרוא פרטים נוספים בקטע כניסה.
  • ‫ELB_PARENT_SUBNET_NAME: השם שבחרתם לתת-הרשת הגלובלית הראשית של ה-ELB.
  • ‫STATIC_CIDR: בלוק ה-CIDR הספציפי שרוצים להקצות לרשת המשנה הראשית, למשל 10.0.10.0/27.
  • ‫PARENT_NAME: השם של רשת המשנה הראשית הקיימת שממנה נוצרה רשת המשנה החדשה.

כדי להגדיר את רשת המשנה הזו כך שתעבוד עם ELBs, צריך ליצור רשת משנה מסוג עלה בשביל ה-ELB.

יצירת רשת משנה באמצעות הגדרת CIDR דינמית

הגדרת ה-CIDR הדינמית מקצה באופן אוטומטי בלוק CIDR זמין בגודל שצוין מרשת המשנה ההורה. כך קל יותר לנהל את כתובות ה-IP, במיוחד בסביבות גדולות יותר. סוג רשת המשנה הזו הוא Branch. למידע נוסף על סוגי רשתות המשנה (שורש, ענף ועלים), ראו היררכיית רשתות משנה. כדי ליצור רשת משנה ראשית גלובלית עם CIDR דינמי, מגדירים את השדה spec.ipv4Request.prefixLength עם אורך הקידומת שנבחר:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
piVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
  ipam.gdc.goog/network-segment: data
  name: ELB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    prefixLength: PREFIX_LENGTH
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch
EOF

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ELB_PARENT_SUBNET_NAME: השם שבחרתם לתת-הרשת הראשית של ה-ELB, למשל lb-global-lancer-elb-subnet.
  • ‫STATIC_CIDR: בלוק ה-CIDR הספציפי שבו רוצים להשתמש, למשל 10.0.10.0/27. המשתנה הזה רלוונטי רק להגדרת CIDR סטטית.
  • ‫PARENT_NAME: השם של תת-הרשת הראשית הקיימת שממנה נוצרה תת-הרשת החדשה, למשל default-vpc-workload-cidr.
  • ‫PREFIX_LENGTH: אורך הקידומת שנבחרה ל-CIDR שהוקצה באופן דינמי, למשל 27. המשתנה הזה רלוונטי רק להגדרה הדינמית של CIDR.

כדי להגדיר את רשת המשנה הזו כך שתעבוד עם ELBs, צריך ליצור רשת משנה מסוג עלה בשביל ה-ELB.

יצירת רשת משנה מסוג עלה ל-ELB

אחרי שמגדירים את תת-הרשת הראשית הגלובלית, צריך ליצור תת-רשת משנית כדי להקצות כתובת IP אחת לשירות ה-ELB הגלובלי. הערך בשדה type של רשת המשנה הזו חייב להיות Leaf, והיא חייבת להיות באותו מרחב שמות של הפרויקט כמו המשאבים של מאזן העומסים, למשל ForwardingRule, ‏ BackendService ו-Backend.

כדי ליצור את רשת המשנה של העלה ולקשר אותה ל-ELB, מבצעים את השלבים הבאים:

  1. יוצרים תת-רשת עלה עם ערך prefixLength של 32, כי היא מיועדת להקצאה של כתובת IP אחת. הערך parentReference מפנה אל רשת המשנה הגלובלית הראשית שנוצרה קודם:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/allocation-preference: default
        ipam.gdc.goog/network-segment: data
      name: ELB_IP_SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_REF
        namespace: platform
      type: Leaf
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ELB_IP_SUBNET_NAME: השם שבחרתם לתת-הרשת של העלה, למשל lb-project-elb-ip.
    • ‫PROJECT_NAMESPACE: מרחב השמות של Kubernetes שתואם לפרויקט שבו נמצאים אובייקטי ה-ELB, לדוגמה lb-project.
    • ‫PARENT_REF: השם של רשת המשנה הראשית שרשת המשנה המשנית הזו מקבלת ממנה את כתובת ה-IP שלה, כמו רשת המשנה הגלובלית הראשית שיצרתם קודם.
  2. מחברים את תת-הרשת החדשה שנוצרה, שמכילה את כתובת ה-IP שהוקצתה, למשאב ForwardingRuleExternal של ה-ELB. במשאב ForwardingRuleExternal, מעדכנים את השדה spec.cidrRef.name כך שיפנה לשם של רשת המשנה שיצרתם בשלב הקודם:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ForwardingRuleExternal
    metadata:
      name: FRI_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ports:
        - port: PORT
          protocol: PROTOCOL
      backendServiceRef:
        name: BES_NAME
      cidrRef:
        name: LEAF_SUBNET_NAME
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫FRI_NAME: השם שבחרתם לאובייקט ForwardingRuleExternal, למשל nginx-elb-static-fr.
    • ‫PORT: מספר היציאה שבה ה-ELB מאזין לתנועה נכנסת, כמו 80.
    • ‫PROTOCOL: פרוטוקול הרשת שבו משתמש ה-ELB, כמו TCP או UDP.
    • ‫BES_NAME: השם של BackendService שמשויך למשאב ForwardingRuleExternal הזה, למשל nginx-bes.
    • ‫LEAF_SUBNET_NAME: השם של תת-הרשת שיצרתם בשלב הקודם, למשל lb-project-elb-ip.