התקנת Flux עם flux-cli
פורסם בתאריך 30 בינואר 2024
כדי להתקין את flux על הקלאסטר שלנו נצטרך לבצע את השלבים הבאים:
- התקנת Flux CLI על המחשב שלך
- יצירת Repository ב-Github שבו יאוחסן המצב של הקלאסטר בקבצי yaml
- Create a Github PAT (Personal Access Token) that will allow Flux to access the repository
- יצירת Github PAT (Personal Access Token) שיאפשר ל-Flux לגשת ל-Repository
- להשתמש ב-Flux CLI, להריץ את
flux bootstrap
כדי להתקין את Flux על הקלאסטר
דרישות מוקדמות
בשיעור זה אנו מניחים שיש לך קלאסטר של kubernetes - גרסת שרת 1.26 או גבוהה יותר, ועל המחשב שלך יש kubectl
שיכול לתקשר עם הקלאסטר שלך.
אנו לא נסביר את השלבים האלה, אך אנו ממליצים ליצור קלאסטר ניהולי מינימלי באחד מספקי הענן (בקורס זה נשתמש ב-GKE - קלאסטר ניהולי של GCP).
Flux CLI
Flux CLI הוא כלי שורת פקודה שמאפשר לך להפעיל את flux על הקלאסטר שלך, ולהתקשר עם flux שרץ על הקלאסטר שלך. Flux CLI ניתן להתקנה בדרכים שונות, אך נתקין אותו באמצעות homebrew:
עבור דרכי התקנה נוספות ניתן לבדוק את המדריך הרשמי.
ודאו שאחרי ההתקנה אתם יכולים להריץ בטרמינל:
בזמן כתיבת המאמר גרסת ה-flux היא fluxctl version 2.2.2
.
פקודת שכיחות של Flux CLI
Flux CLI מכיל פקודות שונות שמאפשרות לך להתקשר עם flux שרץ על הקלאסטר שלך, או לעזור לך ליצור משאבים מקומיים. ניתן לראות את הפקודות באמצעות:
להלן כמה מהתכונות העיקריות של ה-cli:
- bootstrap - פקודה זו תתקין את flux על הקלאסטר שלך, תעדכן את flux לגרסה חדשה יותר, תתקין מחדש רכיבים נוספים אם נדרש.
- check - תוודא שהקלאסטר שלך עומד בדרישות עבור flux.
- create - פקודות שמאפשרות לך ליצור משאבים מקומיים (בדרך כלל תשתמש בזה כדי ליצור את המשאבים מקומית עם הדגל
--export
ואז לשלוח אותם למאגר git) - reconcile - פקודה שמאפשרת לך לסנכרן את flux controllers ולעדכן את מצב הקלאסטר שלך אם נדרש.
נתחיל על ידי הרצת הפקודה flux check
כדי לוודא שהקלאסטר שלנו עומד בדרישות עבור flux:
סנכרון Flux עם הריפוסיטורי
בקרוב נתקין flux על הקלאסטר שלנו, וflux ייצור פודים של קונטרולרים, אלו הקונטרולרים יגיבו למשאבים מסוימים של flux. אל תדאגו על הקונטרולרים האלו כרגע כי נכון לעכשיו יהיו שיעורים על כל קונטרולר.
מה שחשוב כרגע הוא שאחד מהקונטרולרים נקרא source-controller
ואנו יכולים להורות לקונטרולר זה לקרוא מ branches בריפוסיטורי git. עכשיו למה זה חשוב עבורנו? כי זה יהיה נקודת הכניסה שלנו להורות ל-flux “לצפות על משאבים מסוג flux בריפוסיטורי זה”.
כלומר ניתן להורות ל-flux לקרוא מריפוסיטורי git, ואז נוכל ליצור משאבים מסוג Kustomization
שיאמרו ל-flux לעקוב אחרי מיקום מסוים בריפוסיטורי, ואז נוכל ליצור משאבים בקלאסטר, ואז flux ישמור על מצב הקלאסטר עם המשאבים שיצרנו.
בקורס זה נורה ל-flux לעקוב אחרי branch main בריפוסיטורי git יחיד, כל דקה, אך ניתן להורות ל-flux לעקוב אחרי יותר מריפוסיטורי git, או יותר מ-branch אחד, למערכת מבוזרת עם כמה צוותים.
על מנת ש-flux יוכל לקרוא מריפוסיטורי git (בדוגמה שלנו נשתמש ב-github), נצטרך ליצור PAT (Personal Access Token) שיאפשר ל-flux לגשת לריפוסיטורי.
PAT - Personal Access Token - מפתח גישה אישי
אנחנו נגדיר את flux לעקוב אחרי שינוי בריפוסיטורי, ולדעת מה המשאבים שיצרנו, נצטרך ליצור PAT (Personal Access Token) שיאפשר ל-flux לגשת לריפוסיטורי. ה-PAT יתן ל-flux גישה לריפוסיטורי ולראות את השינויים (ניתן להגדיר PAT יחיד שיאפשר לגשת לריפוסיטורי רבים).
הריפוסיטורי שלנו יהיה מאוחסן ב-Github, וב-Github יש 2 סוגי PATs, אחד שיש לו גישה לכל הריפוסיטוריות של המשתמש (קלאסי), ואחד שיש לו גישה רק לריפוסיטוריות שנקבעו (fine-grained token).
בדוגמה שלנו ניצור PAT שיש לו גישה רק לריפוסיטורי אחד (בדוגמה שלנו אבל בהגדרת צוותים מבוזרת נוכל להגדיר ריפוסיטורי רבים), ונקבע לו את הסקופ repo
.
ראשית ניצור ריפוסיטורי ב-Github שבו יאוחסן המצב של הקלאסטר. בדוגמה שלנו יצרתי את הריפוסיטורי הציבורי: ywarezk/academeez-k8s-course.
לאחר שיצרתם את הריפוסיטורי, ניצור PAT שיש לו גישה לריפוסיטורי זה. ניתן ליצור PAT בכתובת: Settings/Developer Settings/Personal Access Tokens/Fine-grained token או פשוט ללחוץ על קישור זה.
- בחר שם ל-token
- בחר תאריך תפוגה ל-token - כאשר ה-token יפוג תצטרך לסנכרן עם token חדש
- אפשר גישה רק ל-repository שיצרת
- באגף ההרשאות Repository permissions בחר Contents ושנה את הגישה ל-Read and write
לחץ על Generate token ותראה טוקן שמתחיל ב github_pat_****
העתק את הטוקן ובטרמינל קבע אותו כמשתנה סביבה:
אנחנו כמעט מוכנים להתחיל להפעיל את flux על הקלאסטר שלנו, אך לפני שנעשה זאת נתכנן איך יראה ה-repository שלנו ב-git.
ריבוי קלאסטרים
בקורס זה נעבוד עם קלאסטר אחד, אך בסביבה אמיתית תהיה לך ריבוי קלאסטרים, לדוגמה קלאסטר ל-staging, קלאסטר ל-production, קלאסטר ל-development, קלאסטר ל-CI ועוד. Flux יכול לנהל ריבוי קלאסטרים, ולא רק זה, אלא גם לשתף משאבים בין הקלאסטרים. חשבו על כל הפעמים שיצרתם קלאסטר ואז התקנתם ingress controller (בקורס זה נעבוד עם nginx ingress controller) ועשיתם זאת שוב ושוב על כל קלאסטר, אבל לא עוד, עכשיו נוכל לבנות מאגר נקי עם משאבים משותפים בכל או חלק מהקלאסטרים שלנו.
הריפוסיטורי שלנו יכיל /clusters/:name-of-cluster
בתיקיית clusters
ניצור תיקייה עבור כל קלאסטר.
בנוסף ניצור תיקייה בשם infrastructure
למשאבים משותפים בין הקלאסטרים כמו nginx ingress controller.
התקנת Flux עם פקודת bootstrap
נתחיל בהתקנת flux כדי לנהל את הקלאסטר שלנו. נריץ את הפקודה flux bootstrap
ולאחר הרצת הפקודה ייאחסן המצב של ה-k8s ב-repository git, וכל שינוי שנעשה בקלאסטר יתבצע על ידי דחיפת שינויים ל-repository git.
זוכרים את ה-source-controller
שדיברנו עליו? flux יתקין את הקונטרולר הזה בזמן ההתקנה, וזוכרים את ה-PAT שיצרנו? flux יכין אותו ב-secret (אם נקבע במשתנה סביבה נכון), וזוכרים את ה-repo שיצרנו? נגיד ל-flux ליצור משאב שה-source-controller
ידע לסנכרן עם ה-repo הזה.
הריצו את הפקודה הבאה כדי להתקין את flux על הקלאסטר שלכם:
נבחן את הפקודה:
- באמצעות
github
,owner
,repository
,branch
flux ידע ליצור את המשאבGitRepository
- באמצעות
path
flux ידע ליצור את המשאבKustomization
(נדבר על זה בשיעורים הבאים) personal
מספר ל-flux שאנו משתמשים ב-repo אישי ולא ב-repo של ארגון
בהתבסס על הדגלים האלו, flux ייצור 2 משאבים מותאמים אישית שקונטרולרים של flux יבדקו, וגם ייצור את כל הרכיבים שנדרשים ל-flux לרוץ על הקלאסטר. Flux יאחסן את כל הקבצים האלו ב-repository, אז לאחר הרצת הפקודה נצטרך למשוך את השינויים האחרונים.
שכפול הריפוסיטורי
נשכפל את הריפוסיטורי על המחשב שלנו כדי לראות את המצב של הקלאסטר שלנו:
שימו לב ש-flux יצר תיקייה בשם flux-system
שמכילה את כל המשאבים שהוא התקין בקלאסטר שלנו. לדוגמה בקובץ gotk-components.yaml
תמצאו את הקובץ שיצר את ה-namespace שבו flux התקין את כל הקונטרולרים:
מה התקין flux?
כאשר אתם מתקינים flux על הקלאסטר שלכם, בלי לציין דגלים נוספים לפקודת ההתקנה, flux יתקין את ה-toolkit הבסיסי שניתן לראות על ידי הרצת הפקודה:
בהתקנה ברירת המחדל יש לנו את הרכיבים הבאים:
- source-controller
- kustomize-controller
- helm-controller
- notification-controller
יהיה לנו שיעורים על כל אחד מהם, אבל כרגע נבין שכל אחד מהם צפוי להסתכל בריפוסיטורי שלנו אחר משאבי CRD שניצור בו, וליצור את המשאבים בקלאסטר שלנו.
יצירת Namespace
בואו ניתן ל-flux עבודה.
אנחנו ניצור קובץ בתיקיית clusters/staging
בשם namespace.yaml
עם התוכן הבא:
נבצע commit ונדחוף את השינויים ל-repository ונחכה דקה ונראה שה-namespace נוצר:
לסיכום
Flux כעת מנהל את הקלאסטר שלנו, וכדי להשיג את זה עשינו את השלבים הבאים:
- התקנת flux cli על המחשב שלנו
- יצרנו ריפוסיטורי ב-Github שבו יאוחסן המצב של הקלאסטר בקבצי yaml
- יצרנו PAT (Personal Access Token) שיאפשר ל-flux לגשת לריפוסיטורי
- השתמשנו ב-Flux cli, הרצנו
flux bootstrap
כדי להתקין את Flux על הקלאסטר - יצרנו קובץ בתיקיית
clusters/staging
בשםnamespace.yaml
וניצרנו namespace בקלאסטר
קוד המקור המלא לשיעור זה זמין כאן