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

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

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

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

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

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

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

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

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

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

רשת המשנה הגלובלית הראשית שאתם יוצרים בקטע הזה משמשת כמאגר כתובות ה-IP שממנו נלקחות כתובות ה-IP של ה-ILB. מציינים את ההורים של רשת המשנה באמצעות השדה 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/vpc: default-vpc
  name: ILB_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, תוכלו לקרוא פרטים נוספים בקטע כניסה.
  • ‫ILB_PARENT_SUBNET_NAME: השם שנבחר לתת-הרשת הגלובלית הראשית של ה-ILB.
  • ‫STATIC_CIDR: בלוק ה-CIDR הספציפי שרוצים להקצות לרשת המשנה הראשית, למשל 10.0.10.0/27.
  • ‫PARENT_NAME: השם של רשת המשנה הראשית הקיימת שממנה נוצרה רשת המשנה החדשה.

כדי להגדיר את רשת המשנה הזו כך שתפעל עם מאזני עומסים פנימיים, צריך ליצור רשת משנה מסוג עלה למאזן העומסים הפנימי.

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

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

כדי ליצור רשת משנה ראשית גלובלית עם CIDR דינמי, מגדירים את השדה spec.ipv4Request.prefixLength עם אורך הקידומת שנבחר:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
    ipam.gdc.goog/vpc: default-vpc
  name: ILB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    prefixLength: PREFIX_LENGTH
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch

EOF

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

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

כדי להגדיר את רשת המשנה הזו כך שתפעל עם מאזני עומסים פנימיים, צריך ליצור רשת משנה מסוג עלה למאזן העומסים הפנימי.

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

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

כדי ליצור את רשת המשנה של העלה ולקשר אותה ל-ILB:

  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/vpc: default-vpc
      name: ILB_IP_SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_REF
        namespace: platform
      type: Leaf
    EOF
    

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

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

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ForwardingRuleInternal
    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: השם שבחרתם לאובייקט ForwardingRuleInternal, למשל nginx-ilb-static-fr.
    • ‫PORT: מספר היציאה שבה ה-ILB מאזין לתנועה נכנסת, למשל 80.
    • ‫PROTOCOL: פרוטוקול הרשת שבו משתמש ה-ILB, כמו TCP או UDP.
    • ‫BES_NAME: השם של BackendService שמשויך למשאב ForwardingRuleInternal, למשל nginx-bes.
    • ‫LEAF_SUBNET_NAME: השם של תת-הרשת שיצרתם בשלב הקודם, למשל lb-project-ilb-ip.