בדף הזה מוסבר איך להגדיר בידוד רשת באשכולות של Google Kubernetes Engine (GKE) כשיוצרים או מעדכנים את האשכול.
תכנון ועיצוב של בידוד רשת האשכולות עם אדריכלי הרשת, מנהלי הרשת או כל צוות אחר של מהנדסי רשתות בארגון שאחראי להגדרת ארכיטקטורת הרשת, להטמעה ולתחזוקה שלה.
איך פועלת הבידוד של רשת האשכול
באשכול GKE, הבידוד של הרשת תלוי במי יכול לגשת לרכיבי האשכול ואיך. אתם יכולים לקבוע את ההגדרות הבאות:
- גישה למישור הבקרה: אתם יכולים להתאים אישית גישה חיצונית, גישה מוגבלת או גישה לא מוגבלת למישור הבקרה.
- Cluster networking: אתם יכולים לבחור מי יכול לגשת לצמתים באשכולות רגילים או לעומסי העבודה באשכולות Autopilot.
לפני שיוצרים את האשכול, כדאי להביא בחשבון את הנקודות הבאות:
- למי יש גישה למישור הבקרה ואיך הוא נחשף?
- איך הצמתים או עומסי העבודה נחשפים?
כדי לענות על השאלות האלה, צריך לפעול לפי ההנחיות לתכנון ולעיצוב שמופיעות במאמר מידע על בידוד רשת.
הגבלות ומגבלות
כברירת מחדל, אשכולות GKE נוצרים כאשכולות המותאמים ל-VPC. אשכולות מקוריים של VPC לא תומכים ברשתות מדור קודם.
טווחים משניים של Pod ברמת מאגר הצמתים: כשיוצרים אשכול GKE, אם מציינים טווח משני של Pod שקטן מ-/24 לכל מאגר צמתים באמצעות ממשק המשתמש, יכול להיות שתופיע השגיאה הבאה:
Getting Pod secondary range 'pod' must have a CIDR block larger or equal to /24
ב-GKE אי אפשר לציין טווח קטן מ-/24 ברמת מאגר הצמתים. עם זאת, אפשר לציין טווח קטן יותר ברמת האשכול. אפשר לעשות זאת באמצעות Google Cloud CLI עם הארגומנט --cluster-ipv4-cidr. מידע נוסף זמין במאמר יצירת אשכול עם טווח CIDR ספציפי.
כדי לראות את הכללים לגבי טווחי כתובות IP ותנועה כשיוצרים אשכול, מרחיבים את הקטעים הבאים.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
הגדרת גישה למישור הבקרה
כשיוצרים אשכול GKE בכל גרסה באמצעות Google Cloud CLI או בגרסה 1.29 ואילך באמצעות המסוף, אפשר לגשת למישור הבקרה דרך הממשקים הבאים:
נקודת קצה מבוססת DNS
הגישה למישור הבקרה תלויה בפענוח ה-DNS של תנועת המקור. הפעלת נקודת הקצה מבוססת ה-DNS מאפשרת ליהנות מהיתרונות הבאים:
- יצירת מדיניות גישה דינמית על סמך מדיניות IAM.
- גישה למישור הבקרה מרשתות VPC אחרות או ממיקומים חיצוניים בלי צורך בהגדרת יעד מבוצר (bastion host) או צמתי proxy.
במאמר הגדרת גישה לנקודת קצה מבוססת DNS מוסבר איך להגדיר גישה לנקודת קצה מבוססת DNS.
נקודות קצה מבוססות-IP
הגישה לנקודות הקצה של מישור הבקרה תלויה בכתובת ה-IP של המקור ונשלטת על ידי הרשתות המורשות שלכם. אתם יכולים לנהל את הגישה לנקודות הקצה (endpoints) של מישור הבקרה שמבוססות על כתובות IP, כולל:
- מפעילים או משביתים את נקודת הקצה מבוססת ה-IP.
- הפעלה או השבתה של נקודת הקצה החיצונית כדי לאפשר גישה מתנועה חיצונית. נקודת הקצה הפנימית תמיד מופעלת כשמפעילים את נקודות הקצה של מישור הבקרה שמבוססות על כתובות IP.
- מוסיפים רשתות מורשות לרשימת ההיתרים או חוסמים גישה מכתובות IP ציבוריות. אם לא מגדירים רשתות מורשות, אפשר לגשת למישור הבקרה מכל כתובת IP חיצונית. הכתובות האלה כוללות כתובות IP חיצוניות או כתובות אינטרנט ציבוריות ללא הגבלות. Google Cloud
- הוספה לרשימת ההיתרים או חסימת הגישה מכל כתובות ה-IP הפרטיות באשכול או מחלקן.
הוספה לרשימת ההיתרים או חסימת גישה מGoogle Cloud כתובות IP חיצוניות, שהן כתובות IP חיצוניות שמוקצות לכל מכונה וירטואלית שמשמשת כל לקוח שמתארח ב- Google Cloud.
להוסיף לרשימת ההיתרים או לחסום גישה מכתובות IP באזורים אחרים. Google Cloud
לפני שמגדירים את הגישה למישור הבקרה, כדאי לעיין במגבלות השימוש בנקודות קצה מבוססות-IP.
יצירת אשכול והגדרת גישה למישור הבקרה
כדי ליצור או לעדכן אשכול Autopilot או אשכול רגיל, משתמשים ב-Google Cloud CLI או במסוף Google Cloud .
המסוף
כדי ליצור אשכול:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על add_box יצירה.
מגדירים את המאפיינים של האשכול בהתאם לצרכים של הפרויקט.
בתפריט הניווט, לוחצים על Networking (רשת).
בקטע Control Plane Access (גישה למישור הבקרה), מגדירים את נקודות הקצה של מישור הבקרה:
- מסמנים את תיבת הסימון Access using DNS כדי להפעיל את נקודות הקצה של מישור הבקרה שמבוססות על DNS.
אופציונלי: הפעלת אימות לנקודת הקצה שמבוססת על DNS באמצעות פרטי כניסה של Kubernetes:
- כדי להשתמש באסימוני bearer של Kubernetes ServiceAccount, מסמנים את התיבה Enable Kubernetes tokens via DNS.
- כדי להשתמש באישור לקוח X.509, מסמנים את התיבה Enable Kubernetes certificates via DNS (הפעלת אישורי Kubernetes באמצעות DNS).
מסמנים את התיבה Access using IPv4 addresses כדי להפעיל את נקודות הקצה של מישור הבקרה שמבוססות על כתובות IP. משתמשים בהגדרה שמופיעה במאמר הגדרת כתובות ה-IP שיכולות לגשת למישור הבקרה כדי להתאים אישית את הגישה לנקודות הקצה שמבוססות על כתובות IP.
gcloud
לגבי אשכולות של Autopilot, מריצים את הפקודה הבאה:
gcloud container clusters create-auto CLUSTER_NAME \
--enable-ip-access \
--enable-dns-access
במקרה של אשכולות רגילים, מריצים את הפקודה הבאה:
gcloud container clusters create CLUSTER_NAME \
--enable-ip-access \
--enable-dns-access
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול.
שתי הפקודות כוללות דגלים שמפעילים את האפשרויות הבאות:
enable-dns-access: מאפשר גישה למישור הבקרה באמצעות נקודת הקצה מבוססת ה-DNS של מישור הבקרה. אם מציינים את הדגל הזה, אפשר לציין גם את הדגלים האופציונליים הבאים:-
enable-k8s-tokens-via-dns: הפעלת אימות לנקודת הקצה מבוססת ה-DNS באמצעות אסימוני bearer של Kubernetes ServiceAccount. -
enable-k8s-certs-via-dns: הפעלת אימות לנקודת הקצה מבוססת ה-DNS באמצעות אישורי לקוח X.509 של Kubernetes.
-
enable-ip-access: מאפשר גישה למישור הבקרה באמצעות כתובות IPv4. אם רוצים להשבית גם את נקודות הקצה הפנימיות וגם את נקודות הקצה החיצוניות של מישור הבקרה, משתמשים בדגלno-enable-ip-accessבמקום זאת.
כדי להתאים אישית את הגישה לנקודות הקצה מבוססות ה-IP, משתמשים בדגלים שמפורטים במאמר הגדרת כתובות ה-IP שיכולות לגשת למישור הבקרה.
הגדרת גישה לנקודת קצה (endpoint) שמבוססת על DNS
כדי לנהל את האימות וההרשאה לנקודת הקצה שמבוססת על DNS, צריך להגדיר את הרשאת IAM container.clusters.connect. כדי להגדיר את ההרשאה הזו, צריך להקצות לGoogle Cloud פרויקט אחד מתפקידי ה-IAM הבאים:
roles/container.developerroles/container.viewer
אפשר גם לנהל את הנגישות של נקודת הקצה שמבוססת על DNS באמצעות התכונות הבאות:
VPC Service Controls: נקודת הקצה מבוססת ה-DNS תומכת ב-VPC Service Controls כדי להוסיף שכבת אבטחה לגישה למישור הבקרה. התכונה VPC Service Controls פועלת באופן עקבי בכל ממשקי ה-API של Google Cloud .
גישה לנקודת הקצה שמבוססת על DNS מלקוחות שאין להם גישה לאינטרנט הציבורי: אפשר לגשת לנקודת הקצה שמבוססת על DNS באמצעות ממשקי API של Google Cloud , שזמינים באינטרנט הציבורי. כדי לגשת לנקודת הקצה שמבוססת על DNS מלקוחות פרטיים, אפשר להשתמש בגישה פרטית ל-Google, בשער Cloud NAT או בPrivate Service Connect ל-API Google Cloud .
גישה לנקודת הקצה שמבוססת על DNS מלקוחות מקומיים: לקוחות מקומיים יכולים לגשת לנקודת הקצה שמבוססת על DNS באמצעות גישה פרטית ל-Google. כדי להגדיר גישה פרטית ל-Google, צריך לבצע את השלבים שמפורטים במאמר הגדרת גישה פרטית ל-Google למארחים מקומיים.
הגדרת כתובות ה-IP שיכולות לגשת למישור הבקרה
כדי להגדיר את כתובות ה-IP שיכולות לגשת למישור הבקרה, מבצעים את השלבים הבאים:
המסוף
- בקטע Control Plane Access, בוחרים באפשרות Enable authorized networks.
- לוחצים על הוספה של חברת ביטוח.
- מזינים שם לרשת.
- בשדה Network (רשת), מזינים טווח CIDR שרוצים להעניק לו גישה למישור הבקרה של האשכול.
- לוחצים על סיום.
- מוסיפים רשתות מורשות נוספות לפי הצורך.
הגדרת כללי חומת האש של כתובת ה-IP של מישור הבקרה
כדי להגדיר את הכללים של חומת האש של כתובת ה-IP של מישור הבקרה, מבצעים את השלבים הבאים:
- מרחיבים את הקטע הצגת כללי חומת האש של כתובות IP.
מסמנים את התיבה Access using the control plane's external IP address כדי לאפשר גישה למישור הבקרה מכתובות IP ציבוריות.
שיטה מומלצת: מגדירים רשתות מורשות של מישור הבקרה כדי להגביל את הגישה למישור הבקרה.
מסמנים את תיבת הסימון גישה באמצעות כתובת ה-IP הפנימית של מישור הבקרה מכל אזור. כתובות IP פנימיות מכל אזור Google Cloud יכולות לגשת לנקודת הקצה הפנימית של מישור הבקרה.
בוחרים באפשרות Enforce authorized networks on the control plane's internal endpoint (החלת רשתות מורשות בנקודת הקצה הפנימית של מישור הבקרה). רק כתובות ה-IP שהגדרתם ברשימה Add authorized networks יכולות לגשת לנקודת הקצה הפנימית של מישור הבקרה. נקודת הקצה הפנימית מופעלת כברירת מחדל.
בוחרים באפשרות Add Google Cloud external IP addresses to authorized networks (הוספת כתובות IP חיצוניות לרשתות מורשות). כל כתובות ה-IP הציבוריות מ Google Cloud יכולות לגשת למישור הבקרה.
gcloud
אפשר להגדיר את כתובות ה-IP שיכולות לגשת לנקודות הקצה החיצוניות והפנימיות של מישור הבקרה באמצעות הדגלים הבאים:
-
enable-private-endpoint: מציין שהגישה לנקודת הקצה החיצונית מושבתת. אם רוצים לאפשר גישה למישור הבקרה מכתובות IP חיצוניות, לא צריך להוסיף את הדגל הזה. במקרה כזה, מומלץ מאוד לשלוט בגישה לנקודת הקצה החיצונית באמצעות הדגלenable-master-authorized-networks. -
enable-master-authorized-networks:מציין שהגישה לנקודת הקצה החיצונית מוגבלת לטווחי כתובות IP שאתם מאשרים.
master-authorized-networks: מפורטים ערכי ה-CIDR של הרשתות המורשות. זו רשימה מופרדת בפסיקים. לדוגמה,8.8.8.8/32,8.8.8.0/24.שיטה מומלצת: משתמשים בדגל
enable-master-authorized-networksכדי להגביל את הגישה למישור הבקרה.
enable-authorized-networks-on-private-endpoint: מציין שהגישה לנקודת הקצה הפנימית מוגבלת לטווחי כתובות IP שאתם מאשרים באמצעות הדגלenable-master-authorized-networks.
no-enable-google-cloud-access: חסימת הגישה למישור הבקרה מGoogle Cloud כתובות IP חיצוניות. שימו לב שהעדכון של ההגדרה הזו לא נכנס לתוקף באופן מיידי. יכול להיות שיחלפו כמה שעות עד ש-GKE יפיץ ויאכוף את השינויים בכללי חומת האש.
enable-master-global-access: מאפשר גישה מכתובות IP באזורים אחרים שלGoogle Cloud .אפשר להמשיך להגדיר את רשת האשכול על ידי הגדרת בידוד של צומת או Pod ברמת האשכול.
אפשר גם ליצור אשכול ולהגדיר מאפיינים ברמת האשכול, כמו רשת ורשת משנה של צומת, סוג מחסנית IP והקצאת כתובות IP. מידע נוסף זמין במאמר בנושא יצירת אשכול המותאם ל-VPC.
שינוי הגישה למישור הבקרה
כדי לשנות את הגישה למישור הבקרה של אשכול, משתמשים ב-CLI של gcloud או במסוף Google Cloud .
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול.
בכרטיסייה Cluster details (פרטי האשכול), בקטע Control Plane Networking (רשת מישור הבקרה), לוחצים על edit.
בתיבת הדו-שיח Edit control plane networking, משנים את הגישה למישור הבקרה בהתאם לדרישות של תרחיש השימוש.
gcloud
מריצים את הפקודה הבאה ומצרפים את הדגלים שמתאימים לתרחיש השימוש. אפשר להשתמש בדגלים הבאים:
enable-dns-access: מאפשר גישה למישור הבקרה באמצעות נקודת הקצה מבוססת ה-DNS של מישור הבקרה. אם מציינים את הדגל הזה, אפשר לציין גם את הדגלים האופציונליים הבאים:-
enable-k8s-tokens-via-dns: הפעלת אימות לנקודת הקצה מבוססת ה-DNS באמצעות אסימוני bearer של Kubernetes ServiceAccount. -
enable-k8s-certs-via-dns: הפעלת אימות לנקודת הקצה מבוססת ה-DNS באמצעות אישורי לקוח X.509 של Kubernetes.
-
enable-ip-access: מאפשר גישה למישור הבקרה באמצעות כתובות IPv4. אם רוצים להשבית גם את נקודות הקצה הפנימיות וגם את נקודות הקצה החיצוניות של מישור הבקרה, משתמשים בדגלno-enable-ip-accessבמקום זאת.
enable-private-endpoint: מציין שהגישה לנקודת הקצה החיצונית מושבתת. אם רוצים לאפשר גישה למישור הבקרה מכתובות IP חיצוניות, לא צריך להוסיף את הדגל הזה. במקרה כזה, מומלץ מאוד לשלוט בגישה לנקודת הקצה החיצונית באמצעות הדגלenable-master-authorized-networks.
enable-master-authorized-networks:מציין שהגישה לנקודת הקצה החיצונית מוגבלת לטווחי כתובות IP שאתם מאשרים.
master-authorized-networks: מפורטים ערכי ה-CIDR של הרשתות המורשות. זו רשימה מופרדת בפסיקים. לדוגמה,8.8.8.8/32,8.8.8.0/24.שיטה מומלצת: משתמשים בדגל
enable-master-authorized-networksכדי להגביל את הגישה למישור הבקרה.
enable-authorized-networks-on-private-endpoint: מציין שהגישה לנקודת הקצה הפנימית מוגבלת לטווחי כתובות IP שאתם מאשרים באמצעות הדגלenable-master-authorized-networks.
no-enable-google-cloud-access: חסימת הגישה למישור הבקרה מGoogle Cloud כתובות IP חיצוניות. שימו לב שהעדכון של ההגדרה הזו לא נכנס לתוקף באופן מיידי. יכול להיות שיחלפו כמה שעות עד ש-GKE יפיץ ויאכוף את השינויים בכללי חומת האש.
enable-master-global-access: מאפשר גישה מכתובות IP באזורים אחרים שלGoogle Cloud .gcloud container clusters update CLUSTER_NAMEמחליפים את
CLUSTER_NAMEבשם האשכול.
אימות ההגדרה של מישור הבקרה
אפשר לראות את נקודות הקצה של האשכול באמצעות ה-CLI של gcloud או מסוףGoogle Cloud .
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול.
בכרטיסייה פרטי האשכול, בקטע מישור הבקרה, אפשר לבדוק את המאפיינים הבאים של נקודות הקצה של מישור הבקרה:
- DNS endpoint כולל את השם של נקודת הקצה מבוססת ה-DNS של האשכול, אם הפעלתם את נקודת הקצה הזו.
- הגישה למישור הבקרה באמצעות כתובות IPv4 כוללת את הסטטוס של נקודת הקצה מבוססת ה-IP. אם האפשרות הזו מופעלת, אפשר לראות את המידע של נקודות הקצה הציבוריות והפרטיות.
- ההגדרה גישה באמצעות כתובת IP פנימית של מישור הבקרה מכל אזור מציגה את הסטטוס מופעל אם אפשר לגשת למישור הבקרה מכתובות IP של Google מאזורים אחרים.
- רשתות מורשות: אם הפעלתם רשתות מורשות, כאן תופיע רשימת ה-CIDR שיכולות לגשת למישור הבקרה.
- Enforce authorized networks on control plane's internal endpoint shows the Enabled status if only the CIDRs in the Authorized networks field can access the internal endpoint.
- הוספת כתובות IP חיצוניות לרשתות מורשות מציגה את הסטטוס Enabled אם לכתובות ה-IP החיצוניות מ- Google Cloud יש גישה למישור הבקרה. Google Cloud
כדי לשנות מאפיין כלשהו, לוחצים על edit Control plane access using IPv4 addresses ומשנים בהתאם לתרחיש השימוש.
gcloud
כדי לוודא את ההגדרה של מישור הבקרה, מריצים את הפקודה הבאה:
gcloud container clusters describe CLUSTER_NAME
הפלט כולל בלוק controlPlaneEndpointsConfig שמתאר את הגדרת הרשת. הפלט אמור להיראות כך:
controlPlaneEndpointsConfig:
dnsEndpointConfig:
allowExternalTraffic: true
endpoint: gke-dc6d549babec45f49a431dc9ca926da159ca-518563762004.us-central1-c.autopush.gke.goog
ipEndpointsConfig:
authorizedNetworksConfig:
cidrBlocks:
- cidrBlock: 8.8.8.8/32
- cidrBlock: 8.8.8.0/24
enabled: true
gcpPublicCidrsAccessEnabled: false
privateEndpointEnforcementEnabled: true
enablePublicEndpoint: false
enabled: true
globalAccess: true
privateEndpoint: 10.128.0.13
בדוגמה הזו, האשכול מוגדר כך:
- נקודות הקצה מבוססות על DNS ועל כתובת IP.
- הרשתות המורשות מופעלות ומוגדרים טווחי ה-CIDR. הרשתות המורשות האלה נאכפות לגבי כתובת ה-IP הפנימית.
- הגישה למישור הבקרה מכתובות IP חיצוניות ( Google Cloud ) נדחית.
דוגמאות להגדרת גישה למישור הבקרה
בקטע הזה מפורטות דוגמאות להגדרת בידוד רשת. כדאי לבדוק את הדוגמאות האלה כדי לראות אם הן דומות לתרחיש לדוגמה שלכם:
- דוגמה 1: אפשר לגשת למישור הבקרה מכתובות IP מסוימות שאתם מגדירים. יכול להיות שהם יכללו כתובות IP מאזורים אחרים Google Cloud או כתובות IP ששמורות ל-Google.
- דוגמה 2: אי אפשר לגשת למישור הבקרה מכתובת IP חיצונית.
דוגמה 1: אפשר לגשת למישור הבקרה מכתובות IP מסוימות
בקטע הזה תיצרו אשכול עם הגדרות הבידוד הבאות של הרשת:
- נקודת הקצה (endpoint) מבוססת ה-DNS מופעלת במישור הבקרה.
- במישור הבקרה מופעלת נקודת הקצה החיצונית בנוסף לנקודת הקצה הפנימית שמופעלת כברירת מחדל.
- במישור הבקרה מוגדרות רשתות מורשות, כך שרק הרשתות המורשות הבאות יכולות להגיע למישור הבקרה:
- טווח של כתובות IP חיצוניות שאתם מגדירים.
- כל כתובות ה-IP הפנימיות באשכול.
- Google Cloud כתובות IP חיצוניות.
כדי ליצור את האשכול הזה, משתמשים ב-Google Cloud CLI או במסוף Google Cloud .
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על add_box יצירה.
מגדירים את האשכול בהתאם לדרישות.
בתפריט הניווט, לוחצים על Networking (רשת).
בקטע Control Plane Access (גישה למישור הבקרה), מגדירים את נקודות הקצה של מישור הבקרה:
- מסמנים את תיבת הסימון גישה באמצעות DNS.
- מסמנים את תיבת הסימון Access using IPV4 addresses.
בוחרים באפשרות הפעלת רשתות מורשות.
לוחצים על הוספה של חברת ביטוח.
מזינים שם לרשת.
בשדה Network (רשת), מזינים טווח CIDR שרוצים להעניק לו גישה למישור הבקרה של האשכול.
לוחצים על סיום.
מוסיפים רשתות מורשות נוספות לפי הצורך.
מרחיבים את הקטע הצגת כללי חומת האש של כתובות IP.
בוחרים באפשרות Access using the control plane's internal IP address from any region (גישה באמצעות כתובת ה-IP הפנימית של מישור הבקרה מכל אזור). כתובות IP פנימיות מכל אזור Google Cloud יכולות לגשת למישור הבקרה דרך כתובת ה-IP הפנימית.
בוחרים באפשרות Add Google Cloud external IP addresses to authorized networks (הוספת כתובות IP חיצוניות לרשתות מורשות). כל כתובות ה-IP החיצוניות מ- Google Cloud יכולות לגשת למישור הבקרה.
אפשר להמשיך להגדיר את רשת האשכול על ידי הגדרת בידוד של צומת או Pod ברמת האשכול.
gcloud
מריצים את הפקודה הבאה:
gcloud container clusters create-auto CLUSTER_NAME \
--enable-dns-access \
--enable-ip-access \
--enable-master-authorized-networks \
--enable-master-global-access \
--master-authorized-networks CIDR1,CIDR2,...
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של אשכול GKE. -
CIDR1,CIDR2,...: רשימה מופרדת בפסיקים של ערכי CIDR לרשתות המורשות. לדוגמה,8.8.8.8/32,8.8.8.0/24.
דוגמה 2: אפשר לגשת למישור הבקרה מכתובות IP פנימיות
בקטע הזה תיצרו אשכול עם הגדרות הבידוד הבאות של הרשת:
- נקודת הקצה (endpoint) מבוססת ה-DNS מופעלת במישור הבקרה.
- נקודת הקצה החיצונית במישור הבקרה מושבתת.
- הופעלו רשתות מורשות במישור הבקרה.
- כל הגישה למישור הבקרה דרך כתובת ה-IP הפנימית מכל אזורGoogle Cloud מותרת.
- Google Cloud כתובות IP חיצוניות אין גישה לאשכול שלכם.
אפשר ליצור את האשכול הזה באמצעות Google Cloud CLI או מסוף Google Cloud .
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על add_box יצירה.
מגדירים את האשכול בהתאם לדרישות.
בתפריט הניווט, לוחצים על Networking (רשת).
בקטע Control Plane Access (גישה למישור הבקרה), מגדירים את נקודות הקצה של מישור הבקרה:
- מסמנים את תיבת הסימון גישה באמצעות DNS.
- מסמנים את תיבת הסימון Access using IPV4 addresses.
מרחיבים את הקטע הצגת כללי חומת האש של כתובות IP.
מבטלים את הסימון של Access using the control plane's external IP address (גישה באמצעות כתובת ה-IP החיצונית של מישור הבקרה). למישור הבקרה אין גישה לכתובות IP חיצוניות.
בקטע Control Plane Access, בוחרים באפשרות Enable authorized networks.
מסמנים את התיבה גישה באמצעות כתובת ה-IP הפנימית של מישור הבקרה מכל אזור. כתובות IP פנימיות מכל אזור יכולות לגשת למישור הבקרה דרך כתובת ה-IP הפנימית. Google Cloud
אפשר להמשיך בהגדרת הרשת של האשכול על ידי הגדרת בידוד של צומת או Pod ברמת האשכול.
gcloud
מריצים את הפקודה הבאה:
gcloud container clusters create-auto CLUSTER_NAME \
--enable-dns-access \
--enable-ip-access \
--enable-private-endpoint \
--enable-master-authorized-networks \
--master-authorized-networks CIDR1,CIDR2,... \
--no-enable-google-cloud-access \
--enable-master-global-access
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
CIDR1,CIDR2,...: רשימה מופרדת בפסיקים של ערכי CIDR לרשתות המורשות. לדוגמה,8.8.8.8/32,8.8.8.0/24.
הגדרת רשתות באשכול
בקטע הזה מגדירים את האשכול כך שיהיו בו צמתים עם גישה פנימית (פרטית) או חיצונית (ציבורית). ב-GKE אפשר לשלב את תצורת הרשת של הצומת בהתאם לסוג האשכול שבו משתמשים:
- אשכול רגיל: אתם יכולים ליצור או לעדכן את מאגרי הצמתים כדי להקצות צמתים פרטיים או ציבוריים באותו אשכול. לדוגמה, אם יוצרים מאגר צמתים עם צמתים פרטיים, מערכת GKE מקצה לצמתים כתובות IP פנימיות בלבד. GKE לא משנה מאגרי צמתים קיימים. אפשר גם להגדיר את הגדרות ברירת המחדל של הרשת ברמת האשכול. GKE מחיל את הגדרת ברירת המחדל הזו של הרשת רק כשמאגרי צמתים חדשים לא כוללים הגדרה של רשת.
- אשכולות Autopilot: אתם יכולים ליצור או לעדכן את האשכול כדי להגדיר את תצורת הרשת שמוגדרת כברירת מחדל לכל עומסי העבודה. GKE מתזמן עומסי עבודה חדשים וקיימים בצמתים ציבוריים או פרטיים על סמך ההגדרה שלכם. אפשר גם להגדיר במפורש את תצורת רשת האשכול של עומס עבודה ספציפי.
הגדרת האשכול
בקטע הזה מגדירים את הרשת של האשכול ברמת האשכול. GKE מתחשב בהגדרה הזו כשמאגר הצמתים או עומס העבודה לא מוגדרים.
כדי להגדיר את התצורה ברמת האשכול, משתמשים ב-Google Cloud CLI או במסוףGoogle Cloud .
המסוף
יצירת אשכול
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על add_box יצירה, ואז בקטע 'רגיל' או 'טייס אוטומטי' לוחצים על הגדרה.
מגדירים את האשכול בהתאם לדרישות.
בתפריט הניווט, לוחצים על Networking (רשת).
בקטע Cluster networking, מבצעים את הפעולות הבאות בהתאם לתרחיש השימוש:
- בוחרים באפשרות הפעלת צמתים פרטיים כדי להקצות צמתים עם כתובות IP פנימיות בלבד (צמתים פרטיים), וכך למנוע מלקוחות חיצוניים לגשת לצמתים. תמיד תוכלו לשנות את ההגדרות האלה.
- מבטלים את הסימון של הפעלת צמתים פרטיים כדי להקצות צמתים עם כתובות IP חיצוניות בלבד (ציבוריות), וכך לאפשר ללקוחות חיצוניים לגשת לצמתים.
בקטע Advanced networking options, מגדירים מאפיינים נוספים של VPC-native. מידע נוסף זמין במאמר בנושא יצירת אשכול המותאם ל-VPC.
לוחצים על יצירה.
עדכון של אשכול קיים
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול.
בכרטיסייה Default New Node-Pool Configuration (הגדרת ברירת המחדל של מאגר צמתים חדש) בקטע Private Nodes (צמתים פרטיים), לוחצים על edit Edit Private Nodes (עריכת צמתים פרטיים).
בתיבת הדו-שיח עריכת צמתים פרטיים, מבצעים אחת מהפעולות הבאות:
- בוחרים באפשרות הפעלת צמתים פרטיים כדי להקצות צמתים עם כתובות IP פנימיות בלבד (צמתים פרטיים), וכך למנוע מלקוחות חיצוניים לגשת לצמתים. תמיד תוכלו לשנות את ההגדרות האלה.
- מבטלים את הסימון של הפעלת צמתים פרטיים כדי להקצות צמתים עם כתובות IP חיצוניות בלבד (ציבוריות), וכך לאפשר ללקוחות חיצוניים לגשת לצמתים.
לוחצים על שמירת השינויים.
gcloud
אפשר להשתמש בכל אחד מהדגלים הבאים כדי להגדיר את הרשת של האשכול:
-
enable-private-nodes: כדי להקצות צמתים עם כתובות IP פנימיות בלבד (צמתים פרטיים). כשמשתמשים בדגל הזה, כדאי לקחת בחשבון את התנאים הבאים:- חובה להשתמש בדגל
enable-ip-aliasכשמשתמשים בדגלenable-private-nodes. - הדגל
master-ipv4-cidrהוא אופציונלי ליצירת רשתות משנה פרטיות. אם משתמשים בדגל הזה, GKE יוצר רשת משנה חדשה שמשתמשת בערכים שהגדרתם ב-master-ipv4-cidr, ומשתמש ברשת המשנה החדשה כדי להקצות את כתובת ה-IP הפנימית למישור הבקרה.
- חובה להשתמש בדגל
-
no-enable-private-nodes: הקצאת צמתים עם כתובות IP חיצוניות בלבד (צמתים ציבוריים).
בקטגוריות של Autopilot, יוצרים או מעדכנים את הקטגוריה באמצעות הדגל enable-private-nodes.
כדי ליצור אשכול, משתמשים בפקודה הבאה:
gcloud container clusters create-auto CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-aliasכדי לעדכן אשכול, משתמשים בפקודה הבאה.
gcloud container clusters update CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-aliasעדכון האשכול ייכנס לתוקף רק אחרי שכל מאגרי הצמתים יתוזמנו מחדש. התהליך הזה עשוי להימשך כמה שעות.
באשכולות רגילים, יוצרים או מעדכנים את האשכול באמצעות הדגל enable-private-nodes.
כדי ליצור אשכול, משתמשים בפקודה הבאה:
gcloud container clusters create CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-aliasכדי לעדכן אשכול, משתמשים בפקודה הבאה:
gcloud container clusters update CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-aliasעדכון האשכול נכנס לתוקף רק במאגרי צמתים חדשים. GKE לא מעדכן את ההגדרה הזו במאגרי צמתים קיימים.
תצורת האשכול מוחלפת בתצורת הרשת במאגר הצמתים או ברמת עומס העבודה.
הגדרת מאגרי הצמתים או עומסי העבודה
כדי להגדיר צמתים פרטיים או ציבוריים ברמת עומס העבודה עבור אשכולות Autopilot, או מאגרי צמתים עבור אשכולות רגילים, משתמשים ב-Google Cloud CLI או במסוףGoogle Cloud . אם לא מגדירים את תצורת הרשת ברמת עומס העבודה או ברמת מאגר הצמתים, GKE מחיל את תצורת ברירת המחדל ברמת האשכול.
המסוף
בקטגוריה Standard clusters (אשכולות רגילים), מבצעים את השלבים הבאים:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
בדף פרטי האשכול, לוחצים על השם של האשכול שרוצים לשנות.
לוחצים על add_box הוספת מאגר צמתים.
מסמנים את תיבת הסימון Enable private nodes (הפעלת צמתים פרטיים) בהתאם לתרחיש השימוש:
- בוחרים באפשרות הפעלת צמתים פרטיים כדי להקצות צמתים עם כתובות IP פנימיות בלבד (צמתים פרטיים).
- מבטלים את הסימון של הפעלת צמתים פרטיים כדי להקצות צמתים עם כתובות IP חיצוניות בלבד (ציבוריות), וכך לאפשר ללקוחות חיצוניים לגשת לצמתים. אפשר לשנות את ההגדרה הזו בכל שלב.
מגדירים את מאגר הצמתים החדש.
לוחצים על יצירה.
מידע נוסף על ניהול מאגרי צמתים זמין במאמר בנושא הוספה וניהול של מאגרי צמתים.
gcloud
בקטרי Autopilot ובמאגרי צמתים רגילים שמשתמשים בהקצאת צמתים אוטומטית, מוסיפים את
nodeSelectorלמפרט של ה-Pod:cloud.google.com/private-node=trueמשתמשים ב-
private-node=trueכדי לתזמן Pod בצמתים שיש להם רק כתובות IP פנימיות (צמתים פרטיים).GKE יוצר מחדש את ה-Pods שלכם בצמתים פרטיים או בצמתים ציבוריים, בהתאם להגדרה שלכם. כדי למנוע שיבושים בעומס העבודה, צריך להעביר כל עומס עבודה בנפרד ולעקוב אחרי ההעברה.
בקטרי Standard, כדי להקצות צמתים באמצעות כתובות IP פרטיות במאגר צמתים קיים, מריצים את הפקודה הבאה:
gcloud container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-aliasמחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים שרוצים לערוך. -
CLUSTER_NAME: השם של האשכול הקיים.
אפשר להשתמש באחד מהדגלים הבאים כדי להגדיר את התצורה של הרשת של מאגר הצמתים:
-
enable-private-nodes: כדי להקצות צמתים עם כתובות IP פנימיות בלבד (צמתים פרטיים). -
no-enable-private-nodes: הקצאת צמתים עם כתובות IP חיצוניות בלבד (צמתים ציבוריים).
-
הגדרות מתקדמות
בקטעים הבאים מתוארות הגדרות מתקדמות שאולי תרצו להשתמש בהן כשאתם מגדירים את הבידוד של רשת האשכול.
שימוש ב-Cloud Shell כדי לגשת לאשכול עם נקודת קצה חיצונית מושבתת
אם נקודת הקצה החיצונית של מישור הבקרה של האשכול מושבתת, אי אפשר לגשת למישור הבקרה של GKE באמצעות Cloud Shell. אם רוצים להשתמש ב-Cloud Shell כדי לגשת לאשכול, מומלץ להפעיל את נקודת הקצה מבוססת ה-DNS.
כדי לאמת את הגישה לאשכול, צריך לבצע את השלבים הבאים:
אם הפעלתם את נקודת הקצה מבוססת ה-DNS, מריצים את הפקודה הבאה כדי לקבל את פרטי הכניסה לאשכול:
gcloud container clusters get-credentials CLUSTER_NAME \ --dns-endpointאם הפעלתם את נקודת הקצה מבוססת ה-IP, מריצים את הפקודה הבאה כדי לקבל את פרטי הכניסה של האשכול:
gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --internal-ipמחליפים את
PROJECT_IDבמזהה הפרויקט.משתמשים ב-
kubectlב-Cloud Shell כדי לגשת לאשכול:kubectl get nodesהפלט אמור להיראות כך:
NAME STATUS ROLES AGE VERSION gke-cluster-1-default-pool-7d914212-18jv Ready <none> 104m v1.21.5-gke.1302 gke-cluster-1-default-pool-7d914212-3d9p Ready <none> 104m v1.21.5-gke.1302 gke-cluster-1-default-pool-7d914212-wgqf Ready <none> 104m v1.21.5-gke.1302
הפקודה get-credentials משתמשת אוטומטית בנקודת הקצה מבוססת ה-DNS אם הגישה לנקודת הקצה מבוססת ה-IP מושבתת.
הוספת כללים לחומת האש לתרחישי שימוש ספציפיים
בקטע הזה מוסבר איך להוסיף כלל חומת אש לאשכול. כברירת מחדל, כללי חומת האש מגבילים את מישור הבקרה של האשכול כך שיוכל ליזום רק חיבורי TCP לצמתים ול-Pods ביציאות 443 (HTTPS) ו-10250 (kubelet).
יכול להיות שתצטרכו להוסיף כללים לחומת האש כדי לאפשר גישה ליציאות נוספות, אם אתם משתמשים בתכונות מסוימות של Kubernetes. אל תיצרו כללים לחומת אש או כללים למדיניות חומת אש היררכית עם עדיפות גבוהה יותר מכללי חומת האש שנוצרו באופן אוטומטי.
תכונות של Kubernetes שדורשות כללי חומת אש נוספים כוללות:
- Admission webhooks
- Aggregated API servers
- המרת webhook
- הגדרה דינמית של ביקורת
- באופן כללי, כל API שיש לו שדה ServiceReference דורש כללי חומת אש נוספים.
הוספת כלל חומת אש מאפשרת תעבורת נתונים ממישור הבקרה של האשכול לכל אחד מהרכיבים הבאים:
- היציאה שצוינה של כל צומת (hostPort).
- היציאה שצוינה של כל Pod שפועל בצמתים האלה.
- היציאה שצוינה של כל שירות שפועל בצמתים האלה.
מידע על כללים של חומת אש זמין במאמר כללים של חומת אש במסמכי התיעוד של Cloud Load Balancing.
כדי להוסיף כלל חומת אש באשכול, צריך לתעד את בלוק ה-CIDR של מישור הבקרה של האשכול ואת היעד שבו נעשה שימוש. אחרי שתקליטו את ההודעה, תוכלו ליצור את הכלל.
הצגת חסימת ה-CIDR של מישור הבקרה
כדי להוסיף כלל לחומת האש, צריך את בלוק ה-CIDR של מישור הבקרה של האשכול.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול.
בכרטיסייה Details (פרטים), בקטע Networking (רשת), רושמים את הערך בשדה Control plane address range (טווח כתובות של מישור הבקרה).
gcloud
מריצים את הפקודה הבאה:
gcloud container clusters describe CLUSTER_NAME
מחליפים את CLUSTER_NAME בשם האשכול.
בפלט הפקודה, רושמים את הערך בשדה masterIpv4CidrBlock.
צפייה בכללים קיימים של חומת האש
צריך לציין את היעד (במקרה הזה, צמתי היעד) שכללי חומת האש הקיימים באשכול משתמשים בהם.
המסוף
נכנסים לדף Firewall policies במסוף Google Cloud .
בקטע Filter table (סינון הטבלה) של VPC firewall rules (כללים של חומת אש ב-VPC), מזינים
gke-CLUSTER_NAME.
בתוצאות, שימו לב לערך בשדה Targets (יעדים).
gcloud
מריצים את הפקודה הבאה:
gcloud compute firewall-rules list \
--filter 'name~^gke-CLUSTER_NAME' \
--format 'table(
name,
network,
direction,
sourceRanges.list():label=SRC_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
targetTags.list():label=TARGET_TAGS
)'
בפלט הפקודה, רושמים את הערך בשדה Targets.
כדי להציג את כללי חומת האש של VPC משותף, מוסיפים את הדגל --project HOST_PROJECT_ID לפקודה.
הוספת כלל לחומת האש
המסוף
נכנסים לדף Firewall policies במסוף Google Cloud .
לוחצים על add_box יצירת כלל לחומת האש.
בשדה שם, מזינים את השם של כלל חומת האש.
ברשימה Network, בוחרים את הרשת הרלוונטית.
בקטע Direction of traffic (כיוון התנועה), לוחצים על Ingress (תנועה נכנסת).
בקטע פעולה במקרה של התאמה, לוחצים על אישור.
ברשימה Targets (יעדים), בוחרים באפשרות Specified target tags (תגי יעד שצוינו).
בקטע Target tags, מזינים את ערך היעד שרשמתם קודם.
ברשימה Source filter בוחרים באפשרות IPv4 ranges.
בשדה טווחים של כתובות IPv4 של המקור, מזינים את בלוק ה-CIDR של מישור הבקרה של האשכול.
בקטע Protocols and ports (פרוטוקולים ויציאות), לוחצים על Specified protocols and ports (פרוטוקולים ויציאות שצוינו), מסמנים את התיבה של הפרוטוקול הרלוונטי (tcp או udp) ומזינים את מספר היציאה בשדה הפרוטוקול.
לוחצים על יצירה.
gcloud
מריצים את הפקודה הבאה:
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--action ALLOW \
--direction INGRESS \
--source-ranges CONTROL_PLANE_RANGE \
--rules PROTOCOL:PORT \
--target-tags TARGET
מחליפים את מה שכתוב בשדות הבאים:
-
FIREWALL_RULE_NAME: השם שבוחרים לכלל חומת האש. -
CONTROL_PLANE_RANGE: טווח כתובות ה-IP של מישור הבקרה של האשכול (masterIpv4CidrBlock) שאספתם קודם. -
PROTOCOL:PORT: היציאה והפרוטוקול שלה,tcpאוudp. -
TARGET: ערך היעד (Targets) שאספתם קודם.
כדי להוסיף כלל לחומת אש עבור VPC משותף, מוסיפים את הדגלים הבאים לפקודה:
--project HOST_PROJECT_ID
--network NETWORK_ID
הענקת גישה לאינטרנט מחוץ לצמתים פרטיים
כדי לספק גישה לאינטרנט למכונות פרטיות, למשל כדי לשלוף תמונות ממאגר חיצוני, צריך להשתמש ב-Cloud NAT כדי ליצור ולתת הגדרות ל-Cloud Router. שירות Cloud NAT מאפשר לצמתים פרטיים ליצור חיבורים יוצאים דרך האינטרנט כדי לשלוח ולקבל חבילות.
ה-Cloud Router מאפשר לכל הצמתים באזור להשתמש ב-Cloud NAT לכל טווחי כתובות ה-IP הראשיים והחלופיים. בנוסף, הוא מקצה באופן אוטומטי את כתובות ה-IP החיצוניות לשער ה-NAT.
הוראות ליצירה ולהגדרה של Cloud Router מופיעות במאמר יצירת הגדרת Cloud NAT באמצעות Cloud Router במסמכי Cloud NAT.
פריסת אפליקציית קונטיינר של Windows Server
כדי ללמוד איך פורסים אפליקציית קונטיינר של Windows Server לאשכול עם צמתים פרטיים, אפשר לעיין במסמכי מידע על מאגר צמתים של Windows.
המאמרים הבאים
- מידע נוסף על בידוד רשת ב-GKE
- איך יוצרים אשכול המותאם ל-VPC
- מידע נוסף על Private Service Connect
- איך מתקינים את kubectl ומגדירים גישה לאשכול