כללים לחומת אש בניהול המשתמשים לשירותי LoadBalancer ב-GKE

בדף הזה מוסבר איך להשבית את כללי חומת האש של VPC ש-GKE יוצר עבור שירותי LoadBalancer.

השבתה של כללי חומת האש האלה שנוצרו באופן אוטומטי עבור שירותי LoadBalancer יכולה להיות שימושית במצבים הבאים:

כדי להשבית את הכללים לחומת האש שנוצרים באופן אוטומטי בשירותי LoadBalancer, צריך לציין את הדגל --disable-l4-lb-firewall-reconciliation כשיוצרים או מעדכנים אשכול. הדגל --disable-l4-lb-firewall-reconciliation לא משפיע על כללי חומת אש אחרים ב-VPC שנוצרו באופן אוטומטי, כמו כללים שמקלים על תקשורת בין צמתים או כללים שמאפשרים בדיקות תקינות של השירותים.

דרישות

  • כדי להשתמש בכללי חומת אש בניהול המשתמש בשירותי LoadBalancer, אשכולות GKE צריכים להיות בגרסה 1.31.3-gke.105600 ואילך.

מגבלות

פלטפורמת GKE תומכת בהשבתה של יצירה אוטומטית של כללי חומת אש עבור הסוגים הבאים של שירותי LoadBalancer:

אי אפשר להשבית את היצירה האוטומטית של כללי חומת אש לסוגים הבאים של שירותי LoadBalancer:

  • שירותים פנימיים של LoadBalancer שלא משתמשים בחלוקת משנה של GKE
  • שירותים של איזון עומסים חיצוניים שמבוססים על מאגר יעד

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

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

שיטות לניהול ידני של כללי חומת אש

לפני שמשביתים את היצירה האוטומטית של כללי חומת אש של VPC בשירותי LoadBalancer באשכול GKE, צריך לעבוד עם אדמין אבטחה כדי לפתח אסטרטגיה להגדרת כללי חומת אש באופן ידני.

  1. מחליטים באיזה סוג של מדיניות חומת אש להשתמש: מדיניות חומת אש היררכית, מדיניות חומת אש גלובלית ברשת או מדיניות חומת אש אזורית ברשת. הוראות ליצירת מדיניות חומת אש מפורטות במאמרים הבאים:

    אפשר גם להשתמש בכללי חומת אש של VPC, שלא משתמשים בכללי מדיניות.

  2. כללי חומת האש שיוצרים באופן ידני חייבים להיות כללים שמאפשרים תעבורת נתונים נכנסת (ingress), כי כלל חומת האש המשתמע לדחיית תעבורת נתונים נכנסת אוסר על תעבורה נכנסת. אם השבתתם את היצירה האוטומטית של כללי חומת אש של VPC, תנועה נכנסת לא תגיע לצמתים שלכם אלא אם יצרתם כללי חומת אש שמאפשרים תנועה נכנסת (ingress) שתואמת לתנועה של שירותי LoadBalancer.

    בהתאם לפרמטרים של כלל חומת האש, כלל חומת אש יחיד של תעבורת נתונים נכנסת (ingress) יכול לחול על שירות LoadBalancer אחד או יותר. לכל כלל חומת אש שמאפשר תעבורת נתונים נכנסת, מגדירים את הפרמטרים הבאים:

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

    • פרוטוקולים ויציאות: צריך לכלול את כל הפרוטוקולים ויציאות היעד שמשמשים את שירותי LoadBalancer שאליהם צריך להחיל את כלל חומת האש.

    • פרמטר יעד: אפשר להשתמש באחת מהשיטות הבאות כדי להגדיר את פרמטר היעד:

      • בפרמטר היעד, כוללים את כתובות ה-IP של כל שירותי איזון העומסים שהכלל של חומת האש צריך לחול עליהם. כדי למצוא את כתובת ה-IP של שירות LoadBalancer, משתמשים בפקודה הבאה:
         kubectl get svc LOADBALANCER_NAME \
            -n NAMESPACE_NAME \
            -o jsonpath='{.status.loadBalancer.ingress[0].ip}
      
    • פרמטר המקור: מציינים את המקורות (לדוגמה, כתובות IP) שמשמשים את הלקוחות שצריכים להתחבר לשירותי מאזן העומסים שאליהם צריך להחיל את כלל חומת האש.

    לשלבים ליצירת כללים של חומת אש, ראו:

  3. כדי לוודא שכללי חומת האש שיצרתם באופן ידני פועלים כמו שצריך, מריצים בדיקת קישוריות של Network Intelligence Center (NIC). כשמריצים את בדיקת הקישוריות:

    • מגדירים את היעד לכתובת ה-IP של שירות LoadBalancer.
    • מגדירים את המקור לכתובת ה-IP של הלקוח.

    מידע נוסף זמין במאמר פתרון בעיות בחיבור.

השבתת היצירה של כללי חומת אש ב-VPC עבור שירותי LoadBalancer

בקטע הזה מוסבר איך משביתים את היצירה האוטומטית של כללי חומת אש ב-VPC עבור שירותי LoadBalancer.

יצירת אשכול GKE חדש עם השבתה של יצירת כללים לחומת האש ב-VPC

  1. כדי להשבית את כללי חומת האש של ה-VPC שנוצרו באופן אוטומטי עבור שירותי LoadBalancer באשכול שנוצר לאחרונה, יוצרים את האשכול עם הדגל --disable-l4-lb-firewall-reconciliation:

    Autopilot:

    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.
  2. יוצרים שירות LoadBalancer חיצוני או פנימי:

  3. מוודאים ש-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.

כדי להשבית את היצירה האוטומטית של כללי חומת אש באשכול קיים:

  1. מעדכנים את האשכול כדי להשבית את היצירה והניהול האוטומטיים של כללי חומת אש לשירותי איזון עומסים:

    gcloud container clusters update CLUSTER_NAME \
    --disable-l4-lb-firewall-reconciliation \
    --cluster-version=supported_version
    

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

    • CLUSTER_NAME: השם של האשכול החדש.
    • VERSION: גרסת GKE.
  2. יוצרים שירות LoadBalancer חיצוני או פנימי:

  3. מוודאים ש-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:

    1. במסוף Google Cloud , עוברים אל Network Intelligence Center ומתחילים בדיקת קישוריות חדשה.
    2. בתפריט הנפתח, בוחרים באפשרות כל כתובת IP ציבורית חיצונית כמקור ובוחרים את מאזן העומסים כיעד.
    3. מריצים מחדש את בדיקת הקישוריות.
  • ב-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
    

המאמרים הבאים