בדף הזה מוסבר איך להגדיר אשכולות שנוצרו במצב Autopilot של Google Kubernetes Engine (GKE) כדי לבצע הסוואת כתובות IP באמצעות מדיניות NAT ליציאה.
מידע נוסף על הסתרת כתובות IP במצב GKE Standard זמין במאמר בנושא הגדרת סוכן להסתרת כתובות IP.
סקירה כללית
מדיניות ה-NAT לתעבורת נתונים יוצאת (egress) ב-GKE מאפשרת להגדיר את התנהגות ה-IP masquerade באשכולות Autopilot.
GKE תומך בשתי מדיניות NAT ליציאה שנוצרות באופן אוטומטי:
- מנוהלים על ידי GKE, קבועים ואי אפשר לערוך אותם.
- כללי מדיניות שמוגדרים כברירת מחדל ואפשר לערוך אותם.
בדף הזה מוסבר איך לערוך ולפרוס מדיניות Egress NAT. אפשר לערוך את מדיניות ברירת המחדל או ליצור מדיניות Egress NAT. בדף הזה מוסבר גם איך למחוק מדיניות NAT ליציאה שנוצרה.
מידע נוסף על התנהגות המדיניות של Egress NAT זמין במאמר התנהגות של הסוואת תנועה באשכולות של Autopilot.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
מוודאים שיש לכם אשכול Autopilot שפועלת בו גרסה 1.23.4-gke.1600 ואילך, או 1.22.7-gke.1500 ואילך. צריך להפעיל את GKE Dataplane V2 באשכול.
מוודאים שיש עומס עבודה שפועל באשכול. מידע נוסף זמין במאמר בנושא איך מבקשים משאבים.
בדיקת הסטטוס של מדיניות Egress NAT
אתם יכולים לבדוק אם באשכול שלכם מופעלת הגדרת משאב מותאם אישית (CRD) של מדיניות Egress NAT באמצעות הכלי Google Cloud CLI:
מקבלים את פרטי הכניסה לאשכול:
gcloud container clusters get-credentials CLUSTER-NAMEמחליפים את
CLUSTER_NAMEבשם האשכול.בודקים אם מדיניות ה-NAT של התעבורה היוצאת פועלת:
kubectl get crds egressnatpolicies.networking.gke.ioאם מדיניות NAT ליציאה פועלת, הפלט ייראה כך:
NAME CREATED AT egressnatpolicies.networking.gke.io 2022-03-16T21:05:43Zכדי לקבל את רשימת כללי המדיניות של NAT ליציאה שנוצרו:
kubectl get egressnatpoliciesהפלט אמור להיראות כך:
NAME AGE default 44h gke-bbfa6c0e-1 44h
עריכה של מדיניות ברירת המחדל הקיימת
GKE תומך בשתי מדיניות NAT שנוצרות באופן אוטומטי: מדיניות ברירת המחדל ומדיניות שמנוהלת על ידי GKE. מדיניות ברירת המחדל ניתנת לעריכה, והיא מגדירה את יעדי ברירת המחדל שלא מוסתרים.
כדי לערוך את מדיניות ברירת המחדל הקיימת, מבצעים את השלבים הבאים:
מקבלים את פרטי הכניסה לאשכול:
gcloud container clusters get-credentials CLUSTER_NAMEמחליפים את
CLUSTER_NAMEבשם האשכול.עורכים את מדיניות ברירת המחדל של Egress NAT:
kubectl edit egressnatpolicies defaultלהוסיף או להסיר יעדים באמצעות הפעולה NoSNAT כמאפיין
cidrבפורמט CIDR:apiVersion: networking.gke.io/v1 kind: EgressNATPolicy metadata: name: default spec: action: NoSNAT destinations: - cidr: 10.0.0.0/8 - cidr: 172.16.0.0/12 - cidr: 192.168.0.0/16 - cidr: 240.0.0.0/4 - cidr: 192.0.2.0/24 - cidr: 198.51.100.0/24 - cidr: 203.0.113.0/24 - cidr: 100.64.0.0/10 - cidr: 198.18.0.0/15 - cidr: 192.0.0.0/24 - cidr: 192.88.99.0/24כשמנות נשלחות ליעדים האלה, האשכול לא מסווה את כתובות ה-IP של המקורות ושומר על כתובות ה-IP של הפודים המקוריים.
כדי לוודא שהמדיניות שערכתם הופעלה, בודקים את האירועים ב-Kubernetes:
kubectl get eventsהפלט אמור להיראות כך:
LAST SEEN TYPE REASON OBJECT MESSAGE 13s Normal EnsuringPolicy egressnatpolicy/default Ensuring IP masquerade config for policy "default"יכול להיות שיחלפו עד שלוש דקות עד שהשינויים ייכנסו לתוקף.
פריסת מדיניות חדשה של Egress NAT
כדי להוסיף יעדים חדשים באמצעות הפעולה NoSNAT, אפשר להשתמש באחת מהאפשרויות הבאות:
- אפשר לערוך את מדיניות ברירת המחדל הקיימת.
- אפשר ליצור מדיניות חדשה של Egress NAT.
כדי ליצור מדיניות חדשה של NAT ליציאה שלא כלולה במדיניות ברירת המחדל, מבצעים את השלבים הבאים:
שומרים את קובץ המניפסט הבא בשם
egress_nat_policy.yaml:kind: EgressNATPolicy apiVersion: networking.gke.io/v1 metadata: name: POLICY_NAME spec: action: NoSNAT destinations: - cidr: CIDR_1 - cidr: CIDR_2מחליפים את מה שכתוב בשדות הבאים:
-
POLICY_NAME: השם של המדיניות החדשה. -
CIDR_1ו-CIDR_2: טווחי כתובות ה-IP בפורמט CIDR. כשמנות נשלחות ליעדים האלה, האשכול לא מסווה את כתובות ה-IP של מקורות ולא משנה את כתובות ה-IP של מקורות ה-Pod. אם אתם צריכים יותר משני CIDR, מוסיפים עוד רשומות לרשימהdestinationsבאותו פורמט.
-
פורסים את המדיניות החדשה:
kubectl create -f egress_nat_policy.yamlכדי לוודא שהמדיניות נפרסה, בודקים את האירועים ב-Kubernetes:
kubectl get eventsהפלט אמור להיראות כך:
LAST SEEN TYPE REASON OBJECT MESSAGE 13s Normal EnsuringPolicy egressnatpolicy/mypolicy Ensuring IP masquerade config for policy "mypolicy"
מחיקת מדיניות NAT ליציאה
כדי למחוק לחלוטין מדיניות Egress NAT, מריצים את הפקודה הבאה:
kubectl delete egressnatpolicies POLICY_NAME
מחליפים את POLICY_NAME בשם המדיניות שרוצים למחוק.