Table of Contents
מבוא
שמירה על Docker מכולות עד כה היא חלק בסיסי של כל פריסת ייצור, אך לעתים קרובות היא הופכת להיות מטלה מייגעת.עקב אחר תמונות, משיכת עדכונים, עצירת מכולות, והפעלה מחדש של אותם היא לא רק זמן-consuming אבל גם הסתברות שגיאה-במיוחד כאשר ניהול עשרות או מאות מכולות על פני מספר מארחים. A פספס אבטחה או עדכון נשכח יכול להשאיר את התשתית שלך ידועה עם פרצות פתוחה, ברגע זה, יש פתרון יעיל יותר, בקרוב, כי אתה שומר על פני כל כך, יש פתרון עבודה פתוחה.
מה זה Watchtower?
Watchtower הוא כלי קל משקל, קוד פתוח המעדכן באופן אוטומטי את כל התמונות הבסיס שלהם רענון במרשם.פיתוח ומופעל על ידי הקהילה (ראה:0GitHub repositoryFLT:1), הוא פועל כמו דוקר עצמו ומעקב אחר מיכלי הריצה האחרים שלך (או נבחרות) לשינויים.
כיצד פועל Watchtower
צפהtower מתקשר עם דוקר daemon דרך השקע Docker (FLT:0) כברירת מחדל, הוא לסרוק את כל מיכלים פועל על המארח, אבל אתה יכול להגביל אותו למכלים ספציפיים באמצעות תוויות או שמות מכולות.זה בודק עדכונים במרווחה מוגדרת באופן ידני (הגנה היא כל 24 שעות) כאשר תמונה חדשה שונה מזו הנוכחית, להפעיל מחדש תמונות של הפעלות כדי לעצור את התמונה כדי לעצור את ה-S.
יתרונות מרכזיים של עדכונים אוטומטיים עם Watchtower
אבטחה מוגברת
אבטחה היא הנהג העיקרי לעדכונים של מכולות.תמונות Docker נבנות באופן קבוע כדי לגוון פרצות בחבילות מערכת ההפעלה הבסיס (למשל, אלפים, אובונטו) או את התלויות של היישום.מכל הפועל בתמונה מיושנת עשוי להכיל פגיעות נפוצות וחשיפה (CVEs) מבטיח כי ברגע שהתמונה מקובעת, המכולה שלך מעודכנות בהתאם לתנודות ולהפחית את התנודות האבטחה הכוללת שלך).
יעילות תפעול
עדכונים ידניים דורשים גישה SSH, פקודות למשוך תמונות, ותזמורת זהירה של הפעלות מחדש כדי למנוע הפסקת שירות.בסביבות עם עשרות או מאות מכולות, ראש זה הופך בלתי ניתן להשגה. Watchtower מבטל את הצורך בהתערבות ידנית, לשחרר את הצוות שלך להתמקד בפיתוח תכונה, ניטור, ומשימות בעלות ערך גבוה אחרים.זה גם מפחית את הסיכון של טעות אנוש - כגון שכחה כדי להפעיל מחדש תצורה לאחר תצורה של אבטחה או להוביל תמונה.
יציבות סביבות
ניתן לפרוס את הגרסאות של פיתוח, עוקץ, וסביבות ייצור עם תצורה זהה.זה מבטיח כי כל סביבות להפעיל את אותן גרסאות תמונה, צמצום "זה עובד על המחשב שלי" בעיות.בעוקץ, אתה יכול לעדכן מכולות ברגע שתמונות חדשות דוחפות, ולאחר מכן לאמת פונקציונליות לפני אותו ייצור. בשילוב עם פריסה רציפה / אינטגרציה רציפה (CI /CD), כדי לשמור על תשתית עקבית ויעילה.
צמצום Overhead
לאחר ש- Watchtower מוגדר, הוא אינו מצופה.אתה כבר לא צריך לקבוע חלונות תחזוקה סדירים כדי לעדכן מכולות, ולא צריך לתסריט שגרה מורכבת של עדכונים. Logs והודעות לספק מסלול ביקורת ברור של מתי עדכונים התרחשו והאם הם הצליחו.זה מקטין את העומס המנטלי על צוותים תפעוליים ומאפשר להם לנהל פריסות גדולות יותר עם אותו ראש.
עקבו אחרי Watchtower
ספויילר הוא פשוט.הגישה המומלצת היא לרוץ אותו כמכל Docker עם כריכה של שקע Docker.למטה הוא מדריך צעד אחר צעד.
Prerequisites
- דוקר מותקן על מכונת המארח (Docker Engine 19.03 או מאוחר יותר מומלץ).
- גישה לרשת לרישום תמונות Docker שבו התמונות של המכולות שלך מאוחסנות (Docker Hub, רשם פרטי וכו ').
- היכרות בסיסית עם Docker CLI או Docker Compose
המונחים: docker CLI
- (ב) ויקרא י"ד:2 ויקרא י"ד:
- (ב) ,0) ,R Watchtower כשירות רקע: ⁇ 1:2 (FLT:2) ;2 ;2 ;2 ;2 ;2 ;2 ).
- (ב) ויקרא י"ד:2
עקבו אחרי Docker Compose
לקבלת יכולת ניהול טובה יותר, במיוחד בייצור, השתמש ב-Docker Compose. צור קובץ ההרחבה:
version: '3.8'
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_POLL_INTERVAL=3600 # check every hour
- WATCHTOWER_CLEANUP=true # remove old images after update
logging:
driver: json-file
options:
max-size: 10m
max-file: 3
(FLT:6) כדי להתחיל לצפות ל- Watchtower.TheFLT 7 הסביבה משתנה קובע את תדירות הבדיקה תוך שניות.קביעתו ל-FLT:8 פירושו בדיקת שעונים עבור עדכונים בכל שעה, הבטחת עדכונים מהירים ללא עומס מופרז על הרישום או דוקר דמון.
אפשרויות לCredation
Watchtower הוא מאוד תצורה באמצעות משתנים סביבתיים ודגלים קו פקודה. להלן הן האפשרויות השימושיות ביותר.
המונחים: Interval
השתמש בדגל (או FLT:10 משתנה הסביבה משתנה) כדי לקבוע כמה פעמים לבדוק בדיקות עבור עדכונים.ה ברירת המחדל הוא 86400 שניות (24 שעות) לפיתוח או פריסות מהירות, אתה יכול להגדיר מרווח קצר יותר כמו 300 (5 דקות) לייצור, מרווח של 1-4 שעות הוא בדרך כלל מספיק ולהימנע מעומס מיותר.
ניקוי תמונות ישנות
דגל (FLT:11) מסיר את התמונה הקודמת לאחר עדכון מוצלח.זה משחרר שטח הדיסק, במיוחד חשוב כאשר תמונות מעודכנות לעתים קרובות.
⁇
Watchtower יכול להודיע לך על אירועים של עדכון.ערוצי הודעות נתמך כוללים דוא"ל (SMTP), Slack, Microsoft Teams, טלגרם ועוד.הגדרתם באמצעות משתנים סביבתיים כגון FLT:13 או FLT:14 לדוגמה, לשלוח הודעות Slack:
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
-e WATCHTOWER_NOTIFICATIONS=slack \
-e WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://hooks.slack.com/services/Txxx/Bxxx/xxx \
containrrr/watchtower
הודעות עוזרות לך לעקוב אחר פעילות העדכון ללא בדיקה ידנית של יומני.
המונחים: filing
(ב) בפסק הדין, יש להשתמש בדגל ה-FLT:16 בשילוב עם תווית Docker.להוסיף תווית 17 ל-Metas you want Watchtower to update. Alternatively, להעביר שמות מכולות כטיעונים ל-FLT 18 פועל פקודה.
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower nginx postgres
עקבו אחרי Verbose Logs
ניתן ליישב עם ההרחבה (FLT:22 או FLT:23) כדי לראות מידע מפורט על פעולות של Watchtower.זה שימושי במהלך ההתקנה הראשונית כדי לאמת עדכונים אלה מזוהים וליישם נכון.
שימוש במקרים מתקדמים
ההרחבה Containers from Private Registries
אם התמונות שלך שוכנות במרשם פרטי (למשל, AWS ECR, Azure Container Registry, או נמל בעל-עצמי), Watchtower זקוק לאימות.You can the Docker config file or use Environment Varis.השיטה הפשוטה ביותר היא להיכנס למרשם על המארח באמצעות FLT:24, אשר מאחסנות ב-F:25LT ואז לקשור את זה לתוך מיכל Watchtower:
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root/.docker/config.json:/config.json \
containrrr/watchtower
לחלופין, השתמש בסודות דוקרים או במשתנה סביבה לניהול מאובטח יותר (ראה ההרחבה:0) ,בתיעוד המצפה הרשמי של קונסולת 1).
עדכון עבור שירותים ממשלתיים
עבור מכולות נדל"ן (Databases, caches), עדכונים אוטומטיים יכולים להיות מסוכנים מכיוון שעדכוני תמונות עשויים להציג שינויים של סכימה שוברים. Watchtower אינו מטפל בגירת נתונים. A Best Practice הוא ל-FLT:0 (לא LT:1) מאפשר עדכונים אוטומטיים עבור מיכלים המדינה. במקום זאת, השתמש בהדרה התווית (FLT:27) ועדכון אותם באופן ידני לאחר אימות התמונה החדשה עם היישום שלך.
שילוב עם קווים של CI /CD
Watchtower מתאים היטב לתוך גלאי או זרימת העבודה CI /CD.לדוגמה, לאחר בנייה מוצלחת, הצינור שלך יכול לדחוף תמונה חדשה למרשם. Watchtower, עם מרווח סקר קצר (למשל, 60 שניות), יזהו את השינוי ועדכון המכשיר בתוך דקות.זה יוצר לולאה רציפה רציפה רציפה ללא תסריטים מותאמים אישית.
הפרקטיקה הטובה ביותר
- (FLT:0)Use agingסביבות ראשון: FLT:1 , Deploy Watchtower בסביבה לא ייצור ועדכונים מעקב במשך כמה ימים כדי להבטיח לא התנהגות בלתי צפויה.
- (FLT:0) הודעות ניתנות לחשיפה: 1FLT (ה) להגדיר Slack, דוא"ל או התראות אחרות כך הצוות שלך מודע באופן מיידי לעדכונים ולכל כשלים פוטנציאליים.
- (FLT:0)Combine עם בדיקות בריאות: FLT:1 ודא כי המכולות שלך מגדירות בדיקות בריאות. Watchtower מחכה להם לעבור לאחר הפעלה מחדש, אשר מונעים הפעלת תנועה למכלים שלא התחילו באופן מלא.
- (ב) [ה]הדגל [ה] בפסוקים: [ה]: [ה], [ה], [ה], [ה], [ה], [ה] ב[ה], [ה], [ה], [ה], [ה], [ה],] ב[ה], [ה], [ה'], [ה'], [ה'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- שטח הדיסק של Monitor: FLT:1 גם עם ניקוי, עדכוני תמונות גדולים יכולים לצרוך באופן זמני שטח נוסף במהלך הסגירה.
- (FLT:0) עיין בגליוני סקירה: FLT1 מעת לעת בודקים יומני Watchtower (ראה FLT:29) כדי לאשר עדכונים מתרחשים כצפוי.
- (FLT:0)עדכון Watchtower עצמו: FLT:1 Watchtower יכול לעדכן את עצמו אם אתה כולל את מיכל שלה במערכת המעקב (על ידי ברירת מחדל הוא מעדכן את עצמו) זה מבטיח לך תמיד את התכונות האחרונות ותיקון אבטחה.
- (FLT:0) לפרט עם חתימה ואימות: אנדרל 1) עבור אבטחה משופרת, להגדיר Docker Content Trust כדי להפעיל רק תמונות חתום.
מלכודות פוטנציאליות וכיצד להימנע מהם
שינויים בתמונות Upstream
הסיכון הגדול ביותר הוא תמונה עדכנית המציגה שינוי לא תואם - כגון תצורה חדשה של ברירת מחדל או נקודת קצה של API מופרכת - שגורמת ליישום שלך להיכשל. Mitigation: השתמש בסינון כדי לא לכלול מכולות אשר מתמזגות הדוקות לגרסאות תמונה ספציפיות, או למקם גרסאות תמונה בסיס ב- Dockerfiles שלך (למשל, FLT:30 במקום LTF) ועדכון מודע.
Zero-Downtime Constraints
Watchtower מחדש מיכל על ידי עצירתו ולאחר מכן החל את הגרסה החדשה.זה גורם לתקופה קצרה של חוסר זמינות אלא אם אתה מפעיל העתקים מרובים מאחורי מאזן עומס.עבור שירותים זמינות גבוהה, לשקול באמצעות Docker Swarm או Kubernetes עם אסטרטגיות עדכון מתגלגל, ולהגדיר Watchtower כדי לעדכן רק אחד בזמן (למרות ש- Watchto'twer לא מצליח לנהל את זה באופן מקורי; כלי נגינה יכול להשתמש במקום זאת).
בעיות
(הופנה מהדף Docker socket, אשר למעשה נותן שליטה שורש על Docker.זה עניין אבטחה. Run Watchtower רק על מארחים אמינים לשקול שימוש משתמש ייעודי עם יכולות מוגבלות. לחלופין, להשתמש בכלים הפרוקסיים (למשל, FLT:33) כדי להגביל גישה, אך זה מוסיף מורכבות.
מגבלות ריבית
סקרים תכופים (למשל, כל כמה דקות) יכולים לפגוע במגבלות ריבית על Docker Hub או רשם אחר, במיוחד עבור משתמשים אנונימיים. Authenticate כדי להימנע ממגבלות מחמירות יותר, ולהגדיר מרווח אבק סביר (למשל, 3600 שניות) כדי להישאר בתוך מכסות.השכבה החינמית של Docker Hub מאפשרת 100 משיכה לשש שעות עבור משתמשים אותנטיים, אשר בדרך כלל מספיק עבור מספר מתון של מיכלים.
מסקנה
עדכוני מכולות ידניים הם מנהג מורשת שפשוט לא בקנה מידה בפריסה מודרנית, מהירה-מחדשת.על ידי העדכונים עם Watchtower, אתה מקבל אבטחה, עקביות ויעילות - כל זאת תוך צמצום הנטל התפעולי.הכלי הוא בוגר, בעל ביצועים גבוהים (FLT:0 רשמי האתרFLT:1), ואומץ נרחב בקהילה Docker, בין אם אתה מפעיל קומץ אנרגיה רב עוצמה, תמיד, לשמור על גבי כלי חזק, פתוח עם שרתי חשמל חזק, או קבוע, עם לחץ חזק, עם לחץ חזק, זה קבוע, עם שירות חזק, או קבוע, עם כלי חזק, זהה חזק, זה קבוע, עם שירות חזק, עם שירות חזק, עם לחץ על גבי כלי חזק, פתוח חזק, עם לחץ חזק, עם לחץ חזק, פתוח חזק, עם שירות חזק, פתוח חזק, עם שירות חזק, עם לחץ חזק, עם שירות חזק, 000 חזק, עם שירות חזק, פתוח חזק, פתוח חזק, פתוח חזק, עם שירות חזק, עם שירות חזק, פתוח חזק, עם לחץ חזק, פתוח חזק, עם שירות חזק, עם שירות חזק, פתוח חזק, ללא ספק גבוה, ללא לחץ חזק, עם שירות חזק, פתוח חזק, פתוח חזק, פתוח חזק, פתוח חזק, פתוח חזק, 000 חזק, 000
(ב) [ה] [ה]] [ה]], [ה], [ה], [ה], [ה]], [ה], [ה],] [ה]], [ה], [ה], [ה], [ה]], [ה']'[ה']']''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''