
kubectl get ingress מציגה את החוקים. הפקודה kubectl describe ingress מראה את השירות ואת ה-endpoints שאליהם הבקשה מנותבת בפועל, כלומר לאילו פודים היא מגיעה.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Kubernetes - Ingrees» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם אנחנו ממשיכים בהרצאות שלנו בהרצאה הקודמת עשינו נוד פורט שזה למעשה סרוויס שחשוף כלפי חוץ אבל הוא חשוף על פורט מסוים והסרוויס תופס את הפורט הזה אם אנחנו נריץ פקודה קיובסיטי על גט סרוויסס אנחנו נראה שסרוויס של הקליינט
הראשון תפס פורט 3277 הסרוויס של הקליינט השני תפס פורט 3460 במחשב הפיזי בנוד הפיזי יש סרוויסים שהם לא חשופים כלפי חוץ אלא הם רק לצרכים פנימיים שפודים מסוימים יתחברו לפודים אחרים זה מיקרו סרוויס למיקרו סרוויס אז יש לנו סרוויס פנימי שנקרא קלאסטר איי-פי ונניח וורדפרס מתחבר לאיי-פי שלו ל-10996 הזה והוא מנתב את
הפאקטים כבר לתוך פוד ספציפי איך הוא בוחר פודים לפי סלקטור מסוים וכאן אנחנו רואים גם את הסלקטור שלפיו הוא בוחר את הפורטים. עכשיו יש לנו בעיה שאנחנו רוצים ששני הקליינטים, שניהם יגיעו בפורט 80. לא כל אחד יתפוס לי פורט משלו, אלא שניהם יגיעו בפורט 80. אז אנחנו צריכים איזשהו רוורס פרוקסי שיתפוס את הפאקט,
יסתכל על ה-host name שלו, על השם של האתר, ויחליט האם הוא מנתב אותו לפה או לשם. זאת אומרת, אנחנו צריכים איזשהו מתווך, זה נקרא רוורס פרוקסי, שישב באמצע ויסתכל על הכותרת.
עשינו את זה כבר בסווארם לפני כן עם אנג'ין איקס, עכשיו אנחנו הולכים לעשות את זה עוד פעם עם קוברנטיס. ובעולם של קוברנטיס זה לא נקרא סרוויס, אלא זה נקרא אינגריס.
אינגריס זה מישהו שמכניס טראפיק פנימה רק ב-HTTP. רק ב-HTTP. אינגריס רולס אני עושה לו. בואו נראה, קודם כל אנחנו רואים פה שה-34460 עובד, זה אומר שאנחנו כן חושפים תקשורת החוצה ב-34460, וגם ב-3.277 אבל זה מיותר למה כי אני רוצה להכניס טראפיק דרך אינגריס פנימה ודרך אגב
זה עובד על כל הנואודים כן עכשיו השיטה הזאת היא לחשוף טראפיק בנוט פורט היא טובה לכל דבר חוץ מ-HTTP. HTTPS אני חושף את זה בצורה אחרת בצורה של אינגריס בוא נראה את זה באתר של קוברנטיס על אינגריס כתוב שאינגריס זה אובג'קט שמנאג' אקסטרנל אקסס מנהל גישה חיצונית to the services לסרוויסים זאת אומרת אני חייב
סרוויסים על ידי http מה הוא עושה לי הוא עושה לו את בלנסינג ssl termination זה אומר הוא עוצר את ssl זה אומר שהסרטיפיקטים נמצאים אצלו הוא זה שעובד מול לקוחות חיצוניים עוצר אותם ואחרי זה לפי השמות מעביר אותם לפי ה name best virtual hosting זאת אומרת מעביר אותם לסרוויס כזה או אחר לפי השמות אז הסרטיפיקטים של SSL גם ישבו עליו, הוא עוצר את כל הטראפיק,
עושה את כל הלחיצת יד עם הקליינט של SSL. יש לנו על זה סרטים, דרך אגב, בדיוק איך עובד SSL, אנחנו תופסים שם הפאקטים. אז הוא עושה את הלחיצת יד ומעביר כבר פאקטים לא מוצפנים פנימה לאיזשהו סרוויס פנימי.
אז איך זה עובד? בואו נראה. אינטרנט, לקוח מהאינטרנט או מהעולם החיצון ניגש ב-HTTP, שימו לב, זה עובד רק ב-HTTP, HTTPS ל-Ingress ו-Ingress מכניס אותו לסרוויס פנימי.
עכשיו אם אני לא רוצה HTTPS או HTTPS יש לי איזשהו פרוטוקול משלי שהמצאתי או איזשהו FTP לא משנה לי מה אני חושף סרוויס ישירות החוצה בלי העזרה של Ingress.
ה-Ingress הזה עוזר לי בעצם נותן לי אקסטרה בשביל לעשות גם טיפול ב-SSL וגם לעשות Name Based Virtual Hosting זה אומר לפי שמות. עכשיו מה הבעיה עם ה-Ingress הזאת?
מה הסיפור איתו? מה המיוחד בו? שיש לו pre-requisites, דרישות קדם. מה הדרישות שלו? אני חייב להתקין אינגריס קונטרולר מראש, אין לו קונטרולר שיודע לעשות את העבודה.
שימו לב, only creating ingress resources, אם אני אעשה רק את הקבצים האלו של הyaml, זה לא יעבוד בלי קונטרולר. בואו נראה מה זה קונטרולר.
אם נלך לכאן אנחנו נראה שיש לנו קונטרולר עבור deployment, קונטרולר עבור replica set. כל דבר דורש קונטרולר, וכשאני שולח קובץ yaml, למעשה מי שמטפל בו זה הקונטרולר זה המנוע מאחורי הקלעים דרך אגב פה אנחנו רואים שיש לנו קונטרולר לדיפלוימנט ויש לנו קונטרולר לרפליקה סט דיברנו על זה כן רפליקה סט מתחזק
מספר פודים הנכון בקלאסטר ודיפלוימנט מחליף רפליקות סט כשיוצא עדכון לתוכנה כשיש אימג' חדש הוא מייצר רפליקה סט חדשה עבור אימג' החדש ומעביר את כל הסלקטורים אליו של הדיפלוימנט שלו והורג את הישנים כאילו עושה כזה עדכון שקוף אוטומטי.
הנה אנחנו רואים פה ש-Deployment של WordPress Client 1 ייצר לנו רפליקה סט. Deployment מייצר רפליקה סט אחת, אם אנחנו עושים עדכון גרסה ל-Client 1, נניח ל-Wordpress חדש יותר, אז היינו רואים פה שלאותו Deployment שייכים שני רפליקות סט, גם הישן וגם החדש.
אבל זה כרגע לא חשוב. יש לנו קונטרולרים, יש לנו סרוויסים ויש לנו אינגריס והאינגריס הזה לא יעבוד עד שלא נתקין קונטרולר לאינגריס אז אנחנו צריכים להתקין אינגריס קונטרולר בעצמנו לא יודע למה הם לא התקינו לנו אותו הם רוצים שאנחנו נחליט איזה קונטרולר אנחנו רוצים
ואם אנחנו לא נתקין קונטרולר אנחנו נעשה רק משאבים קבצי יאמל שום דבר לא יעבוד אפשר להתקין קונטרולר כמו NGINX אבל את זה כבר ראינו ואפשר לראות קונטרולרים אחרים בואו נראה איזה קונטרולרים יש אינגריס קונטרולר שהם נתמכים תראו כמה יש לנו AWS יש להם קונטרולר סיטריס F5 חברה מאוד גדולה יש פה מלא מלא מלא קונטרולרים
גם אנג'ין איקס אנג'ין איקס כבר ראינו בוא נעשה משהו מאוד פופולרי נקרא טריפי כזה זה קונטרולר פולי פיצ'רד יש לו מלא אופציות כולל חיבור ללאטס אנקריפט זה תעודות דיגיטליות חינמיות עשינו את זה בהרצאה הקודמת כשעשינו תעודה דיגיטלית חינם, אז זה נקרא Let's Encrypt,
הקונטרולר הזה יודע להתנהל מולם אוטומטית. זה קונטרולר מצוין וזה ה-source code שלו. הוא חינמי, אנחנו לא נסתבך עכשיו עם ה-source code, אנחנו נעבור למדריך מוכן באתר שלהם, של Terrific.
יש לנו user guide לקוברנטיס English Controller. אני לוקח את הכי פשוט, אני לא מסתבך עכשיו עם הצפנה, יש פה איך להוסיף TLS, אני כרגע עושה את הדברים הבסיסיים ואנחנו נתחיל מזה שאנחנו צריכים לתת לו הרשאות role-based access control, לתת לו הרשאות בתוך הקלאסטר שלנו. איפה אנחנו נותנים הרשאות? אני מזכיר
לכם, יש לנו access control, יש לנו פה grants הרשאות, יש לנו הרשאות על swarm ויש לנו הרשאות על קוברניטיז, כן, על קלאסטר כזה ועל קלאסטר כזה ואנחנו יכולים לראות פה כל מיני הרשאות שכבר קיימות.
בואו ניתן הרשאה למישהו חדש, סתם אני אראה לכם איך נותנים הרשאות. נניח אני עושה role binding, אני רוצה לתת ליוזר נניח בשם אלכס הרשאה על כל ה-Namespaces.
על כל ה-Namespaces אני רוצה לתת להם הרשאה, לא על משהו ספציפי. סתם לאלכס אני נותן הרשאה על הכל, על כל האובייקטים, איזה רמה, אני אומר לו שאני אתן לו לדוגמה רמת אדמין.
ככה אני מחלק הרשאות. כמו שעשינו בסוורם, אז ככה אני לקחתי לאלכס, עכשיו, אנחנו רוצים לתת הרשאה ורול ל-ingress שלנו, כן? שימו לב, כל ההרשאות פה חייבות להיות.
אני לא רוצה להיכנס איתכם לזה יותר מדי, כי זה סתם מיותר. אז פשוט אנחנו הבנו את הרעיון של לתת הרשאה, אנחנו בונים אובייקט שנקרא cluster role, בונים אובייקט חדש שנקרא cluster role, ונותנים לו הרשאות על כל מיני משאבים, ועושים לו cluster role binding, מחלקים לו הרשאות, זאת אומרת, קודם כל בונים role תפקיד, אחרי זה מקשרים,
מחלקים הרשאות, כל זה ייעשה אוטומטית על ידי קובץ יאמל הזה, והנה יש לנו פה קיוב סיטיאל אפליי, ואנחנו עושים אפליי ישירות מאתר האינטרנט שלהם, ואנחנו באים לכאן, עושים פסט, וזה בונה לנו בעצם את הקלאסטר רול אות'ריזיישן קונטרולר וביילינג.
אוקיי, עשה לנו, בואו נראה מה הוא עשה לנו, נלך פה לרולים, והוא היה צריך לבנות לי פה רול, יש פה הרבה רולים. הנה מצאתי את הרול שהוא בנה, הנה הוא בנה את הרול הזה, את התפקיד הזה.
טוב, בואו נעזוב אותו בשקט, בנה, בנה, יפה מאוד. אחרי שהוא בנה את הרול, בואו נראה בקונטרולרים מה הוא עשה.
בקונטרולרים אני לא רואה שהוא עשה משהו, הוא עדיין לא עשה כלום, הוא רק בנה את הרול. אז זה השלב הראשון של לבנות את הרול. עכשיו אנחנו צריכים לפרוס בעצם את האימאט שלו.
את האימאט שלו אפשר לפרוס בדיפלומנט רגיל כמו שראינו, בדימון סט מה זה דימון סט זה ברמה כמו שעשינו לפני כן בסוורם אם אתם זוכרים שעל כל נוד יש לנו רפליקה אחת בדיוק זה מה שהדימון סט אומר שסינגל פר נוד כן סינגל פר נוד זה נקרא דימון סט זה אומר שיהיה לנו רוורס פרוקצי אחד מכונה וירטואלית
אחת כביכול קונטיינר אחד פר כל נוד אוטומטי אם אני יוצר נוד חדש שרת פיזי חדש אוטומטי הוא יקבל את קונטיינר של הרוורס פרוקסי שלי בניגוד לדיפלוימנט שהוא יכול להריץ גם שתי רפליקות על אותו שרת פיזי פה זה אחד לאחד סינגל פוד סינגל פוד פוד אחד לכל נוד עכשיו יש פה שיקולים מה עדיף את זה או את זה בסופו של דבר אם אתה לא בטוח
מה לבחור תעשה דימון סט אוקיי ראינו את זה גם בסוור מי שיזכר עשינו אחד פרן כל נוד ויש לנו פה הסבר אנחנו עושים בעצם סרוויס אקאונט בשבילו אנחנו עושים בשבילו deployment אבל אנחנו לא רוצים deployment אז אנחנו הולכים לאופציה של demon set גם פה עושים service account בונים אובייקט מסוג demon set עכשיו אני לא רוצה
להיכנס לכל זה הוא חושף לנו port 80 החוצה ו port 80 80 זה בעצם הניהול הפנימי שלו ה port 80 80 זה הניהול הפנימי שלו ואז הוא בונה לי גם service שאומר 80 80 זה האדמין הפנימי ו-80 רגיל זה ה-Web.
מה זה 80-80? זה מערכת ניהול הפנימית שלו שאנחנו יכולים לראות אותה. זה Web אינטרפייס שאנחנו ממש רואים אותו. אז אנחנו הולכים לייצר סרוויס שעובד בשני הפורטים.
אנחנו הולכים לבנות את הפוד שלו, למעשה את ה-Demon שלו, את הפוד שלו עם ה-Load Balancer שגם הוא עובד בפורט 80 ו-80-80 וזהו.
ו-Service Account. אז יש לנו פה שני קבצים אחד בונה לנו את הדיפלוימנט אחד את הדימון סט אני עושה את זה וזהו חבר'ה בגדול אתם צריכים כולה להריץ שתי פקודות בלי לחשוב יותר מדי פקודה אחת נותנת לו הרשאות הפקודה השנייה בונה את הקונטרולר אתם רואים