PracticU

בדיקת אתר אינטרנט
בתוך הקונטיינר

בלי כתוביותעם כתוביות
PracticU › קורס קוברנטיקס - Kubernetes › בדיקת אתר אינטרנט בתוך הקונטיינר
מילון מושגים:
אתר אינטרנט - אוסף של דפים ומשאבים מקושרים המתארחים תחת כתובת אחת ומוגשים דרך דפדפן.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
Kubernetes - מערכת לניהול ותזמור של קונטיינרים בקנה מידה גדול, שמפעילה, מרחיבה ומתחזקת אותם אוטומטית.
Localhost - שם המפנה למחשב המקומי עצמו (כתובת 127.0.0.1), המשמש לבדיקת שירותים הרצים על אותו מחשב.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.

בדיקת אתר אינטרנט בתוך הקונטיינר
Kubernetes צריך לדעת אם הקונטיינר בתוך הפוד עדיין מתפקד. לשם כך מגדירים liveness probe, בדיקת חיות, ואם הבדיקה נכשלת הקונטיינר נהרג ונוצר חדש באותו pod.
איך הבדיקה בנויה
1. הפקודה: ה-probe מריץ bin/sh -c, גולש ל-localhost בפורט 80 ומעביר את התוצאה ל-grep שמחפש את הטקסט "welcome to Practicu". אם הטקסט נמצא, grep מסיים בקוד אפס והכול תקין, ואם לא, בקוד אחד.
2. התזמון: הבדיקה חוזרת כל עשר שניות והראשונה מתבצעת אחרי חמש עשרה שניות מההפעלה. עד שתי נפילות מותרות, וברירת המחדל שלוש. נפילה עוברת קוד יציאה שאינו אפס.
3. סקריפט מפורש: אפשר לכתוב if שמדפיס health check ומחזיר אפס או אחד, אבל זה מיותר כי grep כבר מחזיר את הקוד.
4. שינוי ה-image: ב-command של הקונטיינר nginx הוחלף ההפעלה המקורי בפקודה שמדפיסה את הטקסט לתוך index.html. כך מקנפגים image קיים בלי קונטיינר עזר.
5. הוספת ה-CMD המקורי: מכיוון שהפקודה החליפה את זו של ה-image, nginx לא עלה. את הפקודה החסרה מצאו באמצעות docker pull של ה-image ב-Docker Desktop, וב-layers בשורה האחרונה ראו את ה-CMD. היא נוספה בסוף הסקריפט.
6. הדגמה: אחרי apply נכנסים לפוד וכותבים AAA לתוך index.html. ב-describe רואים שהקונטיינר unhealthy פעמיים, ואז pulling, creating ו-started. ב-get pods מופיע restart אחד, אבל הפוד עצמו נשאר.
שימו לב
מי שמחליף את ה-command של image חייב לבדוק מה הפקודה המקורית ולהוסיף אותה בסוף הסקריפט, כדי שה-image יעבוד תקין.
אחרי ההרצאה אפשר להגדיר בדיקת חיות לקונטיינר ולהבין למה "restart" כאן הוא הריגה של הקונטיינר בלבד.
השיעור הבא בקורס: הסבר על secret Kubernetes

פרקי ההרצאה: בדיקת אתר אינטרנט בתוך הקונטיינר

  1. 00:00

    בדיקה אם הקונטיינר חי או מת

  2. 00:44

    liveness probe עם grep

  3. 01:26

    קודי יציאה 0 או 1 בסקריפט

  4. 02:01

    תדירות הבדיקה ומספר הנפילות

  5. 02:38

    שינוי פקודת ההפעלה של Nginx

תמלול ההרצאה: בדיקת אתר אינטרנט בתוך הקונטיינר

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

  1. 00:02

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

  2. 00:22

    ובשביל זה בתוך ה-pod יש לנו livness probe, בדיקת חיות. האם הוא חי או מת. ואנחנו אומרים לו להריץ פקודה bin sh מינוס C.

  3. 00:33

    זאת אומרת, לפתוח CMD חדש, shell חדש ובפנים להריץ command, לגלוש לפורט שמונים ב-local host ומתוך התוצאה לעשות grep, לחפש welcome to Practicu. אם הכל טוב, הגרפ מסתיים עם קוד אפס, שזה הכל תקין.

  4. 00:50

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

  5. 01:07

    דרך אגב, הסימן הזה אומר לקובץ YAML שהסקריפט יכול להיות מורכב מכמה שורות. האמת שאני יכול לעשות סקריפט מפורש יותר, לכתוב if, התוצאה של הפקודה הקודמת equal אפס, שווה לאפס.

  6. 01:21

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

  7. 01:43

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

  8. 01:56

    אמרתי לו כל עשר שניות לעשות את הבדיקה הזאת, ואם הבדיקה הזאת מופלית, מעיפים את הקונטיינר ויוצרים אחד חדש מתוך ה-image. דרך אגב, ה-image שלנו של הקונטיינר זה Nginx, גרסה אחרונה, נקודה טיים latest.

  9. 02:10

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

  10. 02:22

    דרך אגב, עשיתי פה עוד משהו מעניין. בתוך ה-image של Nginx הרצתי פקודה command שמשנה את ההתנהגות הדיפולטית של Nginx. זאת אומרת שברגע שה-image הזה מופעל, מתבצעת הפקודה שלי.

  11. 02:38

    עוד פעם אני מריץ shell עם command משלי, שזה למעשה כמו לפתוח CMD ולהגיד לו ישר להריץ בתוך CMD איזושהי פקודה. הפקודה שלי זה Echo, תדפיס welcome to Practicu website לתוך קובץ.

  12. 02:51

    שימו לב, זה redirect, מפנה את ה-output הסטנדרטי במקום למסך, לקובץ הזה של index HTML. למעשה אני מחליף לו את הדף הדיפולטי של index HTML.

  13. 03:02

    אבל שימו לב מה עשיתי. אני החלפתי את ה-command המקורי, את הפקודת הפעלה המקורית שהייתה בתוך Nginx, והוא מתחיל להשתגע כי חסר לו משהו. איך אפשר לגלות מה חסר?

  14. 03:16

    אני אקפוץ לכם לסוף.

לקורס המלא: קורס קוברנטיס – Kubernetes

ההרצאה הקודמת: הסבר על Deployment - קוברנטיס - Kubernetes

ההרצאה הבאה: הסבר על secret - Kubernetes

הרצאות קשורות מקורסים אחרים

  • הצגת אתר אינטרנט באפליקציה
  • בניית אתר אינטרנט ב-NodeJS
  • מבנה אתר אינטרנט - Grid Layout - חלק 1
  • אירוח אתר אינטרנט בבית - FreeDNS

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio