Velero لـ Kubernetes: خطة تعافي بدل الدعاء
لو مهندس جديد كتب kubectl delete namespace production بدل staging الساعة 3 الفجر، ومعندكش backup خارج الـ cluster، هتفضل 9 ساعات بتعيد بناء كل حاجة يدوي. Velero بيرجّع الموقف في 12 دقيقة من S3. المقال ده بيوريك الإعداد كامل بأرقام إنتاج حقيقية.
المشكلة باختصار
فريق بيشغّل EKS بـ 40 microservice وموقع بخدم 120 ألف user يوميًا. فيه سيناريوهات 3 بتكسر الإنتاج فورًا: مسح namespace بالخطأ، فساد volume بسبب node crash، وضياع region كامل في AWS outage. كل سيناريو منهم الحل بتاعه مختلف لو ما عندكش خطة موحّدة.
كتير من الفرق بتعتمد على etcd snapshots وبس. ده بيحفظ الـ control plane state فقط، من غير persistent volumes. يعني PostgreSQL بتاعك وصوره MinIO وملفات uploads كلها بتضيع. وزيادة على كدا، لو الـ snapshot متخزّن جوه نفس الـ region اللي وقع، فأنت بتحتفظ بالدواء جوه المستشفى اللي بتحترق.
Velero بلغة بسيطة: أمين مكتبة بينسخ كل كتاب
تخيّل مكتبة فيها 5000 كتاب. كل يوم فيه ناس بتضيف كتب جديدة وبتعدّل في الفهرس وبتنقل كتب من رف لرف. أمين المكتبة كل ليلة بيصوّر المكتبة كلها: الكتب نفسها، الفهرس، حتى ترتيب الرفوف، وبيبعت الصور دي لفرع بعيد. لو حصلت نار وضاع نصف الكتب، الأمين بيرجع آخر صورة ويعيد بناء المكتبة في ساعة بدل أسبوع كامل.
Velero بيشتغل بنفس المنطق بالظبط. هو عبارة عن controller بيتركّب جوا cluster Kubernetes، ووظيفته اتنين: ياخد snapshot للـ Kubernetes API objects (Deployments, Services, ConfigMaps, Secrets, CRDs) ويحوّلها لـ tarball على object storage خارجي زي AWS S3 أو MinIO أو GCS. وبالتوازي، بيطلب من CSI driver أو من Kopia data mover إنه ياخد snapshot للـ Persistent Volumes ويرفعها على نفس الـ bucket مع الـ metadata.
أحدث إصدار وقت كتابة المقال هو Velero 1.18.0 (أبريل 2026)، ومعاه plugin AWS v1.13.2، وبقى فيه default دعم Kopia للـ volumes الكبيرة بدل PodVolumeBackup القديم الـ restic-based.
الإعداد العملي في 4 خطوات
- جهّز S3 bucket + IAM user: bucket مخصص للـ backup بس، وuser بصلاحيات GetObject/PutObject/DeleteObject/ListBucket فقط على الـ bucket ده. صلاحية أوسع من كدا = سر طويل العمر بخطر.
- ثبّت Velero CLI + server: CLI محلي على جهازك، والـ server بيشتغل كـ deployment في namespace اسمه
velero. - فعّل Kopia للـ PV: Kopia بيعمل block-level deduplication + compression، يعني backup كل يوم لـ 500GB ممكن يتخزّن في 50GB فقط بعد deduplication.
- schedule يومي + اختبار restore أسبوعي: الـ schedule لوحده مش كفاية. backup ما اتجرّبش الاستعادة منه = backup وهمي.