בדף הזה מוסבר איך יוצרים רשת משנה גלובלית ב-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).
למידע נוסף, קראו את תיאורי התפקידים המוגדרים מראש.
- מבקשים ממנהל החשבון הארגוני ב-IAM להקצות לכם את התפקיד "אדמין של מאזן עומסים" (
יצירת רשת משנה גלובלית ראשית
רשת המשנה הגלובלית הראשית שתיצרו בקטע הזה משמשת כמאגר כתובות ה-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, מבצעים את השלבים הבאים:
יוצרים תת-רשת עלה עם ערך
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 שלה, כמו רשת המשנה הגלובלית הראשית שיצרתם קודם.
-
מחברים את תת-הרשת החדשה שנוצרה, שמכילה את כתובת ה-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.
-