בדף הזה מוסבר איך להשבית את כללי חומת האש של 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:
- שירותים של מאזן עומסים פנימי באמצעות חלוקת משנה ב-GKE
- שירותים של מאזן עומסים חיצוני שמבוססים על שירות לקצה העורפי
אי אפשר להשבית את היצירה האוטומטית של כללי חומת אש לסוגים הבאים של שירותי LoadBalancer:
- שירותים של מאזני עומסים פנימיים שלא משתמשים בחלוקת משנה של GKE
- שירותי איזון עומסים חיצוניים שמבוססים על מאגר יעד
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
שיטות לניהול ידני של כללי חומת אש
לפני שמשביתים את היצירה האוטומטית של כללי חומת אש של VPC בשירותי LoadBalancer באשכול GKE, כדאי לעבוד עם אדמין אבטחה כדי לפתח אסטרטגיה להגדרת כללי חומת אש באופן ידני.
מחליטים באיזה סוג של מדיניות חומת אש להשתמש: מדיניות חומת אש היררכית, מדיניות חומת אש בין רשתות גלובליות או מדיניות חומת אש בין רשתות אזוריות. הוראות ליצירת מדיניות של חומת אש מפורטות במאמרים הבאים:
- שימוש במדיניות ובכללים היררכיים של חומת אש
- שימוש במדיניות ובכללים של חומת אש בין רשתות גלובליות
- שימוש במדיניות ובכללים של חומת אש ברשת אזורית
אפשר גם להשתמש בכללי חומת אש של VPC, שלא משתמשים בכללי מדיניות.
כללי חומת האש שיוצרים באופן ידני חייבים להיות כללים שמאפשרים תעבורת נתונים נכנסת (ingress), כי כלל חומת האש המשתמע לדחיית תעבורת נתונים נכנסת אוסר על תעבורה נכנסת. אם השבתתם את היצירה האוטומטית של כללי חומת אש של VPC, תנועה נכנסת לא תגיע לצמתים שלכם אלא אם יצרתם כללי חומת אש שמאפשרים תנועה נכנסת (ingress) שתואמת לתנועה של שירותי LoadBalancer.
בהתאם לפרמטרים של כלל חומת האש, כלל חומת אש יחיד של כניסה יכול לחול על שירות 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
עדכון של אשכול GKE קיים כדי להשבית את היצירה של כללים לחומת האש ב-VPC
לפני שמשביתים את יצירת הכללים של חומת האש ב-VPC, חשוב לשים לב לנקודות הבאות לגבי עדכון של אשכול קיים:
- כשמעדכנים אשכול קיים כדי להשבית את יצירת כללי חומת האש של ה-VPC, GKE לא מוחק כללי חומת אש קיימים ש-GKE יצר אוטומטית עבור שירותי איזון העומסים.
- מערכת 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מידע נוסף על כללים של חומת אש שנוצרו באופן אוטומטי עבור שירותי GKE
פתרון בעיות בקישוריות
בדוגמאות הבאות מוצג אופן השימוש בבדיקות הקישוריות של Network Intelligence Center כדי לבדוק את הקישוריות לשירות LoadBalancer חיצוני:
Network Intelligence Center:
- במסוף Google Cloud , עוברים אל Network Intelligence Center ומתחילים בדיקת קישוריות חדשה.
- בתפריט הנפתח, בוחרים באפשרות כל כתובת 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מחליפים את מה שכתוב בשדות הבאים:
-
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 משותף.