• בלוג
  • עמוד 119
  • שלושה דברים שאהבתי בקוברנטס (ואחד שממש לא)

שלושה דברים שאהבתי בקוברנטס (ואחד שממש לא)

20/08/2021

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

בתיאוריה, תרגום פרויקט מ Docker Compose ל Kubernetes הוא הדבר הכי קל בעולם: מפעילים סקריפט אחד שמתרגם את קבצי ה docker-compose.yml לקבצי ההגדרות של k8s, מעלים את התוצאה לקלאסטר קיים ונהנים מהחיים. המציאות לקחה לי קצת יותר עבודה ודרשה מספר שינויים בקוד המערכת - אבל בצד החיובי סיימתי עם קוד טוב יותר מזה שהיה בהתחלה וגם הבנה טובה יותר של הארכיטקטורה. מהתהליך גם למדתי לחבב מספר דברים בקוברנטס, והנה השלושה המרכזיים:

1. ה Dashboard

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

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

2. התיעוד

אין כל כך Tutorials טובים על קוברנטס אבל התיעוד עצמו מעולה וכל עוד אתם מוכנים להשקיע את הזמן בקריאה שלו (זה ארוך כי k8s עצמו סופר מורכב), אז בסוף תמצאו את כל מה שאתם צריכים והרבה יותר.

אם אתם מתחילים לעבוד עם קוברנטס תעשו לעצמכם טובה וקחו כמה ימים רק לקרוא את התיעוד מקצה לקצה ובמיוחד להבין את המושגים. זה יחסוך לכם שעות של חיפוש פיתרונות באינטרנט לשאלות לא הגיוניות. שווה להתחיל כאן: https://kubernetes.io/docs/concepts/.

3. עדכונים חיים והודעות שגיאה

אחרי יותר מדי שעות עם docker compose אני כבר די מכיר את כל השטויות שלו: אני יודע מתי הוא רק עושה כאילו הוא בונה אימג' אבל בעצם לוקח מידע ישן ולא רלוונטי מה Cache ולמה הוא מתכוון כשהוא כותב לי הודעות שגיאה קריפטיות.

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

4. ואחד שממש לא

אז מה יש לא לאהוב? האבסטרקציות המוגזמות כמובן. כמה עשרות שורות של קובץ docker-compose.yml הפכו בלי לשים לב לכמעט אלף שורות של קבצי הגדרות של קוברנטס. חלק מזה קורה כי קוברנטס נותן לי יותר שליטה על הקלאסטר והמכונות, אבל הרבה זה פשוט בניה מוזרה של קבצי ההגדרות והתעקשות על שטויות. הנה דוגמה קטנה מאחת ההגדרות:

backend:
  service:
    name: test
    port:
      number: 80

אני בטוח שהיתה להם סיבה טובה להוסיף את המפתח number בתוך port, אבל מוכן להמר שאפילו הם כבר שכחו אותה.

(או בגיזרת האבסטרקציות - הקונספט של Ingress Controller שאומר שאני צריך לכתוב הגדרות NGINX ב DSL שלהם שהופך לקובץ הגדרות של nginx, רק בשביל שאפשר יהיה להשתמש בעתיד בכלי אחר במקום nginx הוא לא הגיוני, כי בסוף גם בתוך ה DSL ההגדרות הן מאוד ספציפיות ל nginx).

אם אתם רוצים ללמוד קצת על קוברנטס ולא בטוחים איפה להתחיל אני ממליץ להתקין minikube אצלכם על המכונה לפי המדריך כאן: https://kubernetes.io/docs/tutorials/hello-minikube/

ואחרי זה להשתמש ב kompose כדי להפוך פרויקט Docker Compose לפרויקט k8s ולנסות להעלות את הפרויקט על הקלאסטר שיצרתם. בדרך שווה להשקיע כמה ימים בקריאת התיעוד.