Table of Contents
מבוא לאתגרי תקשורת Microservices
יישומי תוכנה מודרניים בנויים יותר ויותר באמצעות ארכיטקטורות מיקרו-שירותים, שבו יישום יחיד הוא מוקרן לתוך שירותים קטנים, עצמאים פורריסה.גישה זו משפרת את יכולת הסקאלה, בידוד ומהירות הפיתוח, אבל זה גם מציג קבוצה חדשה של מורכבות סביב שירות-לשירות תקשורת.כפי שמספר השירותים גדל, מפתחים חייבים לטפל בגילוי שירות, עומס, שידור, הצפנה, אימות, אישור, אישור, אישור, ואימות בתוך כל אלה כתובות הפיכה.
מה זה שירות Mesh?
(השירות) הוא שכבת תשתית ייעודית שמנהלת את כל תקשורת השירות בשירות בתוך פריסת מיקרו-שירותים.הוא יושב שקוף בין שירותים, יירוט תעבורת רשת ויישום מדיניות עבור ניתוק תנועה, אבטחה, אמינות וצייתנות - כל הקבוצות ללא צורך בשינויים בקוד יישום.הישול בדרך כלל באמצעות מערך של פרוקסדיות קלות משקל, לצד כל דוגמה (FIRULS) המאפשרת החלפת מערכות אבטחה ואבטחה של מערכת אבטחה ולוגיקה מרכזית יותר.
עמוק עמוק בשירות Mesh אדריכלות
מטוס הנתונים: Proxies and Sidecars
המטוס האחראי לשידור בפועל של בקשות ותשובות בין שירותים.זה מורכב מפרוקסדיות אינדיבידואליות הפועלות בסמוך לכל מקרה שירות - ומכאן המונח FLT:0sidecartureFLT:1 (הפרוקסים האלה (בקיצור Envoy, אך גם קישור של ה- Proxy, או קוסול's מובנה-in proxy) יירוטו כל תנועה ומחוץ לנתיבים מתקדמים כמו פונקציות אבטחה, כגון פונקציות הפעלה נפרדות, כגון פונקציות הפעלה של TTLS, או תיקון, כגון פונקציות אבטחה, כגון פונקציות הפעלה, או תיקון של קוסטלציה, כגון פונקציות אבטחה, או עיבוד ידניות, כגון פונקציות הפעלה בנפרד, או קוסטלציה, כגון פונקציות הפעלה (S).
מטוס הבקרה: ניהול וידוי
מטוס הבקרה מספק את המוח מאחורי מטוס הנתונים.זה אחראי על תצורת וניהול הפרוקסים, הפצת מדיניות, איסוף טלמטרי.מטוס הבקרה בדרך כלל מציע API או CLI שמפעילים משתמשים כדי להגדיר כללים, מדיניות אבטחה, והגדרות של observability.זה מתורגם תצורה גבוהה אלה של מטוסים לתצורה נמוכה של הגדרות תורן (למשל, קבצי Cookie), ו-Corexicstos) עם רכיבי בקרה של Cocrexit.
אפשרויות ל-Mesh Service
ניהול תנועה
(השירות) מספק שליטה על האופן שבו התנועה נעה בין שירותים.אופרות יכולות להגדיר כללים עבור פריסות צנטריות (למשל, לשלוח 10% של תנועה לגרסה חדשה), פריסות ירוקות כחולות, A/B, או בדיקת מראה (הצליח) תנועה עבור בדיקות תנועה לא בריאה, חסימת הפעלה מחדש של מחסנים, או תכונות אחרות, המאפשרות בקרה מתוחכמת של אלגוריתמים יכול להיות מסובייקטיביים: 0.
אבטחה
אבטחה היא דאגה ראשונה בכל מערכת מבוזרת.A שירות mesh מחזק את האבטחה על ידי אכיפת HTLT:0 (mTLS) ®FLT:1 עבור כל תקשורת בשירות, הבטחת נתונים מוצפנים במעבר ושני הצדדים הם אותנטיים.המטוס הבקרה מנהל תעודה וסיבוב אוטומטי, צמצום הנטל התפעולי של ניהול TLS מרכזי, מעבר להצפנה, היא מאפשרת ליישומי שירות מאובטחים (R) על בסיס מדיניות בקרת קוד גישה או ניהול גישה (RTP).
אחריות
ללא שירות mesh, צובר חשיפה לאינטראקציות שירות-לשירות לעתים קרובות דורש כלי ידני או סוכנים צד שלישי. mesh באופן אוטומטי לאסוף נתונים טלמטרי עשיר מכל Proxy, כולל מדדים (עקביות, נפח בקשה, שיעורי שגיאה), קבוצות מופצות (באמצעות Openmetry), וגישה לתאים.המטוסי הבקרה מצטברים נתונים אלה וחושפים אותו באמצעות פורמטים סטנדרטיים (meus, לדוגמה, מאפשר מעקב אחר קוד פתוח, כדי לשנות את היישום של המערכת).
עמידות
תכונות עמידות שנבנו לתוך ה- mesh להתמודד עם כישלונות זמניים בחסד. Proxies יכול באופן אוטומטי לנסות מחדש בקשות כושלות (עם מדיניות retryable), ליישם את זמנם כדי למנוע שירותים איטיים מצריכת משאבים, ושבר מעגל כאשר שירות חוזר יותר מדי שגיאות.FLT:0) זריקות Fault FLT:1 יכול לשמש עבור כאוס: הפחתת או שגיאות כדי לבדוק כיצד המערכת מתנהגת תחת יכולות אלה כדי להפחית את עצמם.
השוואת שירות פופולרי Mesh Technologies
ISTio
Istio הוא שירות מאומצת ביותר, במיוחד בסביבות Kubernetes. זה משתמש Envoy כמו מטוס הנתונים ברירת המחדל שלה Proxy ומציע תכונה מקיפה: ניהול תנועה, אבטחה, observability, ו- Multi-cluster תמיכה. Istio של מטוס הבקרה של Istio (IST) הוא מאוד אינטנסיבי ומשלב עם כלים רבים של מערכת אקולוגית כמו Promeus, Grafana, גמישות מקסימלית, Jastioger, עם משאבים תפעוליים, עם זמן יעיל מאוד, עם מורכבות, עם זמן יעיל יותר ויותר מוכן, עם מורכבות, עם קיטורפת.
קישור
Linkerd (על ידי CNCF) מדגיש בפשטות, ביצועים ושימוש במשאבי נמוך.זה משתמש ב Proxy מבוסס על רפיח קליטה ומטרתו לטביעה תפעולית מינימלית.אדריכלות של Linkerd פשוטה יותר מאשר של Istio, עם פחות חלקים נעים, מה שהופך את זה קל יותר להתקין, להגדיר, debug. זה תומך לחלוטין mTLS, פיצול (יכול פריסה), והיעדר יכולת ללא צורך ערך אבטחה מורכבת במיוחד עבור כל תיקון חזק.
Consul
הקונסולה של HashiCorp מספקת גילוי שירות ויכולות mesh שירות במוצר יחיד.זה תומך ב- Multi-cloud ובסביבות טרום-פרסום, מה שהופך אותו אידיאלי עבור אדריכלות היברידית. . . sul משתמש בעצמו מובנה-in Proxy או יכול להיות משולב עם Envoy.המטוס הבקרה הוא שרת ה- Consul, אשר מטפל גם שירות גילויים, בריאות, בדיקה ו-KV מספק לי דרישות אבטחה שימושיות.
« « « « « « « « « « « « «
Traefik Mesh (בכנות Mash) נועד להיות פשוט ו Kubernetes-native, לעתים קרובות בשימוש פריסות קטנות יותר.It לפרוס קבוצה של פרוקסיות שפועלות ככדוגמניות, אבל התצורה שלו משולבת הדוקה עם Kubernetes משאבים (IngressRoutes, Middleware) תומך בשחרורים, שובר, mTLS Traf.
עבור נוף מקיף של כלי שירות, ראה את ה-FLT:0Layer5 שירות MeshcioFLT:1.
יישום שירות Mesh: A Step-by- Guide
מדריך זה משתמש Istio כדוגמה בשל הפופולריות שלו, אבל השלבים הכלליים חלים על מברשות אחרות עם קצת וריאציות. לפני תחילת, להבטיח את ה-Cream שלך עומד בתנאים המוקדמים.
סקרנים ותכנון
- אשכול Kubernetes (הסרה 1.21+ עבור Istio 1.16+) עם לפחות 4 מעבדים ו- 8 GB RAM לבדיקה.
- (ב) ,0, נקבע על מנת לגשת אל ה-Cenam.
- היכרות עם המושגים Kubernetes (pods, שירותים, שמות).
- המטרה ברורה: למשל, "הספק mTLS לכל התנועה" או "פריסות ירוקות וכחולות".
- תוכנית למשאב צד למעלה (בדרך כלל 50-100 MB זיכרון לכל צדא).
התקנה וידוי
- (הופנה מהדף Istio CLI (ראה LT:1) מתוך תיעוד Istio CLI רשמי 1
- התקנת מטוס הבקרה של Istio לתוך שם ייעודי (לעתים קרובות FLT:2): (FLT 3: 3) פרופיל ההדגמה מאפשר את כל התכונות (mTLS, tracing, metrics) והוא טוב להערכה.
- שם הסרטון: The Namespace(s) Where You Want Sidecarזרקה יקרה:5
הזרקת הצד השני
לאחר שהשם הוא התווית, כל פוד חדש שאתה פורק יקבל אוטומטית מכונית אנבונית שהוזרקה.עבור הפודונים הקיימים, עליך להפעיל אותם מחדש (למשל, באמצעות FLT:6) לבדוק זריקה על ידי בדיקת מספר המכולות בפוד: FLT 7 - עליך לראות שני מכולות (היישומים ו-FLT:8).
הפעלת מדיניות התנועה
קביעת כללים לשליטה על התנועה.לדוגמה, לפיצול תנועה בין גרסאות של שירות:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: myapp
spec:
hosts:
- myapp
http:
- route:
- destination:
host: myapp
subset: v1
weight: 90
- destination:
host: myapp
subset: v2
weight: 10
החל עם ההרחבה (FLT:10) אתה יכול גם לקבוע כללים יעד עבור שבירת מעגל, בריכות חיבור וגילוי יוצא דופן.
פיקוח ואימות ההתקנה
רכיבי הטלמטריות של Istio יכולים להיות מותקנים בנפרד.לדוגמה, לאפשר את לוח המחוונים של קיאלי עבור גרף שירות חזותי ו Jaeger עבור מופץ tracing עם FLT:11 ואז לחשוף קיאלי באמצעות קידומי נמל: (FLT:12 באופן דומה, ניתן להתקין Prometheus ו Grafana תוספות עבור מדדים.
אתגרים ושיקולים
מורכבות תפעולית
שירות meshes להוסיף מורכבות משמעותית לתשתיות.צוותים חייבים ללמוד מושגים חדשים (שירותי וירטואלי, כללי יעד, TLS הדדי, ניהול תנועה), בעיות לפתרון בעיות הקשורות ל- Proxy, ולנהל את מחזור החיים של המטוס הבקרה. עקומת הלמידה היא תלולה, במיוחד עבור צוותי Istio. Smaller עשויים ליהנות ממלות פשוטות יותר כמו Linker.
המונחים: overhead
כל צדא Proxy צורכת CPU וזיכרון.במקבץ עם מאות שירותים, ראש העודף יכול להיות משמעותי - פוטנציאל 10-20% של משאבים מוחלטים. עבור יישומים גבוהים, ה- Proxy גם מציג שקיפות (בדרך כלל 1-5 מ"מ), אשר עשוי להיות בלתי מתקבל על הדעת בתרחישים נמוכים של משאבים ומגבלות יש להגדיר עבור מתווכים.
פענוח ופתרון בעיות
כאשר משהו משתבש, בידוד הנושא יכול להיות מאתגר.ה Proxy עשוי להיות הטלת תנועה בשל כלל לא מוגדר כראוי, סוגיה תעודה, או התנגשות כלים כמו FLT:13, ממשק הניהול של Envoy (port 15000), ו יומני גישה מפורטים הם הכרחיים.צוותים צריכים להשקיע ניטור ואזהרה מההתחלה.
שיטות עבודה טובות ביותר עבור שירות Mesh אימוץ
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0) ניתן להגדיל את mTLS.IRLT:1) להשתמש במצב של Istio כדי להעביר בהדרגה שירותים ל- mTLS קפדניים מבלי לשבור תנועה קיימת.
- (ב) ,0) השימוש במשאבי משאבים של ההרחבה (FLT:103), הגדר מגבלות משאבים של משאבים וניצול פוד אוטומטי כדי להתאים אותם.
- (FLT:0)מינוף של ממשק ה- API של מטוס הבקרה: תצורה אוטומטית של מרש עם כלים GitOps (ArgoCD, Flux) ו-S CI /CD.
- (ב) באימוני צוות (FLT:0) באימוני צוות (FLT: 1) הכישורים התפעוליים הנדרשים ל- mesh הם שונים מניהול Kubernetes סטנדרטי.
- (ב) ⁇ :0) ⁇ מוקדם.
- (ב) ניתן להזיז את ה-ULT:0) ל- mesh שדרוגים של השירות (שירותי מילואים) לשיבוש; יש אסטרטגיה של רולבק.
מגמות עתידיות בשירות Mesh
הנוף של שירות mesh מתפתח במהירות.מגמות מפתח כוללות:
- (FLT:0) Ambient Mesh (Istio): מצב מטוס נתונים חדש המסיר את ה- per-pod Sidecar לטובת פרוקסיזות (ztunnel), צמצום משאבים מעל פני ראש ונטל תפעולי.
- (FLT:0) שערי מולטימדיה-Cluster:BuildFLT 1:1 כאשר ארגונים מאמצים רב-קלוסטר Kubernetes, שירות meshes מרחיבים את מטוסי השליטה שלהם כדי לאסוף אשכולות, המאפשרים גילוי שירות ותקשורת מאובטחת על פני מיקומים גיאוגרפיים.
- (FLT:0) Acceleration מבוסס-ההגנה: ibFLT:1) טכנולוגיות חדשות כמו Cilium להשתמש מסנן Packet ברקלי (eBPF) כדי לספק כמה יכולות מרשות (הקריפטציה, חסימה) עם פחות ראש, פוטנציאל מאתגר דפוסים מסורתיים.
- (FLT:0) אינטגרציה עם Serverless:FreaLT:1 , פלטפורמות ללא שרת כמו Knative משלבות מלות שירות עבור routing וניהול תנועה, המאפשר מעברים חלק בין פונקציות ומיקרו-שירותים.
- (הופנה מהדף ⁇ ) ,0WebAssembly ( Wasm) Extensibility: FLT:1 התמיכה של Envoy של Wasm מאפשרת מסננים מותאמים אישית להיות כתוב בשפות ברמה גבוהה ופורז באופן דינמי.
מסקנה
טכנולוגיות Mesh שירות הפכו למרכיב קריטי לניהול המורכבות של תקשורת מיקרו-שירותים בקנה מידה.על ידי הסרת ניהול תנועה, אבטחה, observability, וגמישות לתוך שכבת תשתית ייעודית, הם מאפשרים לצוותי פיתוח להתמקד בלוגיקה עסקית בעוד צוותי המבצעים להשיג שליטה מוטמעת היטב וחשיפה עמוקה יותר של צוותים יכול להיות משמעותי - במיוחד עם הישגים מלאים, כמו ISTI, כמו גם גישה פשוטה יותר, כמו גם תכונות מפתח, כמו גם יותר, כמו גם יותר, כמו גם תכונות מפתח, כמו גם יותר, כמו גם יותר, זה יהיה מסוגלות אבטחה טובה יותר, כמו גם סודיות צוותים יותר, כמו גם PF.
(ב) ב[[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]