הקדמה
Helm הוא מנהל חבילות עבור Kubernetes שמאפשר למפתחים ולמפעילים להגדיר ולהשתיל אפליקציות בצורה יותר קלה על קבוצות Kubernetes.
חבילות Helm נקראות תרשימים, והן מכילות תבניות של הגדרות משאב שמשתילות ומגדירות אפליקציות נתונות עם מינימום מאמץ דרוש מהמשתמש. באמצעות התבניות, ניתן לנהל את התרשים, את ההגדרות שלו ואת ההתנהגות שלו על ידי מעבירת הגדרות משתנות מבלי לשנות את התרשים הממשי. משאבי ההגדרה המותאמים אישית, וגם שינויים בהגדרות המשאבים שכבר הושקו, Helm מנהל באופן אוטומטי. תרשים שהושק, עם התאמות אישיות אפשריות, נקרא הפצה.
במדריך זה, תגדיר את Helm 3 ותלמד איך להתקין, לשדרג, לגלול אחורה ולנהל תרשימים והפצות. תלמד גם ליצור ולארוז תרשימים משלך, וגם להגדיר מאגרי תרשימים, שמארחים תרשימים שניתן להתקין מיידית.
דרישות מוקדמות
-
אשף Kubernetes עם בקרת גישה מבוססת תפקידים (RBAC) מופעלת. למידע נוסף על הוצאות, ניתן לבדוק את העמוד של הוצאות ב-Helm.
-
הכלי שורת הפקודה
kubectl
מותקן על המכונה המקומית שלך, מוגדר להתחברות לקבוצה שלך. ניתן לקרוא עוד על התקנתkubectl
בתיעוד הרשמי.ניתן לבדוק את החיבור שלך עם הפקודה הבאה:
אם לא קיבלת שגיאות, אתה מחובר לקבוצה. אם אתה גושב גישה למספר קבוצות עם
kubectl
, ודא שבחרת בהקשר הנכון של הקבוצה על ידי הרצת:הפלט יציג את התצורות הזמינות:
פלטCURRENT NAME CLUSTER AUTHINFO NAMESPACE * do-fra1-helm3-example do-fra1-helm3-example do-fra1-helm3-example-adminכאן, האסטריק (
*
) מציין שאנחנו מחוברים לקבוצתdo-fra1-helm3-example
. כדי להחליף קבוצות, הרץ:
כאשר אתה מחובר לאשכול הנכון, המשך לשלב 1 כדי להתחיל בהתקנת Helm.
שלב 1 — התקנת Helm 3
בסעיף זה, תפקידך יהיה להתקין את Helm 3 באמצעות סקריפט השורת פקודה המסופק באופן רשמי.
התחל על ידי ניווט לתיקייה /tmp
, שם תאחסן את סקריפט ההתקנה על ידי הרצת:
הורד את הסקריפט עם הפקודה הבאה:
ניתן לבדוק את get_helm.sh
בעורך הטקסט שלך כדי לוודא שהוא בטוח.
הגדר את ההרשאות שלו להיות יציבות על ידי הגדרת הרשאותיו ל:
לבסוף, הריצו את הפקודה הבאה כדי להתקין את Helm 3:
תקבלו פלט דומה למה שלמטה:
OutputDownloading https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
יש לכם את Helm 3 מותקן על המכונה שלכם. עכשיו תלמדו על כרטיסי מחסור וכיצד להשתמש בהם.
שלב 2 – הגדרת כרטיסי מחסור
כרטיסי Helm מאוחסנים במאגרי מחסור שכולם יכולים לארח. למרבית מקרי השימוש, Helm 3 לא מגיע תיקנית עם שום מאגר מחסור. גרסאות קודמות של Helm כללו מאגר כרטיסים מאורגן מראש; עם זאת, עיצובו של Helm 3 התפתח בכוונה כך שמפתחי כרטיסים יכולים לנהל את מאגר הכרטיסים שלהם, וזה מאפשר חופש רב יותר ושחרורים מהירים יותר. זה אומר שעבור כל כרטיס שתרצו להשתמש בו, עליכם לוודא שאתם מוסיפים את מאגר המארח להתקנת ה-Helm שלכם.
כדי לעזור לכם למצוא את המאגר הנכון, ניתן להשתמש ב־ArtifactHub.io, אתר קוד פתוח שמנוהל על ידי CNCF שמפנה קטלוג של כרטיסי Helm והמאגרים שלהם. הוא גם מעקב אחר כרטיסים פופולריים ושימושיים שפרויקטים אחרים של CNCF משתמשים בהם, לכן הוא שונה מהמאגר ה־stable
שגרסאות קודמות של Helm עבדו ממנו. עבור פרויקטים נפוצים, כמו כניסות Nginx או כלים לניטור, זהו מקור מצוין.
ניתן לחפש כרטיס שברצונכם להתקין דרך העמוד הבית. חיפוש אחר nginx
יציג את כל הכרטיסים שקשורים אליו.
תתקין את הגרסה הקהילתית בניהול הקוברנטס. חפש את ingress-nginx
כדי למצוא אותה בתוצאות שלך. בחר בה כדי לגשת אל דף המידע שלה.
כל תרשים צריך לכלול תיאור שמסביר מה הוא עושה, יחד עם פקודות להוספת המאגר שלו להתקנתך ולהתקנת התרשים. אם זה לא קיים, עדיין ניתן לקבל את הפקודות הנדרשות על ידי לחיצה על הכפתור התקן בימין של העמוד.
ניתן ללחוץ על הכפתור הכחול ליד פקודה כדי להעתיק אותה. עשה זאת לפקודה הראשונה, והרץ אותה:
כדי להוסיף מאגר ל־Helm, עליך להריץ את helm repo add
. הפרמטרים שהוא מקבל הם שם המאגר והמיקום שלו.
הפלט יהיה:
Output"ingress-nginx" has been added to your repositories
כאשר אתה מוסיף מאגר חדש, עליך לעדכן את Helm על ידי הרצת:
תקבל את הפלט הבא, המראה שהעדכון הצליח:
OutputHang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "ingress-nginx" chart repository
Update Complete. ⎈Happy Helming!⎈
בשלב זה, למדת על ArtifactHub ועל מה שהוא מציע. גם הוספת מאגר חדש להתקנת ה־Helm שלך. בשלב הבא, תתקין תרשים של Helm.
שלב 3 — מתקין תרשים של Helm
במקטע הקודם, הוספת את המאגר עבור תרשים ה־ingress-nginx
. כעת תתקין אותו בקבוצת הקלאסטר שלך.
כל תרשים מכיל משתני תצורה שניתן להגדיר כדי לשנות את ההתנהגות שלו. משתנים אלו מאוחסנים בקובץ הנקרא values.yaml
שהוא חלק מהתרשים. אלא אם כן הורדת את התרשים למחשב שלך, עליך להריץ את הפקודה הבאה כדי להציג אותו:
כדי להציג את המשתנים הזמינים עבור ingress-nginx
, החלף את chart_name
:
הפלט יהיה ארוך ויציג את תוכן values.yaml
עבור ingress-nginx
.
כדי להתקין תרשים, ניתן להשתמש ב־helm install
:
A release is a deployed instance of the chart, and here you’re calling it ingress-nginx
.
הפקודה הזו תתקין את התרשים באשכול שלך עם ערכי משתנים ברירת מחדל. אם ברצונך לשנות חלק מהם, ניתן להעביר את ערכי המשתנים החדשים באמצעות --set
:
ניתן לחזור על --set
עבור כמה משתנים שנדרש. מאחר שאנו לא נבצע אישור כעת, ניתן להתקין כך כמו שהוא על ידי הרצת:
הפלט יהיה דומה למה שלמטה:
OutputNAME: ingress-nginx
LAST DEPLOYED: Wed Feb 24 10:12:37 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w ingress-nginx-controller'
...
שים לב שה־NAME
תואם לשם השחרור שציינת. Helm גם מפרט מידע נפוץ, כגון מצב השחרור והמרחק התחום שבו הוא מופעל. חלק ה־NOTES
משתנה בין תרשימים, ובדרך כלל מכיל הדרכה להתחלה מהירה או מזהה מקומיות נפוצות בשימוש במשאבי התרשים. כאן, הוא מציין שמתבצע יצירת המאזן עומס וכי ייתכן שיקח זמן להשלים את התהליך.
כדי לבדוק את התרשימים שהופעלו, ניתן להשתמש ב־helm list
:
תמצא כי ingress-nginx
הוא התרשים היחיד שהופעל כרגע:
OutputNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ingress-nginx default 1 2021-02-24 10:12:37.281049711 +0000 UTC deployed ingress-nginx-3.23.0 0.44.0
ניתן למצוא את השירותים שיש לך באשכול שלך על ידי הרצת:
הפלט יהיה דומה לזה:
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.245.211.81 46.101.68.67 80:30704/TCP,443:30700/TCP 7m19s
ingress-nginx-controller-admission ClusterIP 10.245.50.17 <none> 443/TCP 7m19s
kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 83m
עכשיו שהגעת לשחרור באשכול שלך, תשנה את התצורה שלו במהלך השחרור.
שלב 4 — עדכון שחרור
לאחר ששחררת את השחרור, אין צורך להרס אותו ולשחרר מחדש במלואו כאשר יש צורך לשנות את ההגדרה שלו. באפשרותך להשתמש בפקודת helm upgrade
כדי לשדרג את השחרור עם גרסה חדשה של התרשים, או להגדיר הגדרות חדשות.
התרשים ingress-nginx
מספק את המשתנה controller.replicaCount
ששולט במספר הפודים של הקונטרולר ששוחררו. בברירת מחדל, הוא מוגדר לאחד, כמו שתוכל לוודא ברשימת הפודים הזמינים:
תמצא שיש רק אחד:
OutputNAME READY STATUS RESTARTS AGE
ingress-nginx-controller-7fc74cf778-kjtst 1/1 Running 0 12m
אם ברצונך לשחרר עוד כדי לקבל גומלין (לדוגמה, שלושה), תוכל להשתמש בפקודת upgrade
ולהגדיר את המשתנה ל-3
על ידי הרצת:
כמו כן, תעביר --reuse-values
, שמורה ל-Helm לבצע את השינויים שלך בעקבות השחרור שנשחרר, ולשמור על ההגדרה הקודמת.
בפלט, Helm יגביר את התיקון כדי לסמן כי השחרור עודכן:
OutputNAME: ingress-nginx
LAST DEPLOYED: Wed Feb 24 12:07:54 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
...
ניתן לרשום את הפודים הזמינים על ידי הרצת:
תמצא שלושה פודים ברשימה, במקום אחד:
OutputNAME READY STATUS RESTARTS AGE
ingress-nginx-controller-7fc74cf778-4hk9g 1/1 Running 0 18s
ingress-nginx-controller-7fc74cf778-kjtst 1/1 Running 0 22m
ingress-nginx-controller-7fc74cf778-wz595 1/1 Running 0 18s
הבא תגלגל אחורה את השינויים ותמחק את השחרורים לגמרי.
שלב 5 — גלגול חזרה ומחיקת שחרור
כאשר אתה משדרג
שחרור, מספר הגרסה שלו מתאדי. מבחינה פנימית, Helm שומר כל הגרסאות של שחרור, מאפשר לך לחזור לגרסה קודמת אם נדרש.
כדי להחזיר את מספר ה־pods לרק אחד, תוכל להריץ שוב helm upgrade
ולהגדיר את המספר באופן ידני משום שזה שינוי קטן. אך, כאשר עובדים עם תרשימים גדולים עם הרבה משתנים, החזרת ידנית אינה אפשרית ועל כן צריך להיות ממוכנים לאוטומטיזציה.
כדי לגלגל חזרה של שחרור, עליך להשתמש ב־helm rollback
:
תוכל להשתמש בו כדי לבטל את השינויים שביצעת ל־ingress-nginx
על ידי גלגול חזרה לגרסה 1
:
תקבל את הפלט הבא, המציין שהפעולה הייתה מוצלחת:
OutputRollback was a success! Happy Helming!
תוכל לבדוק את הגרסה הנוכחית על ידי רשימת השחרורים:
תגלה כי הגרסה כעת היא 3
, ולא 1
:
OutputNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ingress-nginx default 3 2021-02-24 12:43:21.523664768 +0000 UTC deployed ingress-nginx-3.23.0 0.44.0
Helm רואה כל שינוי, כולל גלגולים, כגרסה חדשה לשחרור. תוכל לבדוק שהגרסה 3
שווה לקודמת על ידי בדיקת מספר ה־pods שהוטמעו על ידי הרצת:
תגלה כי יש רק אחד:
OutputNAME READY STATUS RESTARTS AGE
ingress-nginx-controller-7fc74cf778-kjtst 1/1 Running 0 41m
כדי למחוק שחרור ואת כל הגרסאות שלו, תוכל להשתמש ב־helm delete
:
מכיוון שאין עוד צורך בו, נא למחוק את ingress-nginx
באמצעות הפקודה הבאה:
הפלט יהיה:
Outputrelease "ingress-nginx" uninstalled
ניתן לרשום את השחרורים כדי לוודא שאין שום אחד:
הטבלה הפלטה לא תכיל שורות:
OutputNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
כעת שהשחרור נמחק, תוכלו להשתמש בשם שלו לפרסומות עתידיות.
שלב 6 — (אופציונלי) יצירת תרשימים מותאמים אישית
בשלב אופציונלי זה, תלמדו כיצד ליצור תרשים מותאם אישית, איפה לשים את ההגדרות של המשאב וכיצד לארוז אותו להפצה נוספת.
תיצרו תרשים חדש בשם example-chart
. הריצו את הפקודה הבאה כדי ליצור אותו:
זה ייצור ספריית חדשה בשם example-chart
עם הקבצים והמבנה הבאים:
charts/
templates/
├─ tests/
│ ├─ test-connection.yaml
├─ deployment.yaml
├─ hpa.yaml
├─ ingress.yaml
├─ NOTES.txt
├─ service.yaml
├─ serviceaccount.yaml
├─ _helpers.tpl
Chart.yaml
values.yaml
ההגדרות של המשאב שהתרשים שלך יתקין באשכולות היעד נמצאות בתיקיית templates
. ההגדרות הברירת מחדל שיצר Helm כנקודת התחלה מאפשרות להפעיל בקר Ingress של Nginx. אף על פי שסיומת הקובץ היא YAML, הם משתמשים בתחביר הטמפלטים של Go כדי להישאר ניתנים להתאמה באמצעות משתנים חשופים שאתה יכול לעבור. ניתן לאמת זאת על ידי הצגת תוכן של service.yaml
על ידי הרצת:
תמצאו כי יש לו הפניות טמפלט ליצירת ערכים שסובבים בסוגריים כפולים:
המשתנים שהוזכרו חשופים למשתמש ומוגדרים ב־values.yaml
. הטקסט NOTES
שHelm מציג לאחר ההתקנה מאוחסן ב־NOTES.txt
, וכן נטמפל. מטא-נתוני התרשים, כגון שם, גרסה, וגרסת התוכנה שמותקנת, מפורטים ב־Chart.yaml
:
כדי לבדוק מה Helm ינסה להתקין, ניתן לעבור ב־--dry-run
ו־--debug
ל־helm install
ולצבוע לתיקיית התרשים:
הפלט יהיה ארוך ויכיל את כל ההגדרות הסופיות של המשאבים שיתווספו לאשן העבודה שלך. בעוד שאתה עובד על התרשים שלך, אפשר להשתמש ב־helm upgrade
כדי להעלות גרסאות חדשות ל־Kubernetes.
כאשר הגיע הזמן לשתף את התרשים המוכן שלך, ניתן לארוז אותו להפצה על ידי הרצת:
הפלט יהיה:
OutputSuccessfully packaged chart and saved it to: .../example-chart-0.1.0.tgz
התרשים המארוז ניתן להתקין בדיוק כמו אלו ממאגרי התרשימים שנוספו:
בשלב זה יצרת תרשים מותאם אישית והתקנתו. גם ארזת אותו, ולמדת על מבנהו.
מסקנה
עכשיו אתה יודע כיצד להשתמש ב־Helm להתקנה ושדרוג של תוכנה שהותקנה באשן Kubernetes שלך. הוספת מאגרי תרשימים, ולמדת למה הם חשובים וכיצד ArtifactHub יכול לעזור לך למצוא אותם. גם יצרת תרשים מותאם אישית חדש ולמדת על גרסאות תרשימים וכיצד לגלול לאחור אם נדרש.
למידע נוסף על יצירת תרשימים מותאמים אישית, בקר ב- מדריך הרשמי.