מידע על Private Service Connect

בדף הזה יש סקירה כללית של Private Service Connect באשכולות Google Kubernetes Engine ‏ (GKE).

בדף הזה אנחנו יוצאים מנקודת הנחה שאתם מכירים את הנושאים הבאים:

  • יסודות של רשתות, כמו הקצאת כתובות IP
  • רשתות VPC

סקירה כללית

‫Private Service Connect‏ (PSC) הוא חלק מתשתית הרשת של Google Cloud, שמאפשרת לאשכולות GKE שלכם לצרוך באופן מאובטח ופרטי שירותים שמארחים ב- Google Cloud או בסביבות מקומיות, בלי לחשוף את השירותים האלה לציבור. עם PSC,‏ Google Cloud מקצה כתובת IP פנימית למישור הבקרה כדי להעביר בקשות לממשק ה-API לניהול אשכולות GKE, וכך מאפשר לכם לנהל את האשכולות בלי שהתנועה תעבור באינטרנט הציבורי. ‫PSC מספק מסגרת עקבית שעוזרת לחבר בין רשתות שונות באמצעות גישה של Service Networking, ומאפשרת ליצרני שירותים ולצרכני שירותים לתקשר באמצעות כתובות IP פנימיות בתוך VPC.

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

היתרונות של אשכולות שמופעל בהם Private Service Connect

אבטחה: PSC יוצר חיבורים פרטיים בין מישור הבקרה של אשכול ה-GKE לבין הצמתים, כך שהתנועה נשארת כולה בתוך הרשת של Google ולא עוברת דרך האינטרנט הציבורי. כך מצמצמים את הסיכון לגישה לא מורשית.

קישוריות פשוטה יותר: באשכולות PSC, לא צריך לנהל רשתות משנה ספציפיות לנקודת הקצה של מישור הבקרה. נקודת הקצה של PSC ממוקמת כולה ברשת האשכול, כך שאין צורך בהגדרות רשת מורכבות.

יכולת הרחבה: אתם יכולים ליצור עד 1,000 אשכולות עם PSC כדי לעמוד בדרישות גבוהות של משאבים. לעומת זאת, אפשר ליצור עד 75 אשכולות לכל אזור או אזור משנה לאשכולות באמצעות קישור (peering) בין רשתות VPC שכנות.

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

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

מגבלות

למישור הבקרה יש נקודת קצה פנימית ונקודת קצה חיצונית. נקודת הקצה הפנימית של מישור הבקרה לא תומכת בכתובות IP פנימיות בכתובות URL של וווב-הוקים שאתם מגדירים. אם יש לכם webhook עם כתובת IP פנימית בכתובת ה-URL, תוכלו לצמצם את הבעיה של חוסר התאימות באמצעות השלבים הבאים:

  1. יצירת שירות ללא ראש (headless) בלי סלקטור כדי לנהל ידנית את נקודות הקצה שאליהן השירות הזה מפנה תנועה. בדוגמה הבאה מוצג שירות עם webhook שמקשיב ליציאה 3000:

    apiVersion: v1
    kind: Service
    metadata:
      name: <service-name>
    spec:
      clusterIP: None
      ports:
      - port: 3000
        targetPort: 3000
    
  2. יוצרים נקודת קצה תואמת ליעד הנדרש. לדוגמה, אם ה-webhook שלכם משתמש בכתובת ה-IP הפנימית 10.0.0.1 בכתובת ה-URL, תוכלו ליצור את נקודת הקצה הבאה:

    apiVersion: v1
    kind: Endpoints
    metadata:
      name: <service-name>
    subsets:
    - addresses:
      - ip: 10.0.0.1
      ports:
      - port: 3000
    
  3. מעדכנים את הגדרות ה-webhook: בהגדרות ה-webhook, מוחקים את כתובת ה-URL עם כתובת ה-IP הפנימית ומוסיפים את השירות שיצרתם בשלב הראשון. לדוגמה:

    ...
    kind: ValidatingWebhookConfiguration
    ...
    webhooks:
    - name: <webhook-name>
    ...
      clientConfig:
        service:
          name: <service-name>
          namespace: <namespace>
          path: "/validate"
          port: 3000
    

    בדוגמה הקודמת, ל-webhook יש נתיב של /validate והוא מאזין ליציאה 3000.

  4. אימות ה-webhook: מוודאים שה-webhook יכול להמשיך לקבל בקשות משרת ה-API, ויכול לאשר, לדחות או לשנות את הבקשה על סמך לוגיקה מותאמת אישית. אם מופיעה שגיאה באימות ה-webhook, יכול להיות שתצטרכו ליצור אישור חדש ואז לעדכן את הגדרות ה-webhook עם פרטי האישור החדש. לדוגמה:

    ...
    kind: ValidatingWebhookConfiguration
    ...
    webhooks:
    - name: <webhook-name>
    ...
      clientConfig:
        ...
        caBundle: <new-certificate>
    ...
    

