PracticU

הסבר על Kubernetes - Ingrees

בלי כתוביותעם כתוביות
PracticU › קורס קוברנטיקס - Kubernetes › הסבר על Kubernetes - Ingrees
מילון מושגים:
Kubernetes - מערכת לניהול ותזמור של קונטיינרים בקנה מידה גדול, שמפעילה, מרחיבה ומתחזקת אותם אוטומטית.
פרוקסי - שרת מתווך שמעביר בקשות בין לקוח ליעד, ויכול לשמש להסתרה, לסינון, למטמון או לבקרת גישה.
HTTP - פרוטוקול להעברת דפי אינטרנט ונתונים בין דפדפן לשרת. הגרסה המאובטחת שלו היא HTTPS.
HTTPS - הגרסה המאובטחת של HTTP, שמצפינה את התקשורת בין הדפדפן לשרת בעזרת TLS ומאמתת את זהות האתר.
הצפנה - המרת מידע לצורה בלתי קריאה בעזרת מפתח, כך שרק מי שמחזיק במפתח המתאים יכול לפענח ולקרוא אותו.
FTP - פרוטוקול להעברת קבצים בין מחשבים ברשת, בין לקוח לשרת.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
פריסה - העברת תוכנה מסביבת פיתוח לסביבה שבה היא תרוץ בפועל, כדי להעמידה לשימוש.

הסבר על Kubernetes - Ingrees
בהרצאה הזאת מוסבר מה זה Ingress בקוברנטיס ואיך הוא מאפשר לכמה לקוחות לחלוק את אותו פורט 80 מבחוץ. בהרצאה הקודמת חשפנו שירות על פורט של הנוד, וכל שירות תפס פורט אחר. ה-Ingress פותר את הבעיה: הוא מכניס את התעבורה פנימה ומנתב אותה לפי שם המארח.
איך זה עובד
1. הבעיה עם פורטים: כל שירות שחשוף דרך פורט של הנוד מקבל פורט אחר, והמשתמש צריך לזכור אותו. כדי שכל הלקוחות יגיעו לפורט 80, צריך מתווך שמסתכל על שם האתר בכותרת הבקשה ומחליט לאן לנתב אותה. המתווך הזה נקרא reverse proxy, ובקוברנטיס הוא נקרא Ingress.
2. HTTP ו-HTTPS: Ingress מכניס תעבורת HTTP בלבד. את HTTPS הוא עוצר בעצמו: התעודות נמצאות אצלו, הוא מבצע את לחיצת היד מול הלקוח ומעביר את הבקשה לשירות הפנימי בלי הצפנה. פרוטוקול אחר, כמו FTP או פרוטוקול פרטי, דורש חשיפה ישירה של השירות בלי Ingress.
3. בקר נדרש: קובץ ה-YAML של Ingress לבדו לא יעבוד. צריך להתקין Ingress controller, למשל NGINX, Traefik או בקר של ספק אחר. הבקר מטפל באובייקט בדומה לאופן שבו בקר ה-Deployment מטפל ב-Deployment.
4. DaemonSet: בקר Traefik הותקן כ-DaemonSet, כלומר פוד אחד על כל נוד. השירות של הבקר חושף את פורט 80 החוצה ומעביר פנימה לפורט 8080.
5. חוקי ניתוב: כל לקוח מקבל חוק Ingress שאומר: בקשה עם שם מארח מסוים תועבר לשירות מסוים. השם של השירות הוא הקשר בין החוק לבין הסרוויס הפנימי.
6. שמות ו-DNS: כדי שהשם יגיע לנוד, צריך להגדיר רשומות DNS לשם של כל לקוח. בקשה לשם תיכנס ל-Ingress, שיזהה את השם וינתב אותה לשירות.
פקודות והגדרות
כל אובייקט נוצר ב-namespace, והפקודה kubectl get ingress מציגה את החוקים. הפקודה kubectl describe ingress מראה את השירות ואת ה-endpoints שאליהם הבקשה מנותבת בפועל, כלומר לאילו פודים היא מגיעה.
טעויות נפוצות
לפני שמגדירים את ה-Ingress צריך לקבוע את שמות האתרים. הדאטאבייס של וורדפרס שומר את שם האתר בתוכו, ולכן אם מקימים את האתר עם שם אחד ואחר כך משנים אותו, הגישה לאתר נשברת. אותה בעיה מופיעה כשמנסים לגשת דרך כתובת IP או פורט במקום השם הרשום: האתר עושה הפניה לכתובת שגויה.
שני לקוחות עובדים דרך אותו פורט 80, ולכל אחד יש חוק ושם משלו.
השיעור הבא בקורס: הסבר על Kubernetes - Namespace

