כל צוות מחפש קליע כסף להקלת תהליכים, לאסוף מהר יותר ולשמור על סביבות יציבות. אחת הגישות שראתה אימוץ גבוה בשנים האחרונות היא GitOps. בעוד שהמילה עשויה להיראות כמילה נוספת מז'אנר DevOps, היא מייצגת שינוי מהפכני באופן בו צוותים מנהלים את התשתית וההפעלות.
במאמר זה, נדון ב-GitOps, מה הוא כולל ואיך הוא שונה מפתרונות DevOps מסורתיים.
מהי GitOps?
GitOps היא מסגרת בה שיטות עבודה מבוססות Git משמשות לאוטומציה של תשתית והפעלת יישומים. בליבה, היא לוקחת את אותם העקרונות והמעשים שמפתחים משתמשים לשליטה בשינויים בתוכנה ומיישמת אותם למערכות. בפשטות, GitOps היא תרגול בו מאגר Git משמש כמקור אמת יחיד, שינויים או מודיפיקציות נעשים דרך בקשות הוצאה (pull requests), ומערכת אוטומטית מתאימה את השינויים לסביבה המטרה.
עקרונות מרכזיים של GitOps
התכונות העיקריות של GitOps כוללות את הבאים:
Git כמקור אמת
כל דבר, כולל תשתית, הגדרות והפעלות יישומים, חייבים להיות מאוחסנים במאגר Git. זה מאפשר לך לשמור על הכל תחת שליטה. קבוצות קוראות ומיישמות את ההגדרות, הגדרות ההפעלה ואבזרי ניהול סביבה מהמאגר Git. אבזרים עוזרים לעקוב אחר שינויים; אם שינוי נגלה במאגר, האבזרים ייישמו אותו אוטומטית.
תשתית דיקלרטיבית
זה אומר שצריך להגדיר את המצב המוכר של כל דבר במערכת בשימוש ב YAML או JSON. כלים ישוו אז את המצב הזה עם המצב הממשי ויעשו הכל האפשרי כדי להביא אותו לידי עיקרי המצב המוכר.
אוטומציה ו CI/CD
שינויים שנעשים במאגרי Git צריכים לרוץ אוטומטית את התהליך. זה יכול להיות, למשל, Jenkins, ArgoCD או Flux, שיפעילו אוטומטית התקנות חדשות של תכנות או גרסאות של היישום כדי להבטיח שהמערכת מתאימה למצב של המאגר. החלק "CD" בראשי התיבות הוא מיוחד במיוחד, שכן שינויים צריכים להופיע באופן מתמשך וכמה שיותר מהר.
תיקון עצמי והתאמה מתמשכת
כלים GitOps בדרך כלל יש להם דרך לנטר את המערכת ולהחליט האם מה שהם רואים עקבי עם מה שנשמר במאגר. אם נמצא פיחות כלשהו, הכלים יפתרו את הסביבה הנקראת "תיקון" על ידי שינוי אותה חזרה למה שמתואר במאגר.
המעבר מ DevOps ל GitOps
לפני שנכנסים לפרטים של GitOps ואיך הוא סותר DevOps, זה חשוב להעריך את התרומה של DevOps הקלאסי. DevOps מתייחס לניהול של צוותי פיתוח ותפעול באופן שמגביר את שיתוף הפעולה בעודו מופעל אוטומציה של תהליכים כמו בדיקות, התקנות ואספקת תשתיות.
באופן כללי, תהליכי DevOps כוללים אימוץ כלים כמו Jenkins, Kubernetes, Docker ו-Ansible לפיתוח תהליכי אינטגרציה התמשכית ואספקה התמשכית (CI/CD) בתוך תקופת חיים של פיתוח תוכנה, ובכך משפרים את מהירות אספקת התוכנה.
איפה מתאים GitOps?
GitOps בונה על עקרונות האבולוציה של DevOps אך בדרך יותר מובנה. הוא משלב גישות Git לתוך תפעולי יום 2 בדרך מתקדמת יותר במקום להיות עניין של הוספה.
בעוד שעובדים עם טכניקות DevOps מסורתיות, יש סיכון גבוה שקבוצות שונות ומרובות עשויות לעבוד על תשתית וקודיי אפליקציות באותו זמן, מה שעשוי להוביל לסיכונים. כל הפעילויות הללו מתבצעות תחת Git; יש גם תשתית, וכל שינוי, ללא חשיבותו, נשלט ומגורס באופן זהה.
יתרונות של אימוץ תהליכי GitOps
ביטחון ומילוי חוקים משופרים
אחד היתרונות של החזקת מאגר Git נשלט בגרסיה כדרך היחידה לתקשר ולבצע שינויים בתשתית ובאפליקציות הוא שהוא יוצר שורה רשומה הניתנת לאימות.
חוויית מפתח משופרת
מפתחים יכולים להשתמש בכלים שהם כבר מורגלים להם, כמו Git, לביצוע ניהול תשתית. על ידי אפשרות למפתחים להשתמש באותם כלים לניהול התשתית, GitOps מסיר את הצורך בכלים נוספים והופך את האימוץ של תפיסת GitOps לקל יותר.
הקפת חזרה מהירה ושיקום במקרי קטסטרופה
אחד האתגרים עם רבים ממערכות DevOps המסורתיות הוא שהן יכולות להיות רגישות להקפת חזרה של שינויים. GitOps מאפשר לך להקפת חזרה את כל המערכת למצב כלשהו באמצעות בדיקת גרסיה קודמת של המאגר. זה יכול להקטין בצורה דרמטית את זמן השיקום במקרי קטסטרופה.
אחידות ועקביות בין סביבות
Git הוא המקור לאמת, מה שמבטיח שמה שנמצא בGit — מגיע לגרסת פיתוח ועד לגרסת ייצור — צריך לדמות את מצב המערכת. לא יותר "זה עובד על המחשב שלי." שינויים בהגדרות שונות בסביבות שונות הם בעיה טיפוסית בהפעלה ידנית של שינויים.“It works on my machine.”
יכולת להתאים
GitOps הוא יותר סקלינג מפתרון ניהול הגדרות מסורתי. הוא מציג את המושג של היות דקלרטיבי במקום ציווי. במקום לשנות את הסביבה במקום אחד, בGitOps אתה מתאר את הסביבה פעם אחת. הכלי אז מוודא באופן מתמשך שהסביבה נכונה ובונה מכונות כדי לעמוד בתיאור הזה בכל המערכות.
איך GitOps משנה את תרגולות DevOps
גיטאופס היא שינוי חדש לצד שמאל בכלים ותהליכי DevOps CI/CD. הנה איך כמה פתרונות DevOps מסורתיים מאמצים את גיטאופס עכשיו או מתכוונים לשלב תרגולי גיטאופס בעתיד:
1. תשתית כקוד
זה באופן בלתי נפסד לDevOps ליצור ולנהל תשתית ואולי לאוטומט את התהליכים האלה. מאסטר DevOps יכול להשתמש בכלים כמו Terraform או CloudFormation, אבל מומחה אחר יכול לבצע את אותם סקריפטים ליצירת סביבה שונה לחלוטין. זה המקום שבו תשתית כקוד באה לידי ביטוי. זה בעיקר אומר איחסון כל התכונות IaC בגיט. במערכת זו, הכל מאוטומט ובעיקר, נבדק ללא הפסקה.
2. תהליכי CI/CD
בעומסי עבודה DevOps מסורתיים, תהליכי CI/CD מאוטומטים בבדיקה, בנייה והפצה של הקוד. אולם, עם GitOps, תהליך CI/CD גם משמש להפצת שינויים בתשתית. כלים כמו ArgoCD ו-Flux משפרים את תהליך CI/CD המסורתי על ידי ניטור של מאגר הגיט ועדכון אוטומטי של הסביבה ברגע ששינוי נשלח אליו. כך, התהליך עושה יותר עבור המפתח ומאיץ את המחזור.
3. ניטור וראיה
GitOps מתמקד במעקב ובניטור, מה שהופך אותו ליותר אמין. הכלים המשמשים ב-GitOps מנטרים באופן רציף את הסביבה החיה ומשווים אותה למצב שהוגדר ב-Git. לכן, המערכת יכולה להחזיר אוטומטית אם היא נסחפת מהמצב המוגדר. ההחזרות האוטומטיות שוקמות במהירות סביבות בעייתיות, מינימיזות את זמן החסימה ומשפרות את אמינות המערכת.
מסקנה
בסופו של דבר, GitOps אינו רק מילה חזקה אלא גישה חזקה שיכולה לשנות את המעשה המסורתי של DevOps. על ידי התייחסות לתשתית ולהפעלות כקוד, GitOps מבטל את הצורך בתפעולים ידניים ומבטיח את המצב הרצוי בכל הסביבות.
לצוותים שחושבים על עדכון שירותי DevOps CI/CD, אימוץ תהליכי GitOps הוא דרך להשיג תוצאות רצויות ביעילות ואמינות רבה יותר. עם כלים כמו ArgoCD ו-Flux, GitOps יש לו עתיד מזהיר ויכול להפוך לחלק דומיננטי של תחזית ה-DevOps העתידית.
Source:
https://dzone.com/articles/an-introduction-to-gitops