
server שחושף פורט 7070 ומשתנה סביבה REDIS_ADDRESS שמצביע על redis-cart בפורט 6379. כך השירות מתקשר עם מסד הנתונים.cart-service מסוג ClusterIP, כלומר רק פודים אחרים כמו frontend ו-Checkout פונים אליו. כדי לחשוף החוצה היה צריך LoadBalancer.redis-cart.release שמכילה manifest מאוחד של 981 שורות עם נתיבים מלאים.release מריצים kubectl apply -f ..kubectl get all מראה בהתחלה פודים ב-pending ו-Ready 0/1, וה-LoadBalancer היחיד ממתין ל-IP חיצוני./cart, בלי לדעת שמאחורי הקלעים רצים מיקרו-סרביסים.apply אחת.הטקסט המלא של הדקות הראשונות בהרצאה «פריסה של Microservice בקלסטר של k8s» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם. היום בהרצאה אנחנו הולכים להעלות את כל הפרויקטים שלנו, את כל המיקרוסרביסים שלנו לענן. בשביל זה בתיקייה הראשית יש לנו כמה אפשרויות כמו להעלות את זה בעזרת Terraform.
על Terraform יש לנו קורס נפרד. אנחנו רוצים להתרכז ב-Kubernetes ויש לנו פה עבור כל service קובץ YAML שמעלה אותו לענן. בואו ניקח אחד מהם, נעשה עליו Edit ונראה שיש לנו פה הכרזה על deployment שינהל את הפודים של ה-cart service.
שימו לב, אני רואה פה בעיה. נתיב לא תקין ל-image. קונטיינר שלנו נקרא, יש לו שם server, זה השם של הקונטיינר בתוך הפוד. יכול להיות שבפוד הזה יהיו גם עוד קונטיינרים נוספים.
כרגע אני רואה רק קונטיינר אחד בשם server שהוא חושף port שבעים שבעים החוצה ויש לו משתנה סביבה בתוך הקונטיינר בשם REDIS_ADDRESS. Redis זה הדאטה בייס שלו, כמו SQL עם ערך redis-cart, זה השם של ה-service ופורט שש שלוש שבע תשע.
למעשה דרך משתנה סביבה הזה ה-service מתקשר מול הדאטה בייס. מה עוד אנחנו רואים בתוך הקונטיינר? שיש לנו פה בקשה למשאבים, request לקבל מאתיים אלפיות המעבד.
זאת אומרת חמישית מליבה אחת של מעבד. זה אומר שעל ליבה אחת יכולים לשבת חמישה קונטיינרים כאלו. היום בתוך מעבד פיזי אחד יש הרבה ליבות ואנחנו אומרים שלעבודה רגילה של השירות הזה צריך חמישית מכוח העיבוד של ליבה אחת.
צריך לתת לשירות הזה שישים וארבע מגה זיכרון ופה ב-limits יש את הגבול האדום. אין מצב שה-service הזה יעבור שלוש מאות מילי CPU ומאה עשרים ושמונה מגה בייט זיכרון.
אם הוא עובר את המאה עשרים ושמונה מגה זה אומר שמשהו השתבש שם בקוד. אולי יש שם באג. מה שיעשה ה-Kubernetes הוא פשוט יהרוג את הקונטיינר הזה וייצור אחד חדש נקי.
זה הגבול האדום שאחריו משמידים את הקונטיינר הזה. וב-CPU הוא יותר סלחן, כי אם אתה עובר את השלוש מאות אלפיות המעבד אז הוא פשוט לא יתן לך יותר זמן מעבד.
ה-service הזה יעבוד לאט. זאת אומרת שהוא לא יקבל זמן עיבוד, זמן לרוץ על הפקודות שלו ב-C# יותר משלושים אחוז מליבה אחת. זה המקסימום של זמן מעבד שהוא יקבל.
מה יש לנו פה עוד בתוך הפוד? יש לנו את ה-READINESS. איך בודקים שהקונטיינר מוכן לפעולה. אחרי חמש עשרה שניות פונים לפורט שבעים שבעים.
שימו לב לא ב-HTTPS רגיל אלא ב-gRPC. gRPC זה שידרוג של HTTP. למעשה כל המיקרוסרביסים מתקשרים מול ה-frontend ב-gRPC ורק ה-frontend מתקשר מול הלקוח ב-HTTP רגיל.
gRPC זה כמו HTTP עם תוספות. עוד מעט נרים את הכל באוויר ונפנה לכל ה-services האלו ב-gRPC ונקבל מהם תשובה כאילו אנחנו ה-frontend. יש פה גם LIVENESS.
איך בודקים שהקונטיינר הזה חי או מת? כי אם הוא מת אז זורקים את הכל לפח ובתוך הפוד הזה, בתוך הקפסולה מעלים קונטיינר חדש נקי. אחרי חמש עשרה שניות מתחילים כל עשר שניות לבדוק פורט שבעים שבעים.
אז שימו לב, הבדיקה הזאת מתבצעת כל עשר שניות. פרט לחמש עשרה השניות הראשונות שהקונטיינר מתעורר לחיים ואחרי זה נתחיל כל עשר שניות לבדוק שפורט שבעים שבעים חי והוא עונה לנו לתקשורת ב-gRPC.
ואם יש לו איזשהו באג או שהוא השתגע ולא עונה לי יותר, זה אומר שהוא גם לא עונה ל-frontend וללקוחות, אז נהרוג אותו. ויש פה עוד אובייקט בתוך הקובץ הזה, זה