הגדרת אשכול ועומס עבודה לצורך העברה לסביבת Staging

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

מטרות

כאן מפורטות כמה משימות בסיסיות להגדרת אשכול לבדיקה ולפיתוח:

  1. הגבלת הגישה לשירות הניהול של האשכול, שנקרא מישור הבקרה. כך מונעים ממשתמשים לא מורשים לראות או לשנות את ההגדרות של אשכולות ועומסי עבודה.

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

  3. בדיקת התאמה לעומס (auto-scaling), שמשכפלת באופן אוטומטי את ה-Pods כשהביקוש עולה מעל ערך סף שאתם מציינים.

  4. כדאי לשנות את הגדרות השמירה של היומנים כך שרק היומנים שאתם צריכים יישמרו.

  5. מפעילים את מרכז הבקרה של מצב האבטחה ב-GKE.

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


לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף Google Cloud :

תראו לי איך


עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

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

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

יוצרים אשכול Kubernetes ופורסים עומס עבודה. במאמר יצירת אשכול ופריסת עומס עבודה מוסבר איך עושים את זה.

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

כדי לשפר את רמת האבטחה, כדאי לאפשר גישה למישור הבקרה של האשכול רק לרשת מורשית ולמסוףGoogle Cloud Cloud Shell.

הגדרת רשת מורשית

  1. נכנסים לדף Clusters של GKE במסוף Google Cloud .

    כניסה לדף Clusters

  2. בעמודה Name (שם), לוחצים על שם האשכול, hello-world-cluster.

  3. בשורה Control plane authorized networks בטבלה Networking, לוחצים על Edit.

  4. בתיבת הדו-שיח 'עריכת רשתות מורשות של מישור הבקרה', בוחרים באפשרות הפעלת רשתות מורשות של מישור הבקרה.

  5. בוחרים באפשרות Allow access through Google Cloud public IP addresses.

    כך תוכלו לנהל את האשכול ממסוף Google Cloud ומ-Cloud Shell

  6. לוחצים על הוספה של חברת ביטוח.

  7. מזינים שם, למשל My example on-prem network (הדוגמה שלי לרשת מקומית).

  8. בקטע Network, מזינים את טווח כתובות ה-IP שרוצים להעניק להן גישה למישור הבקרה של האשכול. משתמשים בסימון CIDR.

    לדוגמה, מזינים את הטווח הבא:

    198.51.100.0/24
    
  9. לוחצים על סיום.

  10. לוחצים על שמירת השינויים.

    הפעולה הזו נמשכת כמה דקות.

  11. לוחצים על הלחצן Notifications (התראות) ומחכים עד שמופיע סימן וי ירוק לצד Update control plane authorized networks setting in Kubernetes Engine cluster "hello-world-cluster" (עדכון ההגדרה של רשתות מורשות במישור הבקרה באשכול Kubernetes Engine ‏hello-world-cluster).

הגדרתם מישור בקרה של אשכול שניתן לגשת אליו רק מהרשת המורשית שלכם ומכתובות IP ציבוריות (מה שמאפשר לכם לנהל את האשכול ממסוף Google Cloud ו-Cloud Shell).Google Cloud

כדי לראות את כתובת ה-IP של מישור הבקרה של האשכול ולאשר את הכתובות של הרשת המורשית, לוחצים על הבא.

הצגת כתובות IP

  1. עוברים לדף Clusters ב-GKE.

    כניסה לדף Clusters

  2. בעמודה Name (שם), לוחצים על שם האשכול, hello-world-cluster.

  3. בטבלה Cluster basics, בשורה External endpoint מוצגת כתובת ה-IP של מישור הבקרה של האשכול.

  4. בטבלה Networking, בשורה Control plane authorized networks מוצגות כתובות ה-IP של הרשת המורשית.

עכשיו אפשר לגשת למישור הבקרה של האשכול רק מרשת מורשית, ממסוףGoogle Cloud ומ-Cloud Shell.

ציון של מחלקת מחשוב

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

