לעבוד עם דוקר במערכות פרודקשן? זה אפשרי

כדי לא לבנות את הדוקר image מחדש בכל שלב, ולאבד את הוודאות שה-image שעבר את כל הבדיקות של שלב הפיתוח והסטייג’ינג הוא אותו image שנתקין במערכות הפרודקשן שלנו, כדאי להשתמש בתגיות. איך בדיוק עושים את זה? יואב לנדמן, מייסד ו-CTO של JFrog, יסביר הכל בכנס Geektime Techfest 2017

מאת יואב לנדמן, מייסד ו-CTO של JFrog

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

דפוס מספר 1: זה מתחיל באיכות התוכנה

כבר שנים רבות שקו CI/CD נראה משהו כזה:

 

מקור: Hüttermann, Michael. Agile ALM. Shelter Island, N.Y.: Manning, 2012. Print.

בכל שלב בקו, התוכנה (הקובץ הבינארי) נבדקת ועוברת לשלב הבא אך ורק אם היא עוברת את כל פרמטרי האיכות שנקבעו לשלב הנוכחי. על ידי העברת אותו קובץ בינארי שלב אחרי שלב אנו מבטיחים שרק קומפוננטות שעברו בכל שערי האיכות בקו הדילוור שלנו יגיעו למערכות פרודקשן שמשרתות את הלקוחות שלנו.

אנטי דפוס מספר 1: הקלות הבלתי נסבלת של docker build $

אז מה קורה בדוקר? אחת המעלות של דוקר הוא הקלות שבה בונים את ה-image שלנו על ידי הרצת docker build $. אבל אליה וקוץ בה – בגלל אותה קלות בבניית ה-image, במקום לבנות אותה פעם אחת ולהעביר את אותו קובץ בינארי דרך שערי האיכות, בונים את ה-image בכל שלב מחדש. אבל בעצם, למה זאת בעיה? בואו ננתח script טיפוסי:

כדי לבנות את המוצר שלכם צריך להוריד קבוצה של תלויות (dependencies), וללא הנחיות מפורשות ה-script יוריד את התלויות בגרסה האחרונה שלהן. משום שאנחנו בונים את המוצר בכל שלב מחדש אנחנו לא יכולים להבטיח שבכל שלב אנחנו משתמשים באותן הגרסאות בכל התלויות. אבל לזה יש פתרון.

ניתן הנחיה מפורשת ונשתמש ב: FROM ubuntu:14.04. זהו. פתרנו את זה? אז זהו שלא. האם אנחנו בטוחים שגרסת האובונטו שהורדנו בשלב הפיתוח זהה לזו שהורדנו בשלב הסטייג’ינג ופרודוקשן? התשובה היא לא ולא. כידוע, גרסאות לינוקס למיניהן משודרגות בשינויים ותוספות ולא משתנות במספר הגרסה. לדוגמה, security patch. אז בואו נתחכם – ניתן הנחיה חד משמעית שלא משאירה מקום לספק ונציין את ה-checksum של הגרסה שאנחנו רוצים. כך:

FROM ubuntu:0bf3461984f2fb18d237995e81faa657aff260a52a795367e6725f0617f7a56c

אז בסדר, זו גרסה מאוד מסוימת, אבל אין לי שום סממן על אותה גרסה. האם בעוד שבוע אדע עליה משהו, האם היא חדשה יותר מהגרסה שבה אני משתמש כעת? הבנתם? שימוש ב-checksum אינו קריא ולא ניתן לתחזוקה; בסוף, אנחנו עדיין לא באמת יודעים מה נכנס לדוקר image שלכם. אם נוסיף את שאר פקודות ה-apt get או wget בקובץ ה-dockerfile, נבין שהקובץ מוריד תלויות מכל מיני מקומות שלא תמיד אפשר לוודא בהם איזו גרסה בדיוק של תלות כזו או אחרת מגיעה לדוקר image שלנו. בסוף, מה שקורה זה משהו כזה:

 

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

דפוס מספר 2: לא לבנות, לקדם

אז מה עושים? במקום לבנות את הדוקר image שלנו בכל שלב מחדש, עדיף לבנות אותו פעם אחת בשלב הפיתוח ולקדם אותו כקובץ בינארי ללא כל שינוי (immutable image), מעבר לשלבי ההמשך של קו הדילוור שלנו עד למערכות בפרודקשן. כלומר, כך:

אז יאללה בואו נעשה את זה. רגע, עדיין יש בעיה.

אנטי דפוס מספר 2: התג המגביל

איך נראה תג (tag) של דוקר? כך:

 

כלומר התג מגביל אותנו ל-Docker registry יחיד לכל host. איך מקדמים את ה-immutable image שלנו משלב לשלב אם יש לנו רק Docker registry אחד? הנה רעיון, נשתמש בתגיות (Docker labels). אולי יש פה משהו. מצד שני, איך קוראים לתגיות, איך מוודאים שבכל שלב דאגו לעדכן את התגיות, ואיך מנהלים הרשאות גישה על פי תגיות? בעיה.

ל-JFrog יש פתרון פשוט ויעיל בהרבה אבל לגלות מהו תצטרכו לבוא למצגת של מייסד ו-CTO החברה, יואב לנדמן, בכנס Geektime Techfest 2017, שם תלמדו איך לבנות קו קידום ודילוור (promotion and delivery pipeline) עבור דוקר בצורה פשוטה, יעילה ומאובטחת תוך שימוש ב-virtual repositories במוצר הדגל של החברה, JFrog Artifactory.

לאג’נדה המלאה של כנס Geektime Techfest 2017

 

כתב אורח

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

הגב

4 Comments on "לעבוד עם דוקר במערכות פרודקשן? זה אפשרי"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
אלמונימוס
Guest

מאמר עלוב שרק נועד לקדם את המוצר. מציג בעיה אבל לא פתרון. פויה!

אילן
Guest

תמיד כדאי לשמוע מה יש ליואב להגיד.

קליק בייט
Guest

לא מנומס. בכלל(!)

Moti
Guest

ומה עם עדכונים חשובים לזירו דיי אקספלויטס?
גרוע.

wpDiscuz

תגיות לכתבה: