כללים לחומת אש בניהול המשתמשים לשירותי 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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. כדי להשבית את כללי חומת האש של 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.
  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

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

לפני שמשביתים את יצירת הכללים של חומת האש ב-VPC, חשוב לשים לב לנקודות הבאות לגבי עדכון של אשכול קיים:

  • כשמעדכנים אשכול קיים כדי להשבית את יצירת כללי חומת האש של ה-VPC, ‏ GKE לא מוחק כללי חומת אש קיימים ש-GKE יצר אוטומטית עבור שירותי איזון העומסים.
  • מערכת GKE מפסיקה לעדכן את הכללים הקיימים ולא תיצור כללים חדשים לשירותי LoadBalancer החדשים.
  • כדי להפעיל מחדש את היצירה של כללי חומת אש של VPC, אפשר להשתמש בדגל --enable-l4-lb-firewall-reconciliation עם הפקודה gcloud_name container clusters update.

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

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

    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
    

    מידע נוסף על כללים של חומת אש שנוצרו באופן אוטומטי עבור שירותי GKE

פתרון בעיות בקישוריות

בדוגמאות הבאות מוצג אופן השימוש בבדיקות הקישוריות של Network Intelligence Center כדי לבדוק את הקישוריות לשירות LoadBalancer חיצוני:

  • ‫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
    

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