בדף הזה מוסבר איך להשבית את כללי חומת האש של VPC ש-GKE יוצר עבור שירותי LoadBalancer.
השבתה של כללי חומת האש האלה שנוצרו אוטומטית עבור שירותי LoadBalancer יכולה להיות שימושית במצבים הבאים:
- אם יש לכם כמה שירותי LoadBalancer בשני אשכולות GKE או יותר, יכול להיות שיעיל יותר לנהל את כללי חומת האש בעצמכם. לדוגמה, במקום ש-GKE ייצור כלל ייחודי של חומת אש לכל שירות LoadBalancer, הכללים של חומת האש שנוצרו באופן ידני יכולים לאפשר תעבורת נתונים נכנסת למספר שירותי LoadBalancer.
- במקום כללי חומת אש של VPC, אפשר להשתמש במדיניות חומת אש היררכית, במדיניות גלובלית של חומת אש לרשת או במדיניות אזורית של חומת אש לרשת. הכללים במדיניות חומת האש האלה תומכים בפעולות נוספות, ביעדים גמישים יותר ובתכונות כמו מיקום גיאוגרפי, מודיעין איומי סייבר, קבוצות כתובות ושמות דומיין מלאים.
כדי להשבית את הכללים לחומת האש שנוצרים אוטומטית בשירותי LoadBalancer, צריך לציין את הדגל --disable-l4-lb-firewall-reconciliation כשיוצרים או מעדכנים אשכול. הסימון --disable-l4-lb-firewall-reconciliation לא משפיע על כללי חומת אש אחרים של VPC שנוצרו באופן אוטומטי, כמו כללים שמקלים על תקשורת בין צמתים או כללים שמאפשרים בדיקות תקינות של השירותים.
דרישות
- כדי להשתמש בכללי חומת אש בניהול המשתמש בשירותי LoadBalancer, אשכולות GKE צריכים להיות בגרסה 1.31.3-gke.105600 ואילך.
מגבלות
ב-GKE אפשר להשבית את היצירה האוטומטית של כללי חומת אש לסוגים הבאים של שירותי LoadBalancer:
- שירותים של מאזן עומסים פנימי באמצעות חלוקת משנה (subsetting) ב-GKE
- שירותים של מאזן עומסים חיצוני שמבוסס על שירות לקצה העורפי
אי אפשר להשבית את היצירה האוטומטית של כללי חומת אש לסוגים הבאים של שירותי LoadBalancer:
- שירותים של מאזני עומסים פנימיים שלא משתמשים בחלוקת משנה של GKE
- שירותים חיצוניים של איזון עומסים שמבוססים על מאגרי יעד
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
אסטרטגיות לניהול ידני של כללים בחומת אש
לפני שמשביתים את היצירה האוטומטית של כללי חומת אש של VPC עבור שירותי LoadBalancer באשכול GKE, צריך לעבוד עם אדמין אבטחה כדי לגבש אסטרטגיה להגדרה ידנית של כללי חומת אש.
קובעים באיזה סוג של מדיניות חומת אש להשתמש: מדיניות חומת אש היררכית, מדיניות חומת אש בין רשתות גלובליות או מדיניות חומת אש בין רשתות אזוריות. הוראות ליצירת מדיניות חומת אש מפורטות במאמרים הבאים:
- שימוש במדיניות ובכללים היררכיים של חומת אש
- שימוש במדיניות ובכללים של חומת אש בין רשתות גלובליות
- שימוש במדיניות ובכללים של חומת אש אזורית ברשת
אפשר גם להשתמש בכללי חומת אש של VPC, שלא מבוססים על מדיניות.
כללי חומת האש שיוצרים באופן ידני חייבים להיות כללים שמאשרים תעבורת נתונים נכנסת (ingress), כי כלל חומת האש המשתמע לדחיית תעבורת נתונים נכנסת אוסר על תעבורה נכנסת. אם השבתתם את היצירה האוטומטית של כללי חומת אש של VPC, תנועה נכנסת לא תגיע לצמתים שלכם אלא אם יצרתם כללי חומת אש שמאפשרים תנועה נכנסת (ingress) שתואמת לתנועה של שירותי LoadBalancer.
בהתאם לפרמטרים של כלל חומת האש, כלל חומת אש יחיד מסוג ingress allow יכול לחול על שירות LoadBalancer אחד או יותר. לכל כלל חומת אש שמאפשר תעבורת נכנסת, מגדירים את הפרמטרים הבאים:
פרמטר היעד: מוודאים שכל הצמתים של האשכול שמכיל את שירותי LoadBalancer כלולים לפחות בכלל חומת האש. היעדים הנתמכים תלויים בסוג מדיניות חומת האש שבה נמצא כלל, או אם אתם משתמשים בכלל חומת אש של VPC. מידע על פרמטר היעד של כלל במדיניות של חומת האש זמין במאמר בנושא יעדים.
פרוטוקולים ויציאות: כוללים את כל הפרוטוקולים ויציאות היעד שמשמשים את שירותי LoadBalancer שאליהם צריך להחיל את כלל חומת האש.
פרמטר יעד: אפשר להשתמש באחת מהשיטות הבאות עבור פרמטר היעד:
- בפרמטר היעד, צריך לכלול את כתובות ה-IP של כל שירותי איזון העומסים שהכלל של חומת האש צריך לחול עליהם. כדי למצוא את כתובת ה-IP של שירות LoadBalancer, משתמשים בפקודה הבאה:
kubectl get svc LOADBALANCER_NAME \ -n NAMESPACE_NAME \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}- אפשר לבחור להשמיט את פרמטר היעד. אם לא מציינים את פרמטר היעד, פרמטר היעד מגדיר את היעדים באופן מרומז. מידע נוסף זמין במאמר בנושא יעדים וכתובות IP לכללי תעבורה נכנסת.
פרמטר המקור: מציינים את המקורות (לדוגמה, כתובות IP) שמשמשים לקוחות שצריכים להתחבר לשירותי מאזן העומסים שאליהם צריך להחיל את כלל חומת האש.
לשלבים ליצירת כללים של חומת אש, ראו:
כדי לוודא שכללי חומת האש שיצרתם באופן ידני פועלים כמו שצריך, מריצים בדיקת קישוריות של Network Intelligence Center (NIC). כשמריצים את בדיקת הקישוריות:
- מגדירים את היעד לכתובת ה-IP של שירות LoadBalancer.
- מגדירים את המקור לכתובת ה-IP של הלקוח.
מידע נוסף זמין במאמר פתרון בעיות בקישוריות.
השבתת היצירה של כללי חומת אש ב-VPC עבור שירותי LoadBalancer
בקטע הזה מוסבר איך משביתים את היצירה האוטומטית של כללי חומת אש ב-VPC לשירותי LoadBalancer.
יצירת אשכול GKE חדש עם השבתה של יצירת כללים לחומת האש ב-VPC
כדי להשבית את כללי חומת האש של ה-VPC שנוצרו באופן אוטומטי עבור שירותי LoadBalancer באשכול שנוצר לאחרונה, יוצרים את האשכול עם הדגל
--disable-l4-lb-firewall-reconciliation:טייס אוטומטי:
gcloud container clusters create-auto CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=VERSIONרגילה:
gcloud container clusters create CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --enable-l4-ilb-subsetting \ --cluster-version=VERSIONמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול החדש. -
VERSION: גרסת GKE.
-
יצירה של שירות LoadBalancer חיצוני או פנימי:
מוודאים ש-GKE לא יוצר כלל חומת אש שמאפשר תעבורת נתונים נכנסת (ingress) לשירות LoadBalancer. (כללי חומת אש שנוצרים באופן אוטומטי כדי לאפשר תעבורת נתונים נכנסת (ingress) מקבלים שמות מהצורה הבאה:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]).הפקודה הבאה מחזירה רשימה של כללי חומת אש שמכילים את
k8s2:gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"התשובה צריכה להחזיר רק את כלל חומת האש של בדיקת תקינות מהצורה
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fwאם הפרמטרexternalTrafficPolicyמוגדר ל-Local. הוא משתמש ביציאת ה-TCP שמוגדרת על ידי הפרמטרspec.healthCheckNodePort. אם לא מציינים יציאה, מישור הבקרה של Kubernetes מקצה יציאה לבדיקת התקינות מתוך טווח היציאות של הצומת.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 Falseאם הפרמטר
externalTrafficPolicyמוגדר לערךCluster, מוחזר במקומו כלל חומת האש הבא לבדיקת תקינות.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 False
עדכון של אשכול GKE קיים כדי להשבית את היצירה של כללים לחומת האש ב-VPC
לפני שמשביתים את יצירת הכללים של חומת האש של VPC, חשוב לשים לב לנקודות הבאות לגבי עדכון של אשכול קיים:
- כשמעדכנים אשכול קיים כדי להשבית את היצירה של כללי חומת אש ב-VPC, GKE לא מוחק כללי חומת אש קיימים ש-GKE יצר אוטומטית עבור שירותי LoadBalancer.
- מערכת GKE מפסיקה לעדכן את הכללים הקיימים ולא יוצרת כללים חדשים לשירותי LoadBalancer החדשים.
- כדי להפעיל מחדש את היצירה של כללי חומת אש של VPC, אפשר להשתמש בדגל
--enable-l4-lb-firewall-reconciliationעם הפקודהgcloud_name container clusters update.
כדי להשבית את היצירה האוטומטית של כללי חומת אש באשכול קיים:
מעדכנים את האשכול כדי להשבית את היצירה והניהול האוטומטיים של כללי חומת אש לשירותי LoadBalancer:
gcloud container clusters update CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=supported_versionמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול החדש. -
VERSION: גרסת GKE.
-
יצירה של שירות LoadBalancer חיצוני או פנימי:
מוודאים ש-GKE לא יוצר כלל חומת אש שמאפשר תעבורת נתונים נכנסת (ingress) לשירות LoadBalancer. (כללי חומת אש שמתירים תעבורת נתונים נכנסת (ingress) שנוצרים באופן אוטומטי מקבלים שמות מהצורה הבאה:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]).הפקודה הבאה מחזירה רשימה של כללי חומת אש שמכילים את
k8s2:gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"התשובה צריכה להחזיר רק את כלל חומת האש של בדיקת תקינות מהצורה
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fwאם הפרמטרexternalTrafficPolicyמוגדר ל-Local. הוא משתמש ביציאת ה-TCP שמוגדרת על ידי הפרמטרspec.healthCheckNodePort. אם לא מציינים יציאה, מישור הבקרה של Kubernetes מקצה יציאה לבדיקת התקינות מתוך טווח היציאות של הצומת.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 Falseאם הפרמטר
externalTrafficPolicyמוגדר לערךCluster, מוחזר במקומו כלל חומת האש הבא לבדיקת תקינות.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 False
פתרון בעיות בקישוריות
בדוגמאות הבאות מוצג איך להשתמש בבדיקות הקישוריות של Network Intelligence Center כדי לבדוק את הקישוריות לשירות LoadBalancer חיצוני:cluster:
Network Intelligence Center:
- במסוף Google Cloud , עוברים אל Network Intelligence Center ומתחילים בדיקת קישוריות חדשה.
- בתפריט הנפתח, בוחרים באפשרות Any external public IP address (כל כתובת IP ציבורית חיצונית) כמקור, ובוחרים את מאזן העומסים כיעד.
- מריצים מחדש את בדיקת הקישוריות.
ב-CLI של gcloud:
הפקודה לדוגמה הבאה יוצרת ומריצה בדיקה עם כתובת ה-IP הציבורית של תחנת העבודה המקומית כמקור וכתובת ה-IP החיצונית של מאזן העומסים החיצוני כיעד:
gcloud network-management connectivity-tests create TEST_NAME \ --source-ip-address=SOURCE_IP_ADDRESS \ --source-network-type=NON_GCP_NETWORK \ --destination-ip-address=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.status.loadBalancer.ingress[0].ip}') \ --destination-port=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.spec.ports[0].targetPort}') \ --destination-network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --round-tripמחליפים את מה שכתוב בשדות הבאים:
-
TEST_NAME: שם לבדיקת הקישוריות. SOURCE_IP_ADDRESS: כתובת ה-IP של המערכת שצריכה להתחבר לשירות LoadBalancer החיצוני. לדוגמה-
LOADBALANCER_NAME: השם של שירות LoadBalancer חיצוני. -
PROJECT_ID: מזהה הפרויקט שמכיל את רשת ה-VPC של האשכול. אם האשכול שלכם משתמש ברשת VPC משותפת, צריך להשתמש במזהה הפרויקט של פרויקט המארח. -
NETWORK_NAME: השם של רשת ה-VPC של האשכול.
בודקים את תוצאות הבדיקה:
gcloud network-management connectivity-tests describe TEST_NAME-
המאמרים הבאים
- מידע נוסף על מדיניות חומת האש
- במאמר כללים של חומת אש שנוצרים באופן אוטומטי מוסבר על כללי חומת האש של תעבורת הנתונים הנכנסת (ingress) ברשת ה-VPC ש-GKE יוצר באופן אוטומטי כברירת מחדל.
- במאמר פרמטרים של שירות LoadBalancer מופיע תיאור של הפרמטרים של שירותי LoadBalancer.
- מידע נוסף על כללים אחרים של חומת אש שמולאו מראש ב- Google Cloud
- מידע נוסף על יצירת כללי חומת אש בפרויקטים שמשתמשים ב-VPC משותף.