المقدمة
في هذا البرنامج التعليمي، ستتعلم كيفية نشر TrilioVault لـ Kubernetes (أو TVK) إلى عنقود DOKS الخاص بك، وإنشاء نسخ احتياطية، واستعادتها إذا حدث خطأ ما. يمكنك عمل نسخ احتياطية لعنقودك بأكمله، أو اختيار نسخ احتياطية بناءً على مساحة الاسم أو التسمية كخيار.
مزايا استخدام Trilio:
- إجراء نسخ احتياطية كاملة (أو تزايدي) لعنقودك واستعادتها في حالة فقدان البيانات.
- الترحيل من عنقود إلى آخر.
- يتم دعم نسخ احتياطية لإصدارات Helm.
- تشغيل الخطوط السابقة واللاحقة لعمليات النسخ الاحتياطي والاستعادة.
- واجهة إدارة ويب تتيح لك فحص حالة عمليات النسخ الاحتياطي/الاستعادة بالتفصيل.
- تعريف سياسات الاحتفاظ بنسخ الاحتياطية الخاصة بك.
- يمكن إدارة دورة حياة التطبيق (أي TVK نفسه) عبر TrilioVault Operator مخصص`.
- التكامل مع Velero.
- يمكنك عمل نسخ احتياطية واستعادة التطبيقات القائمة على المشغل.
لمزيد من المعلومات، يرجى الرجوع إلى الوثائق الرسمية لـ TVK CRDs.
جدول المحتويات
- المتطلبات
- الخطوة 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 لتفاعل واجهة برمجة التطبيقات لـ DigitalOcean.
- Kubectl لتفاعل Kubernetes.
لكي يعمل TrilioVault بشكل صحيح ولكي يقوم بنسخ احتياطي لـ PVCs الخاصة بك، يجب تكوين DOKS لدعم واجهة تخزين الحاويات (أو CSI بشكل مختصر). بشكل افتراضي، يأتي مع البرنامج التشغيل مثبتًا ومكونًا بالفعل. يمكنك التحقق باستخدام الأمر التالي:
يجب أن يبدو الإخراج مشابهًا لمقطع الشفرة التالي. لاحظ أن المزود هو 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 لتثبيت ناجح. يمكنك التحقق باستخدام الأمر التالي:
يجب أن يبدو الإخراج مشابهًا لمقطع الشفرة التالي. إذا لم يتم تثبيت VolumeSnapshot CRD، فراجع تثبيت VolumeSnapshot CRDs.
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:
في نهاية ملف YAML CRD، يجب أن ترى قائمة storedVersions تحتوي على قيم v1beta1 و v1 (إذا لم يتم التثبيت، راجع تثبيت VolumeSnapshot CRDs):
...
- 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. تعرِّف CRD TrilioVaultManager الذي يخبر مشغل TrilioVault كيفية التعامل مع التثبيت وخطوات ما بعد التكوين والترقيات المستقبلية لمكونات تطبيق Trilio.
- عبر الرسم البياني triliovault-operator الذي يتم إدارته بالكامل بواسطة Helm، (مشمول في هذا البرنامج التعليمي).
تثبيت TrilioVault باستخدام Helm
يستخدم برنامج Starter Kit نوع التثبيت في العنقود لتطبيق TVK (applicationScope
قيمة Helm مُعينة إلى “Cluster”). تعتمد جميع الأمثلة من هذا البرنامج التعليمي على هذا النوع من التثبيت للعمل بشكل صحيح.
أولاً، انسخ مستودع Git لـ Starter Kit وغير الدليل إلى نسختك المحلية:
ثم، أضف مستودع 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
وتصديره إلى ملف لرؤية جميع الخيارات المتاحة.
ثم، قم بفتح وفحص ملف قيم Helm لـ TrilioVault المقدم في مستودع Starter kit باستخدام محرر تفضله (مع دعم فحص YAML).
وأخيرًا، قم بتثبيت TrilioVault لـ Kubernetes باستخدام Helm:
–create-namespace \
الأمر أعلاه يقوم بتثبيت كل من TrilioVault Operator و TriloVault Manager (TVM) Custom Resource باستخدام المعلمات المقدمة في 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 و توليد ترخيص جديد لعقدتك التي تناسب احتياجاتك (على سبيل المثال، يمكنك اختيار نوع الترخيص الأساسي الذي يتيح لك تشغيل TrilioVault بشكل دائم إذا لم تتجاوز قدرة عقدتك 10 عقد). يتيح لك ترخيص الفترة التجريبية المجانية تشغيل TVK لمدة شهر على عقدات غير محدودة.
- يتم توفير TrilioVault بشكل مجاني لعقدات Kubernetes التي تصل إلى 100000 عقدة لمستخدمي DigitalOcean. يمكن للمستخدمين اتباع الخطوات التالية لإنشاء ترخيص خاص متاح لعملاء DO فقط.
تعتمد أمثلة حزمة البداية على نوع الترخيص العقدة للوظيفة بشكل صحيح.
قم بتشغيل الأمر التالي لإنشاء ترخيص جديد لعنقودتك (وهو يتم إدارته عبر 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
object. يمكنك تفقده من خلال تشغيل الأمر التالي:
يبدو الإخراج مماثلًا للتالي. لاحظ حقول Message
و Capacity
، بالإضافة إلى Edition
.
الناتج أعلاه سيُظهر لك أيضًا متى سينتهي الرخصة في حقل Expiration Timestamp
، والنطاق (Scope
) (يُعتمد على النطاق Cluster
في هذه الحالة). يمكنك اختيار نوع رخصة على مستوى النطاق أو على أساس مساحة الاسم (Namespace
)
لتجديد الرخصة، ستحتاج إلى طلب واحدة جديدة من موقع 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
: السعة الحد الأقصى لتخزين بيانات النسخ الاحتياطية.
# يجب أن تكون القيمة مشفرة بترميز base64
لاحظ أن اسم السر هو trilio-s3-target
ويتم الإشارة إليه بواسطة حقل spec.objectStoreCredentials.credentialSecret
في CRD Target المشروح سابقًا. يمكن أن يكون الـ secret
في نفس مساحة الأسماء التي تم تثبيت TrilioVault فيها (القيمة الافتراضية هي tvk)، أو في مساحة أسماء أخرى من اختيارك. فقط تأكد من الإشارة إلى مساحة الأسماء بشكل صحيح. من ناحية أخرى، يرجى التأكد من حماية مساحة الأسماء التي تخزن فيها أسرار TrilioVault من خلال RBAC لأسباب أمنية.
خطوات إنشاء هدف لـ TrilioVault:
أولاً، قم بتغيير الدليل حيث تم استنساخ مستودع Starter Kit Git على جهازك المحلي:
بعد ذلك، قم بإنشاء Secret Kubernetes الذي يحتوي على بيانات اعتماد دلو S3 الخاص بالهدف الخاص بك (يرجى استبدال العلامات التجارية <>
بما يناسبك):
–from-literal=accessKey=“<YOUR_DO_SPACES_ACCESS_KEY_HERE>” \
–from-literal=secretKey=“<YOUR_DO_SPACES_SECRET_KEY_HERE>”
ثم، قم بفتح وتفقد ملف التجسيد المستهدف المقدم في مستودع Starter Kit باستخدام محرر اختيارك (مع دعم YAML lint إذا كان متاحاً).
الآن، يرجى استبدال العلامات <>
وفقًا لدليلات DO Spaces Trilio bucket الخاص بك، مثل bucketName
، region
، url
و credentialSecret
.
في النهاية، قم بحفظ ملف التجسيد وإنشاء كائن Target باستخدام kubectl
:
NAME TYPE THRESHOLD CAPACITY VENDOR STATUS BROWSING ENABLED
trilio-s3-target ObjectStore 10Gi Other Available
بعد ذلك، سيقوم TrilioVault بإنشاء عملية عمل (worker job) تحت اسم 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 104s
# الآن، جلب بيانات السجلات
سيكون الإخراج هو هذا الاستثناء:
الخطوة التالية، ستكتشفون واجهة مستخدم ويب TVK التي هي إضافة مفيدة لمساعدتك في إدارة عمليات النسخ الاحتياطي واستعادة البيانات بسهولة، إلى جانب العديد من الوظائف الأخرى.
الخطوة 3 – التعرف على واجهة إدارة الويب TVK
بينما يمكنك إدارة عمليات النسخ الاحتياطي واستعادة البيانات بالكامل من خلال واجهة سطر الأوامر (CLI) تمامًا عبر 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 تحكم الإدخال Nginx لتوجيه حركة المرور إلى خدمات وحدة التحكم عبر الويب. التوجيه مستند إلى المضيف، واسم المضيف هو tvk-doks.com
كما هو محدد في ملف قيم Helm من Starter Kit:
# اسم المضيف المستخدم عند الوصول إلى وحدة التحكم عبر الويب عبر تحكم الإدخال لـ TVK
وأخيرًا، قم بتصدير ملف kubeconfig
لعقد DOKS الخاص بك. هذه الخطوة مطلوبة حتى يتمكن الويب من المصادقة عليك.
# قائمة العناقيد المتاحة
# حفظ تكوين العنقود إلى YAML
إذا كان لديك عنقود واحد فقط، قم بتشغيل الأمر التالي:
بعد اتباع هذه الخطوات، يمكنك الوصول إلى واجهة التحكم في متصفح الويب الخاص بك عن طريق التنقل إلى: http://tvk-doks.com:8080. عندما يُطلب منك ملف kubeconfig
، يرجى تحديد الذي أنشأته في الأمر السابق.
يرجى الاحتفاظ بملف kubeconfig
المُولَّد بعناية لأنه يحتوي على بيانات حساسة.
- استكشاف واجهة مستخدم لوحة التحكم عبر الويب TVK
- استكشف كل قسم من اليسار، مثل:
- إدارة العناقيد: يعرض قائمة العناقيد الأساسية والأخرى التي تحتوي على مثيلات TVK، المضافة إلى عنقود OVH الأساسي باستخدام ميزة الإدارة متعددة العناقيد.
- النسخ الاحتياطي والاستعادة: هذه هي لوحة المعلومات الرئيسية التي توفر لك نظرة عامة على العنقود بأكمله، مثل الأسماء الفضائية المكتشفة، والتطبيقات، وقائمة خطط النسخ الاحتياطي، والأهداف، والخطافات، والسياسات، وما إلى ذلك.
الرصد: يحتوي هذا على خيارين- رصد TrilioVault و رصد Velero إذا كان المستخدم قد قام بتكوين Velero على عنقود OVH الخاص بهم.
استعادة الكوارث: تتيح لك إدارة وأداء عمليات استعادة الكوارث.
استعادة الكوارث: تتيح لك إدارة وأداء عمليات استعادة الكوارث.
يمكنك أيضًا رؤية الهدف S3 الذي تم إنشاؤه سابقًا، عن طريق الانتقال إلى النسخ الاحتياطي والاستعادة -> الأهداف -> <Namespace> من القائمة المنسدلة في الأعلى.
ومن ثم، يمكنك تصفح الهدف وعرض النسخ الاحتياطية المتاحة عن طريق النقر على زر الإجراءات من اليمين، ومن ثم تحديد الخيار تشغيل المتصفح من قائمة البوب آب. من أجل أن يعمل هذا، يجب أن يكون للهدف علامة enableBrowsing
مضبوطة على true
.
للمزيد من المعلومات والميزات المتاحة، يرجى الاطلاع على الوثائق الرسمية لـ واجهة مستخدم إدارة الويب TrilioVault.
بعد ذلك، ستتعلم كيفية أداء عمليات النسخ الاحتياطي واستعادة لحالات الاستخدام المحددة.
الخطوة 4 – مثال على النسخ الاحتياطي واستعادة الأسماء
في هذه الخطوة، ستتعلم كيفية إنشاء نسخة احتياطية مرة واحدة لمساحة أسماء بأكملها (ambassador
في هذه الحالة) من عنقود DOKS الخاص بك واستعادتها بعد ذلك، مع التأكد من إعادة إنشاء جميع الموارد. TVK لديه ميزة تسمح لك بإجراء النسخ الاحتياطي على مستوى أعلى من مجرد مساحات الأسماء.
- إنشاء نسخة احتياطية لإطلاق Ambassador Helm
- لإجراء النسخ الاحتياطي لتطبيق واحد على مستوى مساحة الأسماء (أو إصدار 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.
بعد ذلك، غير الدليل إلى المسار حيث تم استنساخ مستودع Git Starter Kit على جهازك المحلي:
ثم، افتح وافحص ملفات تعريف 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
...
# تبدو النتيجة مشابهة لهذا (لاحظ أن `STATUS` تغيرت إلى `Available`، و `PERCENTAGE` هو `100`)
إذا كانت النتيجة تبدو مشابهة لهذا، فقد نجحت في نسخ احتياطي لإطلاق السفير ambassador
. يمكنك المتابعة ومعرفة كيفية تخزين البيانات الوصفية لـ Kubernetes من خلال قائمة محتويات دلو TrilioVault S3. على سبيل المثال، يمكنك استخدام s3cmd:
ambassador-helm-release-full-backup-metamover-mg9gl0--1-2d6wx 1/1 Running 0 4m32s
تبدو النتيجة مشابهة لما يلي. لاحظ أن القائمة تحتوي على ملفات JSON ومعرفات الوحدات، التي تمثل كائنات Kubernetes.
في حالة عدم توفر النسخ الاحتياطي، يمكنك فحص السجلات من Pod 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"}
...
تبدو النتيجة مشابهة لهذا:
الآن، احصل على بيانات السجلات:
تبدو النتيجة مشابهة لما يلي.
وأخيرًا، يمكنك التحقق من توفر النسخ الاحتياطي أيضًا في واجهة التحكم عبر الويب من خلال التنقل إلى إدارة الموارد -> السفير -> خطط النسخ الاحتياطي. لاحظ أنها في حالة Available
وأن إطلاق السفير Helm تم نسخه في عرض البيانات الفرعية.
حذف إطلاق السفير Helm والموارد
الآن، قم بمحاكاة كارثة عن طريق حذف إصدار Helm ambassador
عن قصد:
بعد ذلك، تحقق من حذف موارد مساحة الأسماء (يجب أن تكون القائمة فارغة):
- وأخيرًا، تحقق من أن نقطة نهاية خدمات الـ backend لـ
echo
وquote
متوقفة عن العمل. يرجى الرجوع إلى إنشاء خدمات الـ Backend لـ Ambassador Edge Stack بخصوص التطبيقات الخلفية المستخدمة في دليل البداية. يمكنك استخدامcurl
للاختبار (أو يمكنك استخدام متصفح الويب الخاص بك): - استعادة نسخة احتياطية لإصدار Helm الخاص بـ Ambassador
- مهم
إذا كنت تقوم باستعادة نفس مساحة الأسماء، تأكد من أن مكونات التطبيق الأصلية قد تمت إزالتها. خاصةً PVC للتطبيق تم حذفه.
إذا كنت تقوم بالاستعادة إلى عنقود آخر (سيناريو الهجرة)، فتأكد من تشغيل TrilioVault لـ Kubernetes في مساحة الأسماء/العنقود البعيدة أيضًا. لإعادة التأهيل إلى عنقود جديد (حيث لا يوجد موجود Backup CR)، يجب تعيين source.type
إلى location
. يرجى الرجوع إلى قسم تعريف مورد مخصص للاستعادة لعرض مثال استعادة حسب الموقع.
- عند حذف مساحة الأسماء
ambassador
، سيتم حذف مورد موازن الحمل المرتبط بخدمة السفير أيضًا. لذا، عند استعادة خدمة السفير، سيتم إعادة إنشاء LB بواسطة DigitalOcean. المشكلة هي أنه ستحصل على عنوان IP جديد لـ LB الخاص بك، لذا ستحتاج إلى ضبطA records
للحصول على حركة المرور إلى النطاقات الخاصة بك المستضافة على العنقود. - لاستعادة نسخة احتياطية محددة، يجب عليك إنشاء
Restore
CRD. يبدو الـ Restore CRD النموذجي كما يلي: - في هذا التكوين،
spec.source.type
: يحدد نوع النسخة الاحتياطية للاستعادة منها.
spec.source.backup
: يحتوي على مرجع إلى كائن النسخ الاحتياطي الذي يجب الاستعادة منه.
spec.skipIfAlreadyExists
: يحدد ما إذا كان يجب تخطي استعادة مورد إذا كان موجودًا بالفعل في مساحة الأسماء المستعادة.
يتيح لك Restore استعادة آخر نسخة احتياطية ناجحة لتطبيق. يُستخدم لاستعادة مساحات أسماء فردية أو إصدار Helm، والتي يتم حمايتها بواسطة Backup CRD. يُحدد Backup CRD بواسطة اسمه ambassador-helm-release-full-backup
.
أولاً، قم بتفحص مثال Restore CRD من مستودع Starter Kit Git:
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
:
وأخيرًا، قم بتفحص حالة كائن Restore:
يبدو الإخراج مشابهًا للتالي. لاحظ عمود STATUS
الذي تم تعيينه إلى Completed
، بالإضافة إلى تعيين PERCENTAGE COMPLETED
إلى 100
.
إذا كان الإخراج يبدو مشابهًا لهذا، فإن عملية استعادة إصدار Helm ambassador
قد تمت بنجاح.
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
التحقق من سلامة التطبيقات بعد الاستعادة
تحقق من وجود جميع موارد مساحة الأسماء ambassador
وتشغيلها:
NAME HOSTNAME STATE PHASE COMPLETED PHASE PENDING AGE
echo-host echo.starter-kit.online Ready 11m
quote-host quote.starter-kit.online Ready 11m
يبدو الإخراج مشابهًا للتالي:
احصل على مضيفي ambassador:
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
يشير إلى اسم المضيف الكامل.
احصل على تعيينات ambassador:
المخرج يبدو مشابهًا لما يلي. لاحظ echo-backend
الذي يتم تعيينه على echo.starter-kit.online
ومضيفة /echo/
كبادئة المصدر، نفس الأمر بالنسبة لـ quote-backend
.
الآن، تحتاج إلى تحديث سجلات DNS A
الخاصة بك، لأن موارد موازن الحمل في ديجيتال أوشن تم إعادة إنشاؤها، وتم تعيين عنوان IP الخارجي الجديد لها.
وأخيرًا، تحقق مما إذا كانت تستجيب تطبيقات الخلفية لطلبات HTTP أيضًا. يرجى الرجوع إلى إنشاء خدمات الخلفية لمكدس بداية السفير بخصوص التطبيقات الخلفية المستخدمة في برنامج تعليمي عن مجموعة البداية.
الخطوة التالية تتعامل مع النسخ الاحتياطي واستعادة العمليات للمجموعة بأكملها.
الخطوة 5 – مثال على النسخ الاحتياطي واستعادة المجموعة بأكملها
A typical ClusterBackupPlan
manifest targeting multiple namespaces looks like this:
في هذه الخطوة، ستقوم بمحاكاة سيناريو لاستعادة الكوارث. سيتم حذف مجموعة DOKS بأكملها ثم استعادة التطبيقات الهامة من نسخة احتياطية سابقة.
إنشاء نسخة احتياطية لمجموعة DOKS
الفكرة الرئيسية هنا هي إجراء نسخ احتياطية لعنقود DOKS بما في ذلك جميع الفضاءات الاسمية الهامة التي تحمل تطبيقاتك الأساسية والتكوينات الخاصة بك.
يرجى ملاحظة أن kube-system
(أو أي فضاءات أخرى ذات صلة بعنقود DOKS) لم يتم تضمينها في القائمة. عادةً ما لا تكون مطلوبة، ما لم يكن هناك حالة خاصة تتطلب بعض الإعدادات ليتم الاحتفاظ بها على هذا المستوى.
أولاً، قم بتغيير الدليل حيث تم استنساخ مستودع Git لمجموعة البداية على جهازك المحلي:
ثم، افتح وافحص ملفات التخطيط للنسخ الاحتياطي للعنقود والنسخ الاحتياطي للعنقود المقدمة في مستودع مجموعة البداية باستخدام محرر اختيارك (مفضلًا مع دعم فحص YAML).
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 واستعادة التطبيقات
جانب مهم يجب أن تضعه في اعتبارك هو أنه كلما قمت بتدمير عقدة DOKS ثم استعدتها، يتم إنشاء محمل تحميل جديد بعنوان IP خارجي جديد أيضًا عندما يقوم TVK بإعادة تثبيت متحكم الدخول الخاص بك. لذا، يرجى التأكد من تحديث سجلات DNS الخاصة بـ DigitalOcean A records
وفقًا لذلك.
الآن، احذف عقدة DOKS بالكامل (تأكد من استبدال العلامات <>
وفقًا لذلك):
بعد ذلك، أعد إنشاء العقدة كما هو موضح في إعداد Kubernetes لـ DigitalOcean.
لأداء عملية الاستعادة، تحتاج إلى تثبيت تطبيق TVK كما هو موضح في الخطوة 1 – تثبيت TrilioVault لـ Kubernetes. من المهم استخدام نفس إصدار Helm Chart.
بعد اكتمال التثبيت بنجاح، قم بتكوين الهدف TVK كما هو موضح في الخطوة 2 – إنشاء هدف TrilioVault لتخزين النسخ الاحتياطية، وقم بتوجيهه إلى نفس الحاوية S3
حيث تقع بيانات النسخ الاحتياطي الخاصة بك. كما يرجى التأكد من تمكين تصفح الهدف
.
بعد ذلك، قم بالتحقق من الترخيص الجديد وتنشيطه كما هو موضح في القسم ترخيص تطبيق TrilioVault.
للوصول إلى واجهة مستخدم وحدة التحكم عبر الويب، يرجى الرجوع إلى القسم الحصول على وصول إلى وحدة التحكم الإدارية لـ TVK.
ثم، انتقل إلى إدارة الموارد -> فضاء الأسماء TVK -> الأهداف (في حالة حقيبة البداية، فإن فضاء الأسماء TVK هو tvk
):
بعد ذلك، تصفح الهدف وقائمة النسخ الاحتياطية المتاحة عن طريق النقر على زر الإجراءات. ثم، حدد تشغيل المتصفح من القائمة المنبثقة. يجب أن يكون للهدف علم enableBrowsing
مضبوطًا على true
لعمل هذا.
الآن، انقر على عنصر starter-kit-cluster-backup-plan من القائمة، ثم انقر وقم بتوسيع عنصر starter-kit-cluster-backup من النافذة الفرعية اليمنى:
لبدء عملية استعادة النسخ الاحتياطية، انقر على زر استعادة.
أولاً، تحقق من جميع موارد Kubernetes في العنقود.
ثم، تأكد من أن سجلات DNS A مُحدّثة لتشير إلى عنوان IP الخارجي الجديد لموزّع الأحمال الخاص بك.
وأخيرًا، يجب أن تستجيب تطبيقات الخلفية لطلبات HTTP أيضًا. يرجى الرجوع إلى إنشاء خدمات الخلفية لتراكم السفير لحافة الشروع بشأن التطبيقات الخلفية المستخدمة في البرنامج التعليمي لمجموعة البداية.
في الخطوة التالية، ستتعلم كيفية إجراء نسخ احتياطية مجدولة (أو تلقائية) لتطبيقات عنقود DOKS الخاص بك.
أخذ نسخ احتياطية تلقائيًا استنادًا إلى جدول زمني هو ميزة مفيدة حقًا. فهو يتيح لك لف الوقت واستعادة النظام إلى حالة عمل سابقة إذا حدث خطأ ما. تقدم هذا القسم مثالًا على نسخة احتياطية تلقائية بجدول زمني يبلغ 5 دقائق (تم اختيار مساحة الاسم النطاقي kube-system
).
أولاً، تحتاج إلى إنشاء سجل CRD من النوع Schedule
الذي يحدد جدول النسخ الاحتياطي بتنسيق cron (نفس تنسيق cron في Linux
). يمكن استخدام سياسات الجدولة للـ BackupPlan
أو ClusterBackupPlan
CRDs. يبدو السجل CRD لسياسة الجدولة النموذجية كما يلي (يحدد جدولًا بـ 5 دقائق
):
# يشغل كل 5 دقائق
بعد ذلك، يمكنك تطبيق سياسة الجدولة على CRD للـ ClusterBackupPlan
على سبيل المثال، كما يظهر أدناه:
يمكنك ملاحظة أنها عبارة عن CRD أساسي للـ ClusterBackupPlan
، يشير إلى سجل CRD المحدد سابقًا من خلال حقل spec.backupConfig.schedulePolicy
. يمكنك إنشاء سياسات منفصلة للنسخ الاحتياطي الكامل أو التزايدية، لذا يمكن تحديد fullBackupPolicy
أو incrementalBackupPolicy
في المواصفات.
الآن، يرجى إنشاء سياسة الجدولة باستخدام السجل النموذجي المقدم في دليل Starter Kit.
NAME POLICY DEFAULT
scheduled-backup-every-5min Schedule false
قم بتغيير الدليل إلى المكان الذي تم فيه استنساخ مستودع Git Starter Kit على جهازك المحلي.
أخيرًا، قم بإنشاء الموارد لنسخ الاحتياطي المجدولة في مساحة الأسماء 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 دقائق، كما هو موضح في الصورة أدناه:
في الخطوة التالية، ستتعلم كيفية إعداد سياسة الاحتفاظ بالنسخ الاحتياطية.
الخطوة 7 – سياسة الاحتفاظ بالنسخ الاحتياطية
تسمح سياسة الاحتفاظ بتحديد عدد النسخ الاحتياطية المُحتفظ بها والإيقاع لحذف النسخ الاحتياطية وفقًا لمتطلبات الامتثال. يوفر CRD لسياسة الاحتفاظ بمواصفة YAML بسيطة لتحديد عدد النسخ الاحتياطية المُحتفظ بها بالأيام، والأسابيع، والشهور، والسنوات، وآخرها.
- استخدام سياسات الاحتفاظ
- يمكن استخدام سياسات الاحتفاظ لكل من ملفات الـ
BackupPlan
أوClusterBackupPlan
CRDs. يبدو المظهر النموذجي لـPolicy
من نوعRetention
كما يلي: - تُترجم سياسة الاحتفاظ أعلاه إلى:
- كل أسبوع، الاحتفاظ بنسخة واحدة كل أربعاء.
كل شهر، الاحتفاظ بنسخة واحدة في اليوم الخامس عشر.
A typical ClusterBackupPlan
example configuration that has a retention set looks like:
كل عام، الاحتفاظ بنسخة واحدة في كل مارس.
بشكل عام، يجب أن تكون هناك نسختان الأحدث متاحتان.
تتبع العملية الأساسية لإنشاء مورد سياسة الاحتفاظ بنفس الطريقة المتبعة للنسخ الاحتياطي المجدول. تحتاج إلى تحديد BackupPlan
أو ClusterBackupPlan
CRD للإشارة إلى سياسة الاحتفاظ، ثم يتعين وجود كائن Backup
أو ClusterBackup
لتشغيل العملية.
لاحظ أنه يستخدم حقل retentionPolicy
للإشارة إلى السياسة المعنية. بالطبع، يمكنك أن تمتلك خطة نسخ احتياطية تحتوي على كل من أنواع السياسات، حتى تتمكن من القيام بنسخ احتياطية مجدولة، فضلاً عن التعامل مع استراتيجيات الاحتفاظ.
استخدام سياسات التنظيف
تحتاج إلى طريقة لجمع القمامة من كل تلك الكائنات التي لم تعد قيد الاستخدام. لذا، تحتاج إلى إدخال سجل CRD لـ Cleanup Policy
:
يجب أن يتم تعريف سياسة التنظيف أعلاه في مساحة أسماء تثبيت TVK. بعد ذلك، يتم إنشاء وظيفة cron تلقائيًا تعمل كل 30 دقيقة وتحذف النسخ الاحتياطية الفاشلة استنادًا إلى القيمة المحددة لـ backupdays
ضمن حقل spec.
الختام
- في هذا البرنامج التعليمي، تعلمت كيفية إجراء عمليات النسخ الاحتياطي مرة واحدة بالإضافة إلى النسخ الاحتياطي المجدول، واستعادة كل شيء.
- كل المهام والعمليات الأساسية المشروحة في هذا البرنامج التعليمي، تهدف إلى تزويدك بمقدمة أساسية وفهم لقدرات TrilioVault لـ Kubernetes.
- معرفة المزيد