הקדמה
במדריך זה, תלמד כיצד לפרוס את TrilioVault עבור Kubernetes (או TVK) לקשת ה-DOKS שלך, ליצור גיבויים, ולשחזר מגיבוי אם משהו הולך לא נכון. ניתן לגבות את כל הקשת שלך, או לבחור אופציונלית גיבויים על בסיס שם מרחב או תוויות.
יתרונות של שימוש ב-Trilio:
- בצע גיבויים מלאים (או תוספתיים) של הקשת שלך ושחזור במקרה של אובדן נתונים.
- העבר מקשת אחת לקשת אחרת.
- תמיכה בגיבויי Helm release.
- הפעל הוקסים קודם ואחרי לפעולות גיבוי ושחזור.
- לוח בקרה אינטרנטי שמאפשר לך לבדוק את מצב הפעולות של גיבוי/שחזור בפרטיות.
- הגדר מדיניות ניצול עבור הגיבויים שלך.
- מחזור חיי היישום (במובן, TVK עצמו) ניתן לניהול דרך אופרטור מיוחד של TrilioVault.
- אינטגרציה עם Velero.
- ניתן לגבות ולשחזר אפליקציות בעזרת אופרטור.
למידע נוסף, נא להפנות לתיעוד הרשמי של CRDs של TVK.
תוכן עניינים
- דרישות מקדימות
- שלב 1 – התקנת TrilioVault עבור Kubernetes
- שלב 2 – יצירת יעד TrilioVault לאחסון גיבויים
- שלב 3 – להכיר את לוח הבקרה האינטרנטי של TVK
- שלב 4 – דוגמה לגיבוי ושחזור מוגבל למרחב שמוגדר
- שלב 5 – דוגמה לגיבוי ושחזור של כל האשכול
- שלב 6 – גיבויים מתוזמנים
- שלב 7 – מדיניות שמירת גיבויים
- מסקנות
דרישות מקדימות
כדי להשלים את המדריך הזה, יש לך צורך בדברים הבאים:
- A DO Spaces Bucket and access keys. Save the access and secret keys in a safe place for later use.
- A Git client to clone the Starter Kit repository.
- Helm, לניהול שחרורים ושדרוגים של TrilioVault Operator.
- Doctl לאינטראקציה עם API של DigitalOcean.
- Kubectl לאינטראקציה עם Kubernetes.
לקונפיגורציה תקינה ולגיבוי של ה-PVCs שלך, יש צורך להגדיר את DOKS כך שיתמוך בממשק אחסון היכול לקונטיינרים (CSI). באופן ברירת מחדל, הוא מגיע עם הדרייבר כבר מותקן ומוגדר. ניתן לבדוק באמצעות הפקודה הבאה:
הפלט צריך להיראות דומה לקטע הבא. שים לב שה-provisioner הוא dobs.csi.digitalocean.com.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 10d
ההתקנה של TrilioVault דורשת גם קבצ CRD (מדריך למשאבים מותאמים אישית) volumeSnapshot עבור התקנה מוצלחת. ניתן לבדוק באמצעות הפקודה הבאה:
הפלט צריך להיראות דומה לקטע הבא. אם CRD VolumeSnapshot לא מותקן, נא להפנות ל- התקנת CRD VolumeSnapshot.
volumesnapshotclasses.snapshot.storage.k8s.io 2022-02-01T06:01:14Z
volumesnapshotcontents.snapshot.storage.k8s.io 2022-02-01T06:01:14Z
volumesnapshots.snapshot.storage.k8s.io 2022-02-01T06:01:15Z
כמו כן, ודא כי ה-CRD תומך בשני גרסאות API, v1beta1 ו-v1. ניתן להפעיל את הפקודה הבאה כדי לבדוק את גרסת ה-API:
בסופו של קובץ ה-CRD YAML, יש לראות רשימת storedVersions
, המכילה את הערכים v1beta1 ו-v1 (אם לא מותקן, נא להפנות ל- התקנת CRD VolumeSnapshot):
...
- lastTransitionTime: "2022-01-20T07:58:06Z"
message: approved in https://github.com/kubernetes-csi/external-snapshotter/pull/419
reason: ApprovedAnnotation
status: "True"
type: KubernetesAPIApprovalPolicyConformant
storedVersions:
- v1beta1
- v1
שלב 1 – התקנת TrilioVault עבור Kubernetes
בשלב זה, תלמד כיצד לפרוס את TrilioVault עבור DOKS ולנהל התקנות של TVK דרך Helm. נתוני גיבוי יאוחסנו בתוף DO Spaces שנוצר מראש בחלק הדרישות המקדימות.
יישום TrilioVault ניתן להתקין בכמה דרכים:
- דרך TrilioVault Operator. אתה מגדיר CRD של
TrilioVaultManager
המורה לאופרטורTrilioVault
כיצד לטפל בהתקנה, בשלבי התצורה לאחר ההתקנה, ובשדרוגים עתידיים של רכיבי היישום של Trilio. - דרך תרשים triliovault-operator המנוהל באופן מלא על ידי Helm, (מוסכם במדריך זה).
התקנת TrilioVault באמצעות Helm
מדריך הקיט התחיל משתמש בסוג ההתקנה הקבוצתית עבור היישום TVK (ערך Helm של applicationScope
מוגדר ל-"Cluster"). כל הדוגמאות במדריך זה משתמשות בסוג ההתקנה הזה כדי שהן יעבדו באופן תקין.
ראשית, שכפל את תיק הקוד של Starter Kit Git ושנה את התיקייה להעתקה מקומית שלך:
בשלב הבא, הוסף את המאגר של Helm של TrilioVault, ורשום את התרשימים הזמינים:
הפלט דומה להבא:
NAME CHART VERSION APP VERSION DESCRIPTION
triliovault-operator/k8s-triliovault-operator 2.9.2 2.9.2 K8s-TrilioVault-Operator is an operator designe...
התרשים המעניין הוא triliovault-operator/k8s-triliovault-operator
, שיתקין את TrilioVault עבור Kubernetes על האשכול יחד עם TrilioVault-Manager. ניתן להריץ helm show values triliovault-operator/k8s-triliovault-operator
ולייצא לקובץ כדי לראות את כל האפשרויות הזמינות.
לאחר מכן, פתחו ובדקו את קובץ הערכים של TrilioVault Helm המסופק במאגר ה- Starter בעזרת עורך לבחירתכם (מומלץ תמיכת YAML lint).
לבסוף, התקינו את TrilioVault עבור Kubernetes באמצעות Helm:
–create-namespace \
הפקודה מעל מתקינה את TrilioVault Operator ואת משאב המנהל של TriloVault (TVM) באמצעות הפרמטרים שסופקו ב- triliovault-values.yaml
. גרסת TVK מנוהלת כעת על ידי השדה tag
בקובץ 05-setup-backup-restore/assets/manifests/triliovault-values.yaml
, כך שהפקודת helm תמיד תכיל את הגרסה העדכנית ביותר של TVK.
- ניתן לעדכן את השדות הבאים ב-
values.yaml
: installTVK.applicationScope
עבור תיקון ה-TVK המותקן, לדוגמהCluster
אוNamespaced
installTVK.ingressConfig.host
עבור שם מארח של ממשק המשתמש של TVK, לדוגמהtvk-doks.com
installTVK.ComponentConfiguration.ingressController.service.type
עבור סוג השירות לגישה לממשק המשתמש של TVK, לדוגמה NodePort
או LoadBalancer
עכשיו, בדקו את התקנת ה-TVK שלכם:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
triliovault-manager-tvk tvk 1 2022-06-08 08:30:08.490304959 +0000 UTC deployed k8s-triliovault-2.9.2 2.9.2
triliovault-operator tvk 1 2022-06-08 11:32:55.755395 +0300 EEST deployed k8s-triliovault-operator-2.9.2 2.9.2
הפלט דומה לקטע הבא (עמודת STATUS
צריכה להציג deployed
):
הבא, וודא ש-TrilioVault פועלת ותקינה:
NAME READY UP-TO-DATE AVAILABLE AGE
k8s-triliovault-admission-webhook 1/1 1 1 83s
k8s-triliovault-control-plane 1/1 1 1 83s
k8s-triliovault-exporter 1/1 1 1 83s
k8s-triliovault-ingress-nginx-controller 1/1 1 1 83s
k8s-triliovault-web 1/1 1 1 83s
k8s-triliovault-web-backend 1/1 1 1 83s
triliovault-operator-k8s-triliovault-operator 1/1 1 1 4m22s
הפלט דומה לקטע הבא. כל קפיצות ההתקנה חייבות להיות במצב Ready
.
אם הפלט נראה כך, התקנת TVK בוצעה בהצלחה. באשף הבא, תלמד איך לבדוק את סוג הרישיון ותוקפו, וכן תינן איך לחדש אותו.
- ברירת המחדל, בעת התקנת TVK דרך Helm, לא מותקן רישיון לניסיון חינם באופן אוטומטי. בכל זמן ניתן לעבור לאתר של Trilio וליצור רישיון חדש לקבוצת ה-Cluster שלך שמתאים לך (לדוג' ניתן לבחור את סוג הרישיון הבסיסי שמאפשר לך להריץ את TrilioVault ללא הגבלה אם קיבולת ה-Cluster שלך אינה עוברת את 10 קפיצות). רישיון ניסיון חינם מאפשר לך להריץ את TVK לחודש אחד על קפיצות ה-Cluster הבלתי מוגבלות.
- TrilioVault היא בחינם עבור קפיצות ה-Kubernetes עם עד 100000 קפיצות עבור משתמשי DigitalOcean. הם יכולים לעקוב אחר השלבים הבאים כדי ליצור רישיון מיוחד זמין רק ללקוחות DO.
דוגמאות ערכת ההתחלה תלויות בסוג הרישיון של ה-Cluster כדי לפעול כהלכה.
יצירת ובדיקת רישויי אפליקציה TVK
הריץ את הפקודה הבאה כדי ליצור רישיון חדש עבור האשכול שלך (הוא ניהולי דרך CRD הרישיון):
הפקודה לעיל תיצור משימה job.batch/tvk-license-digitalocean
שתפעיל כמשנה tvk-license-digitalocean-828rx
כדי למשוך את הרישיון משרת הרישוי של Trilio ולהתקין אותו על האשכול DOKS. לאחר השלמת המשימה, היא תימחק בעוד 60 שניות.
אם אתה מוריד רישיון חינמי מאתר האינטרנט של Trilio, החל אותו באמצעות הפקודה הבאה:
אנא הרץ את הפקודה הבאה כדי לראות האם הרישיון מותקן ובמצב Active
על האשכול שלך.
NAME STATUS MESSAGE CURRENT NODE COUNT GRACE PERIOD END TIME EDITION CAPACITY EXPIRATION TIME MAX NODES
test-license-1 Active Cluster License Activated successfully. 1 FreeTrial 100000 2023-02-25T00:00:00Z 1
הפלט נראה דומה לזה שלמטה. שים לב לשדה STATUS
שצריך להיות Active
, כמו גם לסוג הרישיון בעמודת EDITION
ולEXPIRATION TIME
.
הרישיון ניהולי דרך CRD מיוחד בשם אובייקט License
. אתה יכול לבדוק אותו על ידי הרצת הפקודה הבאה:
הפלט נראה דומה לזה שלמטה. שים לב לשדה Message
ולשדה Capacity
, כמו גם לEdition
.
הפלט לעיל יספק לך גם מתי הרישיון מתכוון לפוג בשדה תאריך פקיעה
, והטווח
(במקרה זה, מבוסס על קבוצה). באפשרותך לבחור בסוג רישיון לרשת כולה או במבוסס רישיון לפי אמצעי.
לחידוש הרישיון, עליך לבקש אחד חדש מאתר האינטרנט של Trilio על ידי ניווט אל דף הרישויות כדי להחליף את הישן. לאחר מילוי הטופס, אתה אמור לקבל את מפתח הרישיון YAML, אשר ניתן להחיל על הקבוצה שלך באמצעות kubectl
. הפקודות הבאות מניחות כי TVK מותקן במרחב השמור tvk
כברירת מחדל (יש להחליף את המילים המסומנות <>
בהתאם, כאשר נדרש):
# קבלת מידע על רישיון מסוים מתוך מרחב השמור `tvk`
בשלב הבא, תלמד כיצד להגדיר את מאגר האחסון האחורי עבור TrilioVault לאחסון גיבויים, שנקרא "יעד".
שלב 2 – יצירת יעד TrilioVault לאחסון גיבויים
A typical Target
definition looks like:
TrilioVault צריך לדעת לאן לאחסן את הגיבויים שלך תחילה. TrilioVault מתייחס לאחסון האחורי באמצעות מונח ה-target
, והוא ניהל דרך CRD מיוחדת בשם Target
. הסוגים הבאים של יעדים נתמכים: S3
ו- NFS
. עבור DigitalOcean ולמטרת ערכת ההתחלה, יש משמעות לסמוך על סוג האחסון S3
מכיוון שהוא זול וניתן להתרחבות. כדי להרוויח מרמת הגנה משופרת, ניתן ליצור מספר רב של סוגי יעדים (לשני ה-S3 ו-NFS), כך שהנתונים שלך נשמרים במקומות מרובים, מה שמבטיח את האטימות של הגיבויים.
- בהגדרה זו,
spec.type
: סוג היעד לאחסון הגיבויים (S3 הוא סטור עצם).spec.vendor
: ספק האחסון מהצד השלישי שמארח את היעד (עבור תחסון DigitalOcean Spaces עליך להשתמש ב-Other
במקום ב-AWS
).spec.enableBrowsing
: אפשר גלישה עבור היעד.spec.objectStoreCredentials
: מגדיר נתוני זיהוי נדרשים (דרךcredentialSecret
) כדי לגשת אל סטור ה-S3
, ופרמטרים אחרים כגון אזור הסל ושם הסל.
spec.thresholdCapacity
: קיבולת אישור מרבית לאחסון נתוני גיבויים.
# הערך חייב להיות מוצפן בבסיס 64
שים לב כי שם הסוד הוא trilio-s3-target
והוא מתייחס לשדה spec.objectStoreCredentials.credentialSecret
של ה-CRD של היעד שנסבר למעלה. ה-secret
יכול להיות באותו namespace
שבו הותקן TrilioVault (ברירת המחדל היא tvk), או בכל ניימספייס אחר שתבחר. רק וודא שאתה מתייחס לניימספייס בצורה נכונה. מצד שני, וודא שאתה מגן על הניימספייס שבו אתה אוחסן סודות TrilioVault דרך RBAC מסיבות אבטחה.
שלבים ליצירת יעד עבור TrilioVault:
ראשית, שנה את התיקייה שבה התיק של Starter Kit של Git נוצר על המחשב המקומי שלך:
לאחר מכן, צור את ה-Secret של Kubernetes שמכיל פרטי האישור של הדלי שלך ב-S3 (אנא החלף את המילות מצופה <>
בהתאם):
–from-literal=accessKey="<המפתח_הגישה_שלך_ל-DO_SPACES_כאן>" \
–from-literal=secretKey="<המפתח_הסודי_שלך_ל-DO_SPACES_כאן>"
אז, פתחו ובדקו את קובץ התיאור של היעד המסופק במאגר הקוד המקורי של הערכת ההתחלה באמצעות עורך שתבחרו (מומלץ עם תמיכה ב־YAML lint).
עכשיו, אנא החליפו את המציינים <>
בהתאם עבור הסל שלכם ב־DO Spaces Trilio, כמו bucketName
, region
, url
ו־credentialSecret
.
לבסוף, שמרו את קובץ התיאור וצרו את אובייקט היעד באמצעות kubectl
:
NAME TYPE THRESHOLD CAPACITY VENDOR STATUS BROWSING ENABLED
trilio-s3-target ObjectStore 10Gi Other Available
הבא, TrilioVault תיצור עבודה של עובד בשם trilio-s3-target-validator
אחראית לאימות הסל שלך ב־S3 (כמו זמינות, הרשאות, וכו'). אם העבודה מסתיימת בהצלחה, הסל נחשב כבריא או זמין ומשאב העבודה trilio-s3-target-validator
נמחק אחר כך. אם משהו קורה, עבודת האימות של סל היעד ב־S3 נשארת תקפה כדי שתוכלו לבדוק את הלוגים ולמצוא את הבעיה האפשרית.
עכשיו, אנא המשיכו ובדקו האם משאב היעד שנוצר קודם הוא בריא:
# הפלט נראה דומה לזה:
...
INFO:root:2021-11-24 09:06:50.595166: waiting for mount operation to complete.
INFO:root:2021-11-24 09:06:52.595772: waiting for mount operation to complete.
ERROR:root:2021-11-24 09:06:54.598541: timeout exceeded, not able to mount within time.
ERROR:root:/triliodata is not a mountpoint. We can't proceed further.
Traceback (most recent call last):
File "/opt/tvk/datastore-attacher/mount_utility/mount_by_target_crd/mount_datastores.py", line 56, in main
utilities.mount_datastore(metadata, datastore.get(constants.DATASTORE_TYPE), base_path)
File "/opt/tvk/datastore-attacher/mount_utility/utilities.py", line 377, in mount_datastore
mount_s3_datastore(metadata_list, base_path)
File "/opt/tvk/datastore-attacher/mount_utility/utilities.py", line 306, in mount_s3_datastore
wait_until_mount(base_path)
File "/opt/tvk/datastore-attacher/mount_utility/utilities.py", line 328, in wait_until_mount
base_path))
Exception: /triliodata is not a mountpoint. We can't proceed further.
...
#trilio-s3-target-validator-tio99a-6lz4q 1/1 פועל 0 104 שניות
# עכשיו, קבל נתוני יומנים
הפלט יהיה זה החריג:
לאחר מכן, תגלה את לוח הבקרה של TVK שהוא תוספת שימושית שתעזור לך לנהל פעולות גיבוי ושחזור בקלות, בין השאר.
שלב 3 – להכיר את לוח הבקרה לניהול של TVK
בעוד שניתן לנהל פעולות גיבוי ושחזור מקו־פקודה לגמרי באמצעות kubectl
ו־CRDs, TVK מספקת לוח בקרה לניהול רשתי לביצוע אותן פעולות באמצעות ממשק המשתמש הגרפי. לוח הבקרה מפשט משימות נפוצות באמצעות פעולות לחיצה וספק תצוגה ובדיקה טובה יותר של עצמות הקבוצה של TVK, כמו גם יצירת תוכניות לשחזור מקרים חירום (DRPs).
ההתקנה המבוססת על Helm שנעשית בשלב 1 – התקנת TrilioVault עבור Kubernetes כיסתה כבר את הרכיבים הנדרשים ללוח הבקרה לניהול הרשתי.
קבלת גישה לממשק הניהול ברשת של TVK
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
k8s-triliovault-admission-webhook ClusterIP 10.245.202.17 <none> 443/TCP 13m
k8s-triliovault-ingress-nginx-controller NodePort 10.245.192.140 <none> 80:32448/TCP,443:32588/TCP 13m
k8s-triliovault-ingress-nginx-controller-admission ClusterIP 10.3.20.89 <none> 443/TCP 13m
k8s-triliovault-web ClusterIP 10.245.214.13 <none> 80/TCP 13m
k8s-triliovault-web-backend ClusterIP 10.245.10.221 <none> 80/TCP 13m
triliovault-operator-k8s-triliovault-operator-webhook-service ClusterIP 10.245.186.59 <none> 443/TCP 16m
כדי להיכנס לממשק ולחקור את התכונות שהוא מציע, עליך להפוך את שירות השליטת הכניסה של TVK לנגיש באופן פומבי.
הפלט דומה לדוגמא שלמטה. חפש את השורה k8s-triliovault-ingress-nginx-controller
, ושים לב שהוא מאזין לפתחה 80
בעמודת PORT(S)
.
127.0.0.1 tvk-doks.com
TVK משתמשת בבקר Ingress של Nginx כדי להפנות תעבורה אל שירותי ממשק הניהול ברשת. ההפנייה היא על פי המארח, ושם המארח הוא tvk-doks.com
כפי שהוגדר בקובץ ערכי ה-Helm מקובץ ההתחלה:
# השם המארח שיש להשתמש בו בעת גישה לממשק האינגרס של TVK דרך הבקר nginx ingress
לבסוף, ייצא את קובץ ה-kubeconfig
עבור קבוצת ה-DOKS שלך. צעד זה נדרש כדי שממשק האינטרנט יוכל לאמת אותך.
# רשימת האשכולות הזמינים
# שמירת הגדרות האשכול ל־YAML
אם יש לך רק אשכול אחד, אז הפעל את הפקודה הבאה:
לאחר הביצוע של השלבים הללו, תוכל לגשת לממשק המשתמש בדפדפן האינטרנט שלך על ידי ניווט אל: http://tvk-doks.com:8080. כאשר יידרש לך לקובץ kubeconfig
, בחר את הקובץ שיצרת בפקודה האחרונה מלמעלה.
נא שמור על קובץ ה־kubeconfig
שנוצר מאובטח מאחר והוא מכיל מידע רגיש.
- חקירת ממשק המשתמש בממשק ה־TVK Web Console
- עיין בכל קטע מהשמאל, כמו:
- ניהול אשכול: מציג את רשימת האשכולות הראשיים והאחרים שיש להם מופעי TVK, הוספה לאשכול הראשי של OVH באמצעות תכונת הניהול של מספר אשכולים.
- גיבוי ושחזור: זוהי לוח מחוונים הראשי המציג לך סקירה כללית של כל האשכול, כגון אחזור שמות, אפליקציות, רשימת תוכניות גיבוי, מטרות, תפריטים, מדיניות, וכו '
ניטור: ישנם שני אפשרויות- ניטור TrilioVault ו- ניטור Velero אם למשתמש הוגדר Velero על האשכול שלו ב- OVH.
אסון טבע: מאפשר לך לנהל ולבצע פעולות שחזור מקרי אסון.
אסון טבע: מאפשר לך לנהל ולבצע פעולות שחזור מקרי אסון.
תוכל גם לראות את המטרה S3 שנוצרה מקודם, על ידי ניווט אל גיבוי ושחזור -> מטרות -> <שמות מרחב השמות> tvk מהתפריט הנפתח בחלק העליון.
להמשך, תוכל לעיין במטרה ולרשום את הגיבויים הזמינים על ידי לחיצה על הכפתור פעולות מצד ימין, ואז לבחור באפשרות הפעל דפדפן מתוך התפריט הקופץ. כדי שזה יעבוד, על המטרה להגדיר את הדגל enableBrowsing
לערך true
.
למידע נוסף ותכונות זמינות, יש לעיין בתיעוד הרשמי של ממשק מנהל הרשת הוובי של TVK.
הבא, תלמד כיצד לבצע פעולות גיבוי ושחזור עבור מקרים מסוימים.
שלב 4 – דוגמה לגיבוי ושחזור עם שם מרחב
בשלב זה, תלמד כיצד ליצור גיבוי חד-פעמי עבור מרחב שלם (ambassador
במקרה זה) מהאשכול שלך ב-DOKS ולשחזר אותו לאחר מכן, ולוודא שכל המשאבים יושחזרו. ל-TVK יש יכולת שמאפשרת לך לבצע גיבוים ברמה גבוהה יותר מאשר רק מרחבים.
- יצירת גיבוי של משחרר הקסדת השגריר
- כדי לבצע גיבוים עבור אפליקציה יחידה ברמת המרחב (או שחרור Helm), נדרש BackupPlan ואז Backup CRD. BackupPlan הוא הגדרה של 'מה', 'איפה', 'ל', ו־'כיצד' של תהליך הגיבוי, אך הוא אינו מבצע את הגיבוי הממשי. קריאת ה-Backup CRD אחראית להפעלת תהליך הגיבוי הממשי, כפי שמוגדר בפרטי ה־BackupPlan.
- בתצורה זו,
A typical Backup CRD looks like below:
spec.backupConfig.target.name
: אומר ל-TVK איזה שם יעד להשתמש בו לאחסון הגיבויים.
spec.backupConfig.target.namespace
: אומר ל-TVK באיזה מרחב היעד נוצר היעד.spec.backupComponents
: מגדיר רשימת משאבים לגיבוי.
בהגדרה זו,
spec.type
: מציין את סוג הגיבוי.
spec.backupPlan
: מציין את התוכנית לגיבוי שבה הגיבוי צריך להשתמש.
שלבים להתחלת גיבוי חד פעמי של Ambassador Helm release:
ראשית, ודא כי ה-Ambassador Edge Stack מופעל באשכול שלך על ידי ביצוע השלבים מהמדריך של Ambassador Ingress.
באמצע, שנה את התיקייה למיקום שבו התיקייה של Starter Kit Git נקלטה במחשב המקומי שלך:
לאחר מכן, פתח ובדוק את קבצי המניפסט של Ambassador BackupPlan ו-Backup שסופקו בתיקיית Starter Kit באמצעות עורך שאתה מעדיף (למשל, עם תמיכה ב־YAML lint).
NAME TARGET ... STATUS
ambassador-helm-release-backup-plan trilio-s3-target ... Available
לבסוף, צור את המשאבים BackupPlan ו-Backup באמצעות kubectl
.
כעת, בדוק את מצב BackupPlan (מכוון ל-Helm release של ambassador
) באמצעות kubectl
:
NAME BACKUPPLAN BACKUP TYPE STATUS ...
ambassador-helm-release-full-backup ambassador-helm-release-backup-plan Full InProgress ...
הפלט דומה להבא. שים לב לערך בעמודה STATUS
שצריך להיות מוגדר ל־Available
.
לבסוף, בדוק את מצב אובייקט הגיבוי באמצעות kubectl
:
NAME BACKUPPLAN BACKUP TYPE STATUS ... PERCENTAGE
ambassador-helm-release-full-backup ambassador-helm-release-backup-plan Full Available ... 100
הפלט דומה להבא. שים לב לערך בעמודה STATUS
שצריך להיות מוגדר ל־InProgress
, וגם ל־BACKUP TYPE
שצריך להיות מוגדר ל־Full
.
לאחר שכל רכיבי השחרור של השגריר Helm מסתיימים להעלאה אל מטרת S3
, עליך לקבל את התוצאות הבאות:
2021-11-25 07:04 28 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/
2021-11-25 07:04 28 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/
2021-11-25 07:04 311 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/backup-namespace.json.manifest.00000004
2021-11-25 07:04 302 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/backup.json.manifest.00000004
2021-11-25 07:04 305 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/backupplan.json.manifest.00000004
2021-11-25 07:04 28 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/custom/
2021-11-25 07:04 28 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/custom/metadata-snapshot/
2021-11-25 07:04 330 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/custom/metadata-snapshot/metadata.json.manifest.00000002
...
# הפלט נראה דומה לזה (שים לב שהמצב משתנה ל־`Available`, וה־`PERCENTAGE` הוא `100`)
אם הפלט נראה כך, ייבחר השחזור של השגריר ambassador
בהצלחה. תוכל להמשיך ולראות איך TrilioVault אוחסן את המטא נתוני Kubernetes על ידי רשימת תוכן הדלפק TrilioVault S3. לדוגמה, תוכל להשתמש ב־s3cmd:
ambassador-helm-release-full-backup-metamover-mg9gl0--1-2d6wx 1/1 Running 0 4m32s
הפלט דומה לדוגמה הבאה. שים לב שהרשימה מכילה את המנייפסטים בפורמט JSON ואת UIDs, המייצגים אובייקטים של Kubernetes.
במקרה שהגיבוי נכשל להיות זמין, תוכל לבדוק את הלוגים מה־metamover
פוד כדי למצוא את הבעיה:
...
{"component":"meta-mover","file":"pkg/metamover/snapshot/parser/commons.go:1366","func":"github.com/trilioData/k8s-triliovault/pkg/metamover/snapshot/parser.(*Component).ParseForDataComponents","level":"info","msg":"Parsing data components of resource rbac.authorization.k8s.io/v1, Kind=ClusterRoleBinding: [edge-stack]","time":"2022-06-14T06:20:56Z"}
{"component":"meta-mover","file":"pkg/metamover/snapshot/parser/commons.go:1366","func":"github.com/trilioData/k8s-triliovault/pkg/metamover/snapshot/parser.(*Component).ParseForDataComponents","level":"info","msg":"Parsing data components of resource rbac.authorization.k8s.io/v1, Kind=RoleBinding: [edge-stack-agent-config]","time":"2022-06-14T06:20:56Z"}
...
הפלט דומה ל:
עכשיו, קבל נתוני יומני הלוג:
הפלט דומה לדוגמה הבאה.
לבסוף, תוכל לבדוק אם הגיבוי זמין בקונסולת האינטרנט גם על ידי ניווט אל Resource Management -> Ambassador -> Backup Plans. שים לב שהוא נמצא במצב Available
ושהשחרור של השגריר Helm נשמר בתת־תצוגת ה־Component Details.
מחיקת שחרור השגריר Helm והמשאבים
עכשיו, המשך והדמה חריגה על ידי מחיקה מכוונת של השחרור של Helm של ה- ambassador
:
לְאַחַר מכן, בדוק שמשאבי הכנסה נמחקו (הרשימה צריכה להיות ריקה):
- לבסוף, ודא שנקודת הסיום של שירותי ה-
echo
ו-quote
החזרה הואDOWN
. אנא הפנה אל יצירת השירותים האחוריים של מגדל השטח של השגרת התקנה לגבי היישומים האחוריים המשמשים במדריך ההתחלה. ניתן להשתמש ב-curl
כדי לבדוק (או ניתן להשתמש בדפדפן האינטרנט שלך): - שחזור גיבוי שחרור ה- Helm של השגרת התחלה
- חשוב
אם אתה משחזר את אותו שטח שמקורו, וודא שרכיבי היישום המקוריים נמחקו. במיוחד ה- PVC של היישום נמחק.
אם אתה משחזר לקבוצה אחרת (תרחיש ההעברה), ודא ש-TrilioVault עבור Kubernetes פועלת בכנסת/הקבוצה המרוחקת גם. כדי לשחזר לקבוצה חדשה (שבה לא קיים אובייקט גיבוי CR), source.type
חייב להיות מוגדר ל־location
. אנא הפנה ל־מידע על שחזור הגדרת משאב מותאם אישית כדי לראות דוגמה ל־שחזור לפי מיקום.
- כאשר אתה מוחק את כנסת
ambassador
, משאב מאזני העומס המשוייך לשירות השליח יימחק גם. לכן, כאשר אתה משחזר את השירותambassador
, ה־LB יופצע מחדש על ידי DigitalOcean. הבעיה היא שתקבל כתובת IP חדשה עבור ה־LB שלך, כך שתצטרך להתאים אתרשומות ה־A
כדי לקבל תעבורת אל הדומיינים שלך שמארחים על הקבוצה. - כדי לשחזר גיבוי ספציפי, עליך ליצור כותרת CRD. כותרת שחזור טיפולית נראית כמו בהמשך:
- בהגדרה זו,
spec.source.type
: מציין איזה סוג גיבוי לשחזר ממנו.
spec.source.backup
: מכיל התייחסות לאובייקט הגיבוי לשחזר ממנו.
spec.skipIfAlreadyExists
: מציין האם לדלג על השחזור של משאב אם הוא כבר קיים בכנסת השוחזרת.
משיב מאפשר לך לשחזר את הגיבוי האחרון של יישום. משמש כדי לשחזר מרחבי שמות או הוצאה לאור של Helm, המוגנים על ידי Backup CRD. ה-Backup CRD מזוהה לפי שמו ambassador-helm-release-full-backup
.
ראשית, בדוק את דוגמת ה-CRD של Restore מתוך תיק התחלה של גיט:
NAME STATUS DATA SIZE START TIME END TIME PERCENTAGE COMPLETED DURATION
ambassador-helm-release-restore Completed 0 2021-11-25T15:06:52Z 2021-11-25T15:07:35Z 100 43.524191306s
לאחר מכן, צור משאב Restore באמצעות kubectl
:
לבסוף, בדוק את מצב אובייקט השחזור:
הפלט דומה להבא. שים לב לעמודת STATUS
המוגדרת ל-Completed
, כמו גם לעמודת PERCENTAGE COMPLETED
המוגדרת ל-100
.
אם הפלט נראה כך, אז תהליך השחזור של הוצאת לאור של ambassador
Helm הושלם בהצלחה.
NAME READY STATUS RESTARTS AGE
pod/ambassador-5bdc64f9f6-42wzr 1/1 Running 0 9m58s
pod/ambassador-5bdc64f9f6-nrkzd 1/1 Running 0 9m58s
pod/ambassador-agent-bcdd8ccc8-ktmcv 1/1 Running 0 9m58s
pod/ambassador-redis-64b7c668b9-69drs 1/1 Running 0 9m58s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ambassador LoadBalancer 10.245.173.90 157.245.23.93 80:30304/TCP,443:30577/TCP 9m59s
service/ambassador-admin ClusterIP 10.245.217.211 <none> 8877/TCP,8005/TCP 9m59s
service/ambassador-redis ClusterIP 10.245.77.142 <none> 6379/TCP 9m59s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ambassador 2/2 2 2 9m59s
deployment.apps/ambassador-agent 1/1 1 1 9m59s
deployment.apps/ambassador-redis 1/1 1 1 9m59s
NAME DESIRED CURRENT READY AGE
replicaset.apps/ambassador-5bdc64f9f6 2 2 2 9m59s
replicaset.apps/ambassador-agent-bcdd8ccc8 1 1 1 9m59s
replicaset.apps/ambassador-redis-64b7c668b9 1 1 1 9m59s
אימות תקינות היישומים לאחר השחזור
בדוק כי כל משאבי רכיבי מרחבי השמות נמצאים במקום ורצים:
NAME HOSTNAME STATE PHASE COMPLETED PHASE PENDING AGE
echo-host echo.starter-kit.online Ready 11m
quote-host quote.starter-kit.online Ready 11m
הפלט דומה ל:
קבל את מארחי השגריר:
NAME SOURCE HOST SOURCE PREFIX DEST SERVICE STATE REASON
ambassador-devportal /documentation/ 127.0.0.1:8500
ambassador-devportal-api /openapi/ 127.0.0.1:8500
ambassador-devportal-assets /documentation/(assets|styles)/(.*)(.css) 127.0.0.1:8500
ambassador-devportal-demo /docs/ 127.0.0.1:8500
echo-backend echo.starter-kit.online /echo/ echo.backend
quote-backend quote.starter-kit.online /quote/ quote.backend
הפלט דומה להבא. על העמודה STATE
להיות Ready
, כמו גם העמודה HOSTNAME
לצבור את שם המארח המובלט במלואו.
קבל עמודות של השגריר:
הפלט דומה למה שלמטה. שים לב ל- echo-backend
שממופה למארח echo.starter-kit.online
ולקידומת המקור /echo/
, כמו גם ל- quote-backend
.
עכשיו, עליך לעדכן את רשומות ה- DNS שלך A
, מכיוון שמשאב המאזין של DigitalOcean נוצר מחדש, ויש לו IP חיצוני חדש.
לבסוף, בדוק אם היישומים בצד השרת מגיבים גם לבקשות HTTP. נא הפנה אל יצירת שירותי צד השרת של Ambassador Edge Stack לגבי היישומים בצד השרת המשמשים בהדרכת Starter Kit.
השלב הבא עוסק בגיבוי ושחזור של כל האשכול.
שלב 5 – דוגמת גיבוי ושחזור של כל האשכול
A typical ClusterBackupPlan
manifest targeting multiple namespaces looks like this:
בשלב זה, תדמה תרחיש של התאוששות מאסון. כל האשכול של DOKS יימחק ואז היישומים החשובים ישוחזרו מגיבוי קודם.
הרעיון העיקרי כאן הוא לבצע גיבוי של אשכול DOKS על ידי כלול את כל המרחבי שמות המרכזיים המכילים את היישומים וההגדרות החיוניים שלך.
שים לב ש- kube-system
(או מרחבי שמות אחרים הקשורים ל- DOKS) אינו כלול ברשימה. לרוב, אלה אינם נדרשים, אלא אם יש מקרה מיוחד הדורש הגדרות מסוימות להישמר ברמה זו.
ראשית, שנה את התיקייה שבה נקלון תיק ה-Git של Starter Kit על המחשב המקומי שלך:
לאחר מכן, פתח ובדוק את קבצי המפרט ClusterBackupPlan
ו- ClusterBackup
שסופקו במאגר Starter Kit באמצעות עורך שבחירתך (רצוי עם תמיכת YAML lint).
NAME TARGET ... STATUS
starter-kit-cluster-backup-plan trilio-s3-target ... Available
לבסוף, צור את המשאבים ClusterBackupPlan
ו- ClusterBackup
באמצעות kubectl
:
כעת, בדוק את מצב המערך ClusterBackupPlan
באמצעות kubectl
:
NAME BACKUPPLAN BACKUP TYPE STATUS ... PERCENTAGE COMPLETE
starter-kit-cluster-backup starter-kit-cluster-backup-plan Full Available ... 100
הפלט דומה לדוגמא שלמטה. שים לב לערך העמודה STATUS
שצריך להיות מוגדר ל- Available
.
הבדוק את מצב המערך ClusterBackup
באמצעות kubectl
:
הפלט דומה לדוגמא שלמטה. שים לב לערך העמודה STATUS
שצריך להיות מוגדר ל- Available
, כמו גם לערך PERCENTAGE COMPLETE
שצריך להיות מוגדר ל- 100
.
אם הפלט דומה לדוגמא לעיל, אז כל מרחבי השמות של היישומים החשובים שלך גובו בהצלחה.
ייתכן שיקח זמן עד שהגיבוי המלא של האשכול יסתיים, תלוי בכמה מרחבי שמות ומשאבים מקושרים כלולים בתהליך.
אתה יכול גם לפתוח את לוח המחוונים הראשי של עקבות האינטרנט ולבדוק את לוח המחוונים הרב-מרחבי (שים לב שכל המרחבים החשובים שנגבו מודגשים בצבע ירוק, במבנה של צלבי דבש):
נקודה חשובה לשים לב אליה היא שכאשר אתה משמיד את אשף ה-DOKS ואז משחזר אותו, משמיד הערכת מאזן עומס חדש עם כתובת IP חיצונית חדשה גם כאשר TVK משחזר את הבקר שלך לקבלת כניסה. לכן, יש לוודא שתעדכן את רשומות ה-DNS שלך ב-DigitalOcean רשומות A
בהתאם.
עכשיו, מחק את כל אשף ה-DOKS (ודא שתחליף את מילות המפתח <>
בהתאם):
לאחר מכן, בנה מחדש את האשף כפי שתואר ב-הגדרת קוברנטיס של DigitalOcean.
כדי לבצע את פעולת השחזור, יש להתקין את יישום ה-TVK כפי שתואר ב-שלב 1 – מתקין TrilioVault עבור Kubernetes. חשוב להשתמש ב-אותו גרסת תרשים Helm.
כאשר ההתקנה מסתיימת בהצלחה, הגדר את היעד של TVK כפי שמתואר ב־שלב 2 – יצירת יעד TrilioVault לאחסון גיבויים והפנה אותו לאותו S3 bucket
בו נמצאים נתוני הגיבוי שלך. ודא גם כי ניווט ביעד
מופעל.
בשלב הבא, אמת והפעל רישיון חדש כפי שמתואר בסעיף רישיון אפליקציית TrilioVault.
כדי לקבל גישה לממשק משתמש של קונסולת האינטרנט, יש להתייעץ בסעיף קבלת גישה לממשק הניהול באינטרנט של TVK.
לאחר מכן, נווט אל ניהול משאבים -> מרחב שמות TVK -> יעדים (במידה ומדובר בערכת ההתחלה, המרחב שמות TVK הוא tvk
):
להמשך, נווט ביעד ורשום את הגיבויים הזמינים על ידי לחיצה על הלחצן פעולות. לאחר מכן, בחר באפשרות הפעל דפדפן מתוך תפריט ההקפצה. על מנת שזה יעבוד, יש לוודא כי היעד מכיל את הקובץ הגלגולי enableBrowsing
שמוגדר ל־true
.
כעת, לחץ על הפריט starter-kit-cluster-backup-plan מתוך הרשימה, ואז לחץ והרחב על הפריט starter-kit-cluster-backup מתוך החלון הנכון:
כדי להתחיל בתהליך שחזור, לחץ על הלחצן שחזר.
בדיקת מצב יישומי האשף של אשף DOKS
ראשית, ודאו את כל משאבי Kubernetes של האשף.
לאחר מכן, ודאו שרשומות ה-DNS A שלכם עודכנו כך שיצביעו לכתובת ה-IP החיצונית החדשה של המאזן הטעינה שלכם.
לבסוף, היישומים האחוריים צריכים להגיב לבקשות HTTP גם כן. אנא הפנו ל-יצירת שירותי גב ה- Ambassador Edge Stack לגבי היישומים האחוריים שמשמשים במדריך התחלתי של הסטרטר.
בשלב הבא, תלמדו כיצד לבצע גיבויים מתוזמנים (או אוטומטיים) עבור יישומי האשף שלכם ב-DOKS.
גיבויים אוטומטיים בהתבסס על לוח זמנים הוא תכונה מאוד שימושית. היא מאפשרת לך להשיב את המערכת למצב עבודה קודם אם משהו הולך לא נכון. סעיף זה מספק דוגמה של גיבוי אוטומטי על לוח זמנים של 5 דקות (נמלטה במרחב השמות kube-system
).
ראשית, עליך ליצור CRD של Policy
מסוג Schedule
שמגדיר את לוח הזמנים לגביית גיבוי בפורמט cron (זהה ל-cron של Linux
). מדיניות לוח הזמנים יכולה לשמש עבור CRDs של BackupPlan
או ClusterBackupPlan
. דגם סטנדרטי של מדיניות של לוח זמנים נראה כך (מגדיר לוח זמנים של 5 דקות
):
# מפעיל כל 5 דקות
לאחר מכן, תוכל להחיל את מדיניית הזמנים על CRD של ClusterBackupPlan
לדוגמה, כמו שמוצג למטה:
ניתן לשים לב שזו CRD יסודית של ClusterBackupPlan
, המתייחסת ל-CRD של Policy
שהוגדרה בעבר דרך שדה spec.backupConfig.schedulePolicy
. ניתן ליצור מדיניות נפרדת עבור גיבויים מלאים או חלקיים, לכן ניתן לציין את fullBackupPolicy
או incrementalBackupPolicy
ב-spec.
כעת, אנא צור את מדיניית הזמנים Policy
באמצעות הרכיב הדוגמא המסופק על ידי המדריך לסטארטר קיט.
NAME POLICY DEFAULT
scheduled-backup-every-5min Schedule false
שנה את התיקייה לתיקיית המאגר של Git של סטארטר קיט שהורד במחשב המקומי שלך.
לבסוף, צור את המשאבים עבור גיבויים מתוכננים בכלי ה-kube-system:
# צור קודם תוכנית גיבוי עבור המרחב של kube-system
NAME TARGET ... FULL BACKUP POLICY STATUS
kube-system-ns-backup-plan-5min-schedule trilio-s3-target ... scheduled-backup-every-5min Available
# צור והפעל את הגיבוי המתוכנן עבור המרחב של kube-system
בדוק את מצב תוכנית הגיבוי המתוזמנת עבור kube-system
:
NAME BACKUPPLAN BACKUP TYPE STATUS ...
kube-system-ns-full-backup-scheduled kube-system-ns-backup-plan-5min-schedule Full Available ...
הפלט נראה דומה לכך שמוצג למטה. שים לב לערך FULL BACKUP POLICY
שהוגדר למשאב מדיניות הגיבוי שנוצרה מראש בשם scheduled-backup-every-5min
, וגם לערך STATUS
שצריך להיות Available
.
בדוק את מצב גיבוי המתוזמן עבור kube-system
:
הפלט נראה דומה לכך שמוצג למטה. שים לב לערך BACKUPPLAN
שהוגדר למשאב תוכנית הגיבוי שנוצרה מראש, וגם לערך STATUS
שצריך להיות Available
.
כעת, תוכל לוודא כי הגיבויים מבוצעים בתדירות קבועה (כל 5 דקות), על ידי שאילתת משאב גיבוי האשכול ובדיקה של עמודת START TIME
(kubectl get clusterbackup -n tvk
). זה צריך לשקף את ההפרש של 5 דקות, כפי שמודגש בתמונה למטה:
בשלב הבא, תלמד כיצד להגדיר מדיניות שמירת גיבויים.
המדיניות שמירה מאפשרת לך להגדיר את מספר הגיבויים לשמירה ואת התדירות למחיקת הגיבויים על פי דרישות ההתאמה לתקנות. מרכז הקריאה למדיניות שמירה מספק פרטי YAML פשוטים להגדרת מספר הגיבויים לשמירה בימים, שבועות, חודשים, שנים, הגדרות אחרונות וכו'.
- שימוש במדיניות שמירה
- מדיניות שמירה ניתן להשתמש בה עבור CRDs
BackupPlan
אוClusterBackupPlan
. תבנית מפורטת שלPolicy
עבור סוג השמירה נראית כך: - המדיניות שמירה לעיל מתרגמת ל:
- כל שבוע, שמור גיבוי אחד בכל יום רביעי.
כל חודש, שמור גיבוי אחד ביום ה-15.
A typical ClusterBackupPlan
example configuration that has a retention set looks like:
כל שנה, שמור גיבוי אחד בכל מרץ.
בסה"כ, יש להיות 2 הגיבויים האחרונים זמינים.
הזרם הבסיסי ליצירת משאבי מדיניות שמירה הולך באותו אופן כמו לגיבויים מתוכנתים. נדרש BackupPlan
או ClusterBackupPlan
CRD מוגדר כדי להתייחס למדיניות השמירה, ולאחר מכן להיות לו אובייקט Backup
או ClusterBackup
כדי להפעיל את התהליך.
שימו לב שהיא משתמשת בשדה retentionPolicy
כדי להתייחס למדיניות הרלוונטית. ברור שניתן להגדיר תוכנית גיבוי שמכילה שני סוגי מדיניות, כך שתוכל לבצע גיבויים מתוכנתים, כמו גם להתמודד עם אסטרטגיות שמירה.
שימוש במדיניות ניקוי
אתה צריך דרך לאיסוף אשפה של כל האובייקטים הלא נמצאים בשימוש יותר. לכן, עליך להכניס את ה-Cleanup Policy
CRD:
המדיניות לניקוי לעיל חייבת להיות מוגדרת במרחב השם של ההתקנה של TVK. לאחר מכן, נוצר באופן אוטומטי עבורך עבודת כרון שרץ כל 30 דקות ומוחק גיבויים שכשלו על סמך הערך שצויין עבור backupdays
בתוך שדה ה-spec
.
מסקנה
- במדריך זה, למדת כיצד לבצע גיבויים חד-פעמיים ומתוזמנים, ולשחזר הכול.
- כל המשימות והפעולות הבסיסיות המוסברות במדריך זה, מתכוונות לתת לך הקדמה בסיסית והבנה של מה ש-TrilioVault עבור Kubernetes מסוגלת לעשות.
- מידע נוסף