עדכון מפרט הפריסה

  1. נכנסים לדף Workloads ב-GKE במסוף Google Cloud .

    כניסה לדף Workloads

  2. בעמודה Name (שם), לוחצים על שם האפליקציה שפרסתם, hello-world-app.

  3. לוחצים על עריכה כדי לערוך את מפרט הפריסה.

  4. בכרטיסייה YAML, מחפשים את השורה שמתחילה ב-containers:

  5. מעל השורה הזו, מוסיפים את השורות הבאות:

    nodeSelector:
      cloud.google.com/compute-class: "Scale-Out"
    

    חשוב לוודא שההזחה בקובץ זהה להזחה בדוגמה הבאה:

    apiVersion: apps/v1
     kind: Deployment
     ...
     spec:
     ...
       template:
       ...
         spec:
           nodeSelector:
             cloud.google.com/compute-class: "Scale-Out"
           containers:
           - name: hello-app
             image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    
  6. כדי להוריד את הקובץ הזה ולהשתמש בו כבסיס להגדרות של עומסי עבודה אחרים, לוחצים על הורדה.

  7. לוחצים על Save.

כל העתקים של ה-Pod שנוצרים כדי להריץ את עומס העבודה ישתמשו במחלקת המחשוב שציינתם.

בדיקת התאמה אוטומטית לעומס

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

עדכון הגדרות של שינוי גודל אוטומטי של Pod

  1. עוברים לדף Workloads ב-GKE.

    כניסה לדף Workloads

  2. בעמודה Name (שם), לוחצים על שם הפריסה, hello-world-app.

  3. לוחצים על פעולות.

  4. בוחרים באפשרות Autoscale (שינוי גודל אוטומטי) ולוחצים על Horizontal pod autoscaling (התאמה אופקית של קבוצות Pod לעומס).

  5. בתיבת הדו-שיח Configure Horizontal Pod Autoscaler, בקטע Autoscaling metrics, לוחצים על CPU.

  6. משנים את הערך של Target ל-2, וכך המערכת תגדיל באופן אוטומטי את מספר ה-Pods אם הם ישתמשו ב-2% לפחות ממשאבי המעבד שהוגדרו להם. ערך היעד הנמוך הזה מבטיח שתוכלו להפעיל בקלות את ההתאמה האוטומטית לעומס בשלב הבא.

  7. לוחצים על Save.

כדי להפעיל את ההתאמה האוטומטית לעומס (automatic scaling), לוחצים על הבא.

יצירת עומס להפעלת התאמה אוטומטית לעומס

  1. פותחים את Cloud Shell בלחיצה על Cloud Shell.

  2. מדביקים את הפקודה הבאה ב-Cloud Shell:

      for i in $(seq -s' ' 1 10000); do wget -q -O- <var>external-IP-address</var>; done
    

    מחליפים את external-IP-address בכתובת ה-IP שמופיעה בעמודה Endpoints.

  3. מקישים על Enter כדי להריץ את הפקודה ולשלוח 10,000 בקשות לאפליקציית hello-world-app.

  4. מחכים עד שהפקודה wget תסיים לפעול ועד שההנחיה בשורת הפקודה תופיע מחדש.

  5. אפשר לסגור את Cloud Shell כשהפקודה wget מסתיימת.

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

מעקב אחרי שינוי העומס

  1. בדף Deployment details של עומס העבודה, מחפשים בתרשים CPU עלייה חדה בשימוש במעבד.

    יכול להיות שתצטרכו לחכות עד 5 דקות כדי לראות את נקודת השיא.

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

  3. בטבלה Managed Pods (פודים מנוהלים), אפשר לראות ששלושה רפליקות של עומס העבודה פועלות עכשיו.

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

  4. אפשר לחכות כ-10 דקות, ללחוץ על רענון ולראות שצריכת ה-CPU ירדה, ולכן מספר ה-Pods ב-Managed Pods חוזר לאחד.