ארכיטקטורה

התרשים הבא מספק סקירה כללית של הארכיטקטורה של אשכול באמצעות PSC:

ארכיטקטורה של Private Service Connect ב-GKE.
איור: ארכיטקטורת Private Service Connect

הרכיבים העיקריים של אשכול שמופעל בו PSC:

מישור הבקרה: לכל אשכול GKE יש שרת Kubernetes API שמנוהל על ידי מישור הבקרה. מישור הבקרה פועל במכונה וירטואלית (VM) שנמצאת ברשת VPC בפרויקט שמנוהל על ידי Google. ל-cluster אזורי יש כמה עותקים של מישור הבקרה, וכל אחד מהם פועל במכונה וירטואלית משלו.

למישור הבקרה יש נקודת קצה פנימית (נקודת קצה של Private Service Connect) לתקשורת פנימית בין אשכולות ונקודת קצה חיצונית. אפשר להשבית את נקודת הקצה החיצונית. התעבורה בין הצמתים לבין מישור הבקרה מנותבת באופן מלא באמצעות כתובות IP פנימיות. מידע על הגדרת האשכול זמין במאמר אימות ההגדרה של מישור הבקרה.

רשת VPC: זוהי רשת וירטואלית שבה יוצרים תת-רשתות עם טווחי כתובות IP פנימיות, במיוחד עבור הצמתים וה-Pods של האשכול.

נקודת קצה מסוג Private Service Connect: זוהי נקודת הקצה הפנימית במישור הבקרה של האשכול, שנמצאת ברשת ה-VPC של הפרויקט. נקודת הקצה של PSC משמשת כנקודת הכניסה למישור הבקרה של האשכול.

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

הגדרת גישה לאשכול

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

גישה למישור הבקרה

  • גישה למישור הבקרה באמצעות נקודת קצה שמבוססת על DNS בלבד (מומלץ). אתם יכולים לאשר בקשות לגישה למישור הבקרה על ידי יצירת כללי מדיניות הרשאה ב-IAM.

  • גישה למישור הבקרה באמצעות נקודות קצה מבוססות-IP בלבד. אתם יכולים להשתמש בנקודות הקצה החיצוניות והפנימיות של מישור הבקרה, או להשבית את נקודת הקצה החיצונית כדי לאפשר גישה רק מכתובות IP שמורות של Google (למטרות ניהול אשכולות) ומכתובות IP פנימיות של אשכולות GKE.

    אם אתם משתמשים בכתובות IP, מומלץ להשתמש ברשתות מורשות כדי להגביל את הגישה למישור הבקרה של האשכול. באמצעות רשתות מורשות, אפשר גם לחסום גישה למישור הבקרה מ Google Cloud מכונות וירטואליות, מ-Cloud Run או מפונקציות Cloud Run שמקורן ב Google Cloud כתובות IP חיצוניות.

  • גישה למישור הבקרה באמצעות נקודות קצה מבוססות DNS ונקודות קצה מבוססות IP.

גישה לצומת באשכול

באמצעות אשכולות עם PSC, אפשר להגדיר אשכולות במצב מעורב. אתם יכולים להגדיר את האשכול כך שיהיו בו צמתים עם גישה פנימית או חיצונית. אפשר גם לשנות את הגדרות הרשת של הצומת בהתאם לסוג האשכול שבו משתמשים:

  • במקרים של אשכולות Autopilot, אפשר להגדיר שעומסי עבודה מסוימים יפעלו בצמתים פרטיים ועומסי עבודה אחרים יפעלו בצמתים ציבוריים. לדוגמה, יכול להיות שאתם מריצים באשכול שלכם שילוב של עומסי עבודה, שחלקם דורשים גישה לאינטרנט וחלקם לא. אתם יכולים לפרוס עומס עבודה בצומת עם כתובת IP חיצונית כדי לוודא שרק עומסי עבודה כאלה יהיו נגישים לציבור.

  • במקרים של אשכולות רגילים, אתם יכולים להקצות לחלק מהצמתים כתובות IP פנימיות, ולחלק מהצמתים כתובות IP חיצוניות.

אשכולות עם Private Service Connect

כדי לבדוק אם האשכול משתמש ב-Private Service Connect, מריצים את הפקודה gcloud container clusters describe. אם האשכול שלכם משתמש ב-Private Service Connect, למשאב privateClusterConfig יש את הערכים הבאים:

  • השדה peeringName ריק או לא קיים.
  • הוקצה ערך לשדה privateEndpoint.

כדי להפעיל את ה-PSC באשכול, צריך ליצור את האשכול בגרסה 1.29 ואילך. אחרת, בגרסאות 1.28 ואילך, צריך ליצור את האשכול בלי להפעיל צמתים פרטיים. תמיד אפשר לעדכן את ההגדרה הזו ולהפעיל צמתים פרטיים אחרי יצירת האשכול.

יתרחשו בעיות ברשת של האשכול, כולל השבתה.

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