Velero适配OBS开发心得

举报
pengcss 发表于 2024/11/14 16:09:54 2024/11/14
【摘要】 Velero是由vmware公司团队研发开源工具,用于安全地备份、恢复和迁移 Kubernetes 集群和持久卷。

项目分析

首先从任务计划书https://bbs.huaweicloud.com/blogs/439489可以了解到Velero项目的情况,Velero是由vmware公司团队研发开源工具,用于安全地备份、恢复和迁移 Kubernetes 集群和持久卷。该任务的目标就是开发一个基于华为云对象存储OBS的插件,能够将Kubernetes资源和CSI对象的元数据文件备份到华为云OBS上。

开发过程

Velero有一个插件系统,允许用户自定义插件,将自己的自定义功能添加到 Velero 备份和恢复中,而无需修改/重新编译核心 Velero 二进制文件。因此无需修改Velero主仓库的代码,只需要单独创建一个仓库进行开发。

Velero官方提供了一个功能齐全的示例插件仓https://github.com/vmware-tanzu/velero-plugin-example,因此先fork该仓库作为开发的起点。

Velero 目前支持以下类型的插件:

  • 对象存储- 保存并检索备份、备份日志和恢复日志
  • 卷快照程序- 创建卷快照(备份期间)并从快照恢复卷(恢复期间)
  • 备份项操作- 在将单个项目存储到备份文件之前,对其执行任意逻辑
  • 恢复项目操作- 在将单个项目恢复到集群之前,对单个项目执行任意逻辑

 

这里开发的是对象存储类型的插件,开发该插件需要实现ObjectStore接口,具体实现如下方法:InitPutObjectObjectExistsGetObjectListCommonPrefixesListObjectDeleteObjectCreateSignedURL

实现接口之后,在main.go启动服务的时候调用RegisterObjectStore

函数注册该插件,插件命名为huawei.com/huaweicloud

func main() {
    veleroplugin.NewServer().
       BindFlags(pflag.CommandLine).
       RegisterObjectStore("huawei.com/huaweicloud", newObjectStorePlugin).
       Serve()
}

func newObjectStorePlugin(logger logrus.FieldLogger) (interface{}, error) {
    return newObjectStore(logger), nil
}

开发完成后将其编译部署即开发完成,部署过程在README中有详细描述,这里就不赘述了。

其中velero提供了一个客户端,通过velero install命令就可以进行velero和插件的部署,插件作为一个initContainer启动,运行velero install命令后从公网拉取镜像,而如果需要部署的插件在私有镜像中,则需要使用官方提供的helm模板进行部署了。

验收材料

(1)Demo仓库地址:https://gitee.com/HuaweiCloudDeveloper/huaweicloud-velero-plugins

(2)Demo开发提交记录:https://gitee.com/HuaweiCloudDeveloper/huaweicloud-velero-plugins/commits/master

(3)博客地址:https://bbs.huaweicloud.com/blogs/439525

 

验收细则

评分说明

是否为验收必选项

结果(通过/不通过)

开发者举证

功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发

完成GaussDB数据库适配功能开发。举证提供PR链接。

 

参考资源清单和测试结果。

代码质量:适配华为三大根技术生态的代码质量经过工具检测达标

推送给开源社区的代码符合开源社区关于代码风格、功能、自动化测试等要求。

 

 

提供相关文档,比如部署文档、使用文档、配置文档等

根据社区要求,完善相关的开发指南和部署指导

 

 

合入到开源项目主仓:代码推送上游社区

代码合并到当前主干分支。举证提供代码仓库链接。

 

 

Demo设计&开发:完成功能演示Demo的开发

举证提供DEMO仓库地址和DEMO开发提交记录。

 

参考(1)(2

Demo部署&验证:完成功能演示DEMO基于华为云鲲鹏环境的部署和功能验证

提供DEMO部署验证结果的关键截图进行举证。提供DEMO运行环境和资源的规格清单。

 

参考资源清单和测试结果。

发布博客:发布博客介绍适配心得。

提供博客的地址。

 

参考(3

制作单机版无高危开源镜像。

上架云商店。

 

 

单机版镜像上架时支持模板部署。

 

 

 

制作集群版无高危开源镜像

上架云商店。

 

 

集群版镜像上架时支持模板部署

 

 

 

资源清单

产品名称

存储类别

 

数据冗余存储策略

桶策略

备注

对象存储OBS

标准存储

AZ存储

私有桶

推荐

 

产品名称

集群类型

集群版本

集群规模

备注

云容器引擎 CCE

CCE Standard 集群

V1.29

50

推荐

 

产品名称

CPU架构

实例类型

公共镜像

镜像版本

备注

弹性云服务器

鲲鹏计算

鲲鹏通用计算增强型

Huawei Cloud EulerOS

Huawei Cloud EulerOS 2.0 标准版 64 ARM(10GiB)

推荐

 

测试结果

通过备份和恢复demok8s资源来测试

cce集群中部署demo,包含以下微服务:

部署velero,查看存储状态是否可用:


运行velero backup命令备份default命名空间下的所有资源:


查看obs-logstash桶对象:


销毁default命名空间下的资源:

演示通过velero进行恢复:

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。