פרקי ההרצאה: הסבר על Kubernetes - Ingrees

  1. 00:00

    הבעיה: שני אתרים על אותו פורט 80

  2. 01:55

    Ingress: ניתוב HTTP לפי שמות

  3. 02:51

    הגדרת Ingress ו-SSL termination

  4. 04:42

    דרישות מוקדמות: Ingress Controller

  5. 05:19

    תפקיד ה-Controller בקלאסטר

  6. 07:13

    בחירת Ingress Controller: Traefik

  7. 08:30

    הרשאות RBAC ל-Controller

  8. 11:29

    פריסת ה-Controller כ-DaemonSet

תמלול ההרצאה: הסבר על Kubernetes - Ingrees

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

  1. 00:02

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

  2. 00:27

    הראשון תפס פורט 3277 הסרוויס של הקליינט השני תפס פורט 3460 במחשב הפיזי בנוד הפיזי יש סרוויסים שהם לא חשופים כלפי חוץ אלא הם רק לצרכים פנימיים שפודים מסוימים יתחברו לפודים אחרים זה מיקרו סרוויס למיקרו סרוויס אז יש לנו סרוויס פנימי שנקרא קלאסטר איי-פי ונניח וורדפרס מתחבר לאיי-פי שלו ל-10996 הזה והוא מנתב את

  3. 01:01

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

  4. 01:38

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

  5. 01:51

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

  6. 02:08

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

  7. 02:37

    זה עובד על כל הנואודים כן עכשיו השיטה הזאת היא לחשוף טראפיק בנוט פורט היא טובה לכל דבר חוץ מ-HTTP. HTTPS אני חושף את זה בצורה אחרת בצורה של אינגריס בוא נראה את זה באתר של קוברנטיס על אינגריס כתוב שאינגריס זה אובג'קט שמנאג' אקסטרנל אקסס מנהל גישה חיצונית to the services לסרוויסים זאת אומרת אני חייב

  8. 03:06

    סרוויסים על ידי http מה הוא עושה לי הוא עושה לו את בלנסינג ssl termination זה אומר הוא עוצר את ssl זה אומר שהסרטיפיקטים נמצאים אצלו הוא זה שעובד מול לקוחות חיצוניים עוצר אותם ואחרי זה לפי השמות מעביר אותם לפי ה name best virtual hosting זאת אומרת מעביר אותם לסרוויס כזה או אחר לפי השמות אז הסרטיפיקטים של SSL גם ישבו עליו, הוא עוצר את כל הטראפיק,

  9. 03:41

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

  10. 04:00

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

  11. 04:14

    עכשיו אם אני לא רוצה HTTPS או HTTPS יש לי איזשהו פרוטוקול משלי שהמצאתי או איזשהו FTP לא משנה לי מה אני חושף סרוויס ישירות החוצה בלי העזרה של Ingress.

  12. 04:26

    ה-Ingress הזה עוזר לי בעצם נותן לי אקסטרה בשביל לעשות גם טיפול ב-SSL וגם לעשות Name Based Virtual Hosting זה אומר לפי שמות. עכשיו מה הבעיה עם ה-Ingress הזאת?

  13. 04:42

    מה הסיפור איתו? מה המיוחד בו? שיש לו pre-requisites, דרישות קדם. מה הדרישות שלו? אני חייב להתקין אינגריס קונטרולר מראש, אין לו קונטרולר שיודע לעשות את העבודה.

  14. 04:54

    שימו לב, only creating ingress resources, אם אני אעשה רק את הקבצים האלו של הyaml, זה לא יעבוד בלי קונטרולר. בואו נראה מה זה קונטרולר.

  15. 05:05

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

  16. 05:31

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

  17. 05:54

    הנה אנחנו רואים פה ש-Deployment של WordPress Client 1 ייצר לנו רפליקה סט. Deployment מייצר רפליקה סט אחת, אם אנחנו עושים עדכון גרסה ל-Client 1, נניח ל-Wordpress חדש יותר, אז היינו רואים פה שלאותו Deployment שייכים שני רפליקות סט, גם הישן וגם החדש.

  18. 06:15

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

  19. 06:37

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

  20. 07:08

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

  21. 07:33

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

  22. 08:00

    יש לנו user guide לקוברנטיס English Controller. אני לוקח את הכי פשוט, אני לא מסתבך עכשיו עם הצפנה, יש פה איך להוסיף TLS, אני כרגע עושה את הדברים הבסיסיים ואנחנו נתחיל מזה שאנחנו צריכים לתת לו הרשאות role-based access control, לתת לו הרשאות בתוך הקלאסטר שלנו. איפה אנחנו נותנים הרשאות? אני מזכיר

  23. 08:30

    לכם, יש לנו access control, יש לנו פה grants הרשאות, יש לנו הרשאות על swarm ויש לנו הרשאות על קוברניטיז, כן, על קלאסטר כזה ועל קלאסטר כזה ואנחנו יכולים לראות פה כל מיני הרשאות שכבר קיימות.

  24. 08:46

    בואו ניתן הרשאה למישהו חדש, סתם אני אראה לכם איך נותנים הרשאות. נניח אני עושה role binding, אני רוצה לתת ליוזר נניח בשם אלכס הרשאה על כל ה-Namespaces.

  25. 09:02

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

  26. 09:19

    ככה אני מחלק הרשאות. כמו שעשינו בסוורם, אז ככה אני לקחתי לאלכס, עכשיו, אנחנו רוצים לתת הרשאה ורול ל-ingress שלנו, כן? שימו לב, כל ההרשאות פה חייבות להיות.

  27. 09:40

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

  28. 10:16

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

  29. 10:43

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

  30. 11:16

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

  31. 11:24

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

  32. 11:41

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

  33. 12:17

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

  34. 12:49

    מה לבחור תעשה דימון סט אוקיי ראינו את זה גם בסוור מי שיזכר עשינו אחד פרן כל נוד ויש לנו פה הסבר אנחנו עושים בעצם סרוויס אקאונט בשבילו אנחנו עושים בשבילו deployment אבל אנחנו לא רוצים deployment אז אנחנו הולכים לאופציה של demon set גם פה עושים service account בונים אובייקט מסוג demon set עכשיו אני לא רוצה

  35. 13:21

    להיכנס לכל זה הוא חושף לנו port 80 החוצה ו port 80 80 זה בעצם הניהול הפנימי שלו ה port 80 80 זה הניהול הפנימי שלו ואז הוא בונה לי גם service שאומר 80 80 זה האדמין הפנימי ו-80 רגיל זה ה-Web.

  36. 13:45

    מה זה 80-80? זה מערכת ניהול הפנימית שלו שאנחנו יכולים לראות אותה. זה Web אינטרפייס שאנחנו ממש רואים אותו. אז אנחנו הולכים לייצר סרוויס שעובד בשני הפורטים.

  37. 14:01

    אנחנו הולכים לבנות את הפוד שלו, למעשה את ה-Demon שלו, את הפוד שלו עם ה-Load Balancer שגם הוא עובד בפורט 80 ו-80-80 וזהו.

  38. 14:20

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

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

ההרצאה הקודמת: הסבר על Kubernetes - Services

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

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

  • הסבר על Kubernetes

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

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