בדקתם את ההתאמה האוטומטית לעומס וראיתם את שינוי הגודל של עומס העבודה.

שינוי הגדרת השמירה של יומנים

כברירת מחדל, Cloud Logging קולט את כל היומנים מאשכולות GKE. הטמעה של כמויות גדולות של נתוני יומנים עלולה לגרום לחיוב. כדי לוודא שאתם מעבירים רק את נתוני היומנים שאתם צריכים לסביבת ההכנה, אתם צריכים לשנות את הגדרות השמירה של היומנים.

יצירת מסנן ליומנים

  1. במסוף Google Cloud , נכנסים לדף Logs Explorer:

    כניסה אל Logs Explorer

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

    שימו לב שבחלונית Query results מוצגים יומנים מכל המשאבים בפרויקט.

  2. מעל תוצאות השאילתה:

    1. לוחצים על Resource.

    2. מחפשים את Kubernetes cluster ולוחצים עליו.

    3. לוחצים על us-central-1.

    4. לוחצים על hello-world-cluster.

    5. לוחצים על אישור.

  3. לוחצים על חומרה ובוחרים באפשרות מידע (שמשתנה למידע ומעלה כשמעבירים מעליה את העכבר).

  4. לוחצים על Run query.

  5. שימו לב שתוצאות השאילתה מכילות עכשיו רק הודעות INFO מהאשכול שלכם בשלב ההכנה.

  6. מעתיקים את השאילתה מעורך השאילתות. תדביקו את השאילתה הזו כשתיצרו מסנן ל-sink ביומן.

כדי ליצור sink ביומן וקטגוריה לאחסון, לוחצים על הבא.

יצירת sink ביומן וקטגוריית אחסון

  1. עוברים לדף נתב יומן ב-רישום ביומן.

    כניסה לדף Log Router

  2. לוחצים על Create sink (יצירת יעד).

  3. בשדה Name (שם), מזינים את השם הבא:

    hello-world-cluster-sink
    
  4. לוחצים על הבא.

  5. בקטע Select sink service, בוחרים באפשרות Logging bucket.

  6. בקטע Select a log bucket (בחירת קטגוריה ביומן), בוחרים באפשרות Create new log bucket (יצירת קטגוריה חדשה ביומן).

  7. בקטע פרטי קטגוריה, מזינים שם ייחודי, למשל:

    hello-world-bucket-<var>user-id</var>
    
  8. לוחצים על Create bucket.

  9. בקטע Sink destination (יעד לנתונים), לוחצים על Next (הבא).

  10. בקטע Build inclusion filter (יצירת מסנן הכללה), מדביקים את השאילתה שיצרתם ב-Logs Explorer.

  11. לוחצים על Create sink (יצירת יעד).

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

הצגת היומנים של האשכול

  1. במסוף Google Cloud , נכנסים לדף Logs Explorer:

    כניסה אל Logs Explorer

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

  2. לוחצים על צמצום ההיקף.

  3. בוחרים באפשרות Log View (תצוגת יומן).

  4. בוחרים את התצוגה _AllLogs עבור קטגוריה ביומן.

  5. לוחצים על אישור.

    בQuery results מוצגים רק היומנים שמאוחסנים בקטגוריה ביומן.

שיניתם את הגדרות השמירה של היומנים כך שבאשכול ההעברה לא יאוחסנו הודעות DEBUG. אתם יכולים להגדיר הרשאות כך שרק משתמשים מסוימים יוכלו לראות את היומנים בקטגוריה של האשכול.

הפעלת מרכז הבקרה של מצב האבטחה

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

לבדוק אם יש חששות

  1. עוברים לדף Security posture ב-GKE.

    מעבר אל "רמת האבטחה"

  2. אם תתבקשו להפעיל את Container Security API, לחצו על Enable (הפעלה).

  3. בכרטיסייה Dashboards מוצג סיכום של הבעיות באשכולות ובעומסי העבודה של הפרויקט.

  4. לוחצים על הכרטיסייה בעיות.

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

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

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