PracticU

הסבר על values.yaml
Helm

בלי כתוביותעם כתוביות
PracticU › קורס קוברנטיקס - Kubernetes › הסבר על values.yaml Helm
מילון מושגים:
תבנית - מבנה בסיסי מוכן שממנו יוצרים פריטים דומים, כמו תבנית עמוד או תבנית מסמך.
פריסה - העברת תוכנה מסביבת פיתוח לסביבה שבה היא תרוץ בפועל, כדי להעמידה לשימוש.
QA - הבטחת איכות (Quality Assurance): תחום שעוסק בבדיקת תוכנה ובתהליכים שמבטיחים שהמוצר עומד בדרישות.
קלאסטר - קבוצת מחשבים או שרתים שעובדים יחד כמערכת אחת, לשם זמינות גבוהה, ביצועים או חלוקת עומס.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
מאזן עומסים - רכיב שמחלק בקשות נכנסות בין כמה שרתים, כדי לשפר ביצועים, זמינות ועמידות בעומס.
HTTP - פרוטוקול להעברת דפי אינטרנט ונתונים בין דפדפן לשרת. הגרסה המאובטחת שלו היא HTTPS.
Kubernetes - מערכת לניהול ותזמור של קונטיינרים בקנה מידה גדול, שמפעילה, מרחיבה ומתחזקת אותם אוטומטית.

הסבר על values.yaml Helm
קובץ values.yaml מרכז במקום אחד את הערכים ש-Helm מציב בתבניות ה-YAML, כך שלא צריך לחפש אותם בעשרות קבצים.
איך זה עובד
1. הבעיה: מספר רפליקות, שם אפליקציה ותוויות חוזרים בהרבה מקומות. שינוי אחד דורש חיפוש בכל הקבצים.
2. הפתרון: בתיקייה הראשית, ליד Chart.yaml, יוצרים values.yaml. בתבנית כותבים בסוגריים מסולסלים כפולים הפניה, למשל .Values.replicas, ובקובץ replicas: 2.
3. שם האפליקציה: שדה app_name מחליף את השם frontend-nginx בכל מקום, וגם ניתן לחבר אליו טקסט, למשל app_name ואחריו -deployment.
4. הפרדה: ההגדרות הטכניות נשארות בתבניות, והנתונים שהמשתמש משנה (סביבה כמו production או QA, מחלקה כמו marketing) עוברים ל-values. ה-cluster מקבל YAML רגיל, כי Helm מחליף הכול בתחנת העבודה.
5. מבנה מקונן: אפשר לקבץ תחת labels ואז לפנות ל-values.labels.environment ול-values.labels.department. כך בנויה גם דוגמת גוגל.
6. תנאים: אפשר להוסיף if ו-if not, ולכן זה דומה לשפת תכנות קטנה.
7. בדיקה: helm install עם שם ותיקייה נוכחית, ואז helm status עד שה-load balancer מקבל IP חיצוני (לקח כדקה). הגלישה ב-HTTP עבדה.
סיכום המבנה
- templates מחזיק את קבצי ה-YAML שנשלחים ל-Kubernetes.
- Chart.yaml מתאר את האפליקציה וגרסתה.
- values.yaml מחזיק שדות בצורת שם, נקודתיים וערך.
מסיימים כשכל הנתונים שמשתמש משנה נמצאים בקובץ אחד, בלי לחטט בקבצי ה-YAML הטכניים.
השיעור הבא בקורס: התקנה של wordpress Helm Kubernetes

פרקי ההרצאה: הסבר על values.yaml Helm

  1. 00:00

    הסרת ערכים קבועים מה-YAML

  2. 00:41

    שליפת ערך מקובץ values

  3. 01:17

    יצירת קובץ values.yaml

  4. 01:56

    שם האפליקציה במקום מרכזי

  5. 02:32

    הפרדת נתוני המשתמש מהטכני

תמלול ההרצאה: הסבר על values.yaml Helm

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

  1. 00:02

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

  2. 00:19

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

  3. 00:37

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

  4. 00:56

    במקרה הזה אמרתי לו: תיקח את זה מקובץ values ובפנים משדה שנקרא replicas. תחשבו שיש לי פה עשרות קבצים. אני לא רוצה לרוץ על כולם ולחפש בכל אחד את מספר הרפליקות.

  5. 01:11

    אני רוצה שזה יהיה כתוב במקום מרכזי אחד. אז בואו נעשה את קובץ ה-values הזה פשוט בתוך התיקייה הראשית של החבילה שלי, איפה שיש chart.yaml שמתאר לי את החבילה. אני עושה קובץ טקסט חדש, קובץ ריק, קורא לו values.yaml, ובתוך הקובץ הזה עם Notepad אני כותב replicas נקודתיים, נניח, שתיים.

  6. 01:35

    ואם בא לי לשנות, אני יכול לשנות פה במקום אחד בתוך ה-values.yaml לשלוש, ואז כל קבצי ה-YAML בפרויקט שלי יקבלו את הערך החדש מתוך קובץ values. בואו נעשה עוד דוגמה.

  7. 01:50

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

  8. 02:13

    אני יכול לשים במקום מרכזי ב-values.yaml שדה בשם app_name. אני יכול לתת לו כל שם שבא לי, ולתת לו איזשהו ערך. ברגע שעשיתי את זה, במקום לכתוב פה את השם בצורה ידנית, אני אומר לו לשלוף את זה מקובץ values מתוך השדה app_name, וגם פה אותו דבר.

  9. 02:32

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

  10. 02:53

    שימו לב, כרגע הנתונים מעורבבים עם המידע הטכני. אני רוצה הפרדה. אז בואו נשים פה, בקובץ values.yaml, שדה בשם environment, סביבה, נניח production או QA.

  11. 03:06

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

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

ההרצאה הקודמת: התקנה ושדרוג - עם Helm

ההרצאה הבאה: התקנה של wordpress - Helm Kubernetes

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

  • Numeric Values
  • הוספת Computed Values ב-MobX
  • טיפוסי מנייה - מסוג Enums וגם raw values

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

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