بکاپ و ریستور کلاستر EKS با Velero
خلاصهٔ کاملتر
وقتی یه namespace پروداکشن رو اشتباه پاک میکنی یا آپگرید کلاستر خراب میشه، بازسازی دستی همه Deploymentها، Serviceها و Persistent Volumeها کابوس واقعیه. Velero ابزاری متنباز برای بکاپ و ریستور کلاسترهای Kubernetesه که بهجای دسترسی مستقیم به سیستم ذخیرهسازی، از طریق Kubernetes API کار میکنه. این رویکرد API-driven چند مزیت داره: فیلتر بر اساس namespace، نوع منبع یا label؛ قابلیت ریستور روی توزیعهای مختلف Kubernetes؛ و یکپارچگی با سرویسهای Snapshot ابری.
در این آموزش، Velero روی Amazon EKS نصب میشه و یه اپلیکیشن stateful (یعنی اپلیکیشنی که داده دائمی داره) بکاپ گرفته و به یه namespace دیگه ریستور میشه. بکاپهای Kubernetes object روی Amazon S3 و بکاپ دادههای Volume بهشکل EBS Snapshot ذخیره میشن. برای احراز هویت هم از EKS Pod Identity استفاده میشه که به Podها اجازه میده بدون مدیریت credential، نقشهای IAM رو assume کنن.
یه نکته مهم درباره امنیت: نصب پیشفرض Velero از cluster-admin استفاده میکنه که دسترسی خیلی گستردهایه. در این آموزش یه ClusterRole سفارشی به اسم velero-restricted تعریف میشه که فقط دسترسیهای لازم رو میده — از مدیریت namespace و PVC گرفته تا Snapshot و منابع خود Velero.
برای بکاپگیری، یه منبع سفارشی Backup تعریف میشه که مشخص میکنه از کدام namespace و چه نوع منابعی بکاپ گرفته بشه:
spec:
includedNamespaces: [myprimary]
includedResources: [deployments,pods,persistentvolumeclaims,persistentvolumes,services,configmaps,secrets]
snapshotVolumes: true
defaultVolumesToFsBackup: false
ttl: 720h0m0sریستور هم با یه منبع Restore انجام میشه که از قابلیت namespace mapping استفاده میکنه — یعنی محتوای namespace myprimary رو میتونی مستقیم به myrestore منتقل کنی بدون هیچ تغییر دستی:
spec:
backupName: backup-myprimary
namespaceMapping:
myprimary: myrestore
preserveNodePorts: true
restorePVs: trueبرای تأیید موفقیت ریستور، فایل دادهای که اپلیکیشن نوشته بود روی Pod ریستورشده بررسی میشه و پیامهای قدیمی از namespace اصلی نمایش داده میشن — یعنی داده EBS Snapshot هم کاملاً برگشته.
نکات کلیدی:
- Velero از طریق Kubernetes API کار میکنه و نیازی به دسترسی مستقیم به استوریج نداره
- بکاپ objectها روی S3 و بکاپ Volumeها با EBS Snapshot ذخیره میشن
- EKS Pod Identity جایگزین credential دستی برای احراز هویت به AWS میشه
- ClusterRole سفارشی velero-restricted بهجای cluster-admin پیشفرض استفاده میشه
- namespace mapping در Restore اجازه میده ریستور به یه namespace کاملاً متفاوت انجام بشه
- برای بکاپ خودکار میشه از منبع Schedule در Velero استفاده کرد




