5 דרכים לעשות ללא שרת ב- Kubernetes

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

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

לרוב המסגרות ללא שרתים עבור Kubernetes יש תכונות אלה במשותף:

  • מתפרס לכל סביבה שתומכת ב- Kubernetes, באופן מקומי או מרחוק, כולל סביבות כמו OpenShift.
  • תומך בהפעלת קוד שנכתב בכל שפה, עם כמה זמן ריצה נפוץ שנארז מראש במסגרת.
  • מפעיל את ביצוע הקוד על ידי סוגים רבים של אירועים - נקודת קצה של HTTP, הודעת תור או וו אחר.

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

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

ביקוע

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

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

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

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

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

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

פרויקט ה- Fission זמין ברישיון אפאצ'י מאוד ליברלי, ולכן ניתן לעבד אותו באופן חופשי לפי הצורך.

סכין

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

בנוסף ל- Kubernetes, Knative דורשת מערכת ניתוב או רשת שירות כגון Istio, אך ניתן להשתמש גם באפשרויות אחרות כמו Ambassador ו- Gloo. משמעות הדבר היא הגדרת עבודה מעט יותר, אך לפרויקט יש מדריכים מפורטים לשימוש בכל אפשרות במגוון שירותי ענן וסביבות Kubernetes, כולל וניל Kubernetes.

Knative עובד בעיקר על ידי מינוף או הרחבה של כלים ופונקציונליות קיימים של Kubernetes. אפליקציות או פונקציות מוגדרות באמצעות קבצי YAML ונמסרות כמכולות Docker שאתה בונה. הוספה, שינוי או מחיקה של הגדרות מתבצעות באמצעות kubectlאפליקציית שורת הפקודה. למדדים על אפליקציות Knative, השתמש ב- Grafana. שינוי קנה המידה יכול להיעשות באמצעות המסקנה האוטומטית של Knative עצמו, או עם כל סקלר אחר תואם Kubernetes כולל מכונת כתיבה בהתאמה אישית.

Knative נמצא בפיתוח כבד, ורבים מהכלים הייעודיים שלו עדיין במצב קשה. אלה כוללים  knctl, CLI במיוחד עבור Knative, שחוסך ממך את הטרחה להשתמש בכלים האחרים של Kubernetes לניהול Knative אם אתה רק רוצה להתמקד ב- Knative; ו ko, ככלי לבניית יישומים להמשיך Knative ידי ביטול צעד מיכל לבנות.

ללא קוביות

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

זמן ההפעלה הנפוץ ביותר של השפה מגיע עם הפלטפורמה: .NET, Java, Python, Node.js, PHP, Ruby, Go ואפילו את שפת הבלרינה החדשה לפיתוח הענן. Runtimes הם רק תמונות Docker, אם כי ל- Kubeless יש פורמט אריזה ספציפי לשימוש ב- Dockerfiles לבניית זמן ריצה מותאם אישית.

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

Kubeless פועלת גם כתוסף עבור Framework Serverless, מערכת לבניית יישומים ללא שרת על מגוון ארכיטקטורות. אם אתה כבר משתמש ללא שרת או לקובלס, יהיה לך קל יותר להוסיף אחד מאשר להשתמש במשהו אחר.

OpenFaaS

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

ניתן לפרוס את OpenFaaS ל- Kubernetes או לאשכול Docker Swarm (לבדיקה מקומית או לשימוש בעל ביקוש נמוך). אתה משתמש ב- OpenFaaS CLI כדי לבנות, לדחוף ולפרוס תמונות Docker באשכול להפעלת פונקציות. תבניות קיימות מספקות דרכים שהוכנו מראש לפריסת אפליקציות שנכתבו ב- Go, Python, Node.js, .NET, Ruby, Java או PHP 7, אם כי תמיד תוכלו לגלגל בעצמכם. ה- OpenFaaS CLI מספק לך גם דרכים לנהל סודות באשכול שלך, ואילו ממשק המשתמש המובנה באינטרנט מאפשר לך ליצור פונקציות חדשות ולנהל אותם.

גרסה נוספת של OpenFaaS, OpenFaaS Cloud, מארזת OpenFaaS מחדש עם תכונות למפתחים מרובים, כולל אינטגרציה עם Git (כולל GitHub ומהדורות עצמיות של GitLab), CI / CD, ניהול סודות, HTTPS ויכולת להזין אירועים ל- Slack ואחרים. כיורים. OpenFaas Cloud זמין כמוצר קוד פתוח בחינם, ובגרסה מתארחת שכיום חופשית לשימוש.

OpenWhisk

אפאצ'י OpenWhisk מחויב כפלטפורמה כללית ללא שרתים. Kubernetes היא רק אחת מכמה אפשרויות הזמינות להפעלת מכולות ב- OpenWhisk, מכיוון ש- OpenWhisk תומך גם ב- Mesos ו- Docker Compose. עם זאת, קוברנטס מועדפת בשל הכלים שלה לפריסת אפליקציות, במיוחד תרשימי הלם. פונקציות הענן של יבמ מבוססות על פרויקט OpenWhisk, כך שאפשר לעבוד גם עם פקודות OpenWhisk CLI.

בניגוד לרוב מסגרות ה- Kubernetes האחרות ללא שרתים, OpenWhisk נכתב בשפת Scala, ולא ב- Go (שגם כותבים ב- Kubernetes וגם ב- Docker). סביר להניח שזו תהיה בעיה רק ​​אם תרצו לפרוץ ל- OpenWhisk, ויש לכם ניסיון רק עם Go. 

רוב האפשרויות הפופולריות של זמן ריצה ליישומים מגיעות באריזה מראש עם OpenWhisk: Java, Node.js, Python, Ruby, PHP ו- .NET. בנוסף כלולות גם אפשרויות אזוטריות וחדישות רבות: סקאלה, בלרינה, סוויפט ורוסט. זמן ריצה הוא רק מכולות דוקר, כך שקל לספק בעצמך.

אחת מתכונות הפריסה הנוחות של OpenWhisk היא "פעולות zip". הצבע ארכיון zip של קוד וקבצי עזר ל- OpenWhisk באמצעות קובץ המניפסט עבור חבילת קוד, ו- OpenWhisk תיצור ממנו פעולה. ה- OpenWhisk CLI כולל גם כלים להפיכת עץ קוד ספריות לארכיון כזה. וקטלוג של חבילות שירות מקל על חיבור היישום שלך להצעות צד שלישי נפוצות כמו GitHub, Slack, Apache Kafka או Jira.