目录
引言
在云原生的开源项目里,velero基本上是容器备份项目的标杆,社区的活跃程度也比较高,有些小企业甚至用velero来为一些非关键业务进行备份恢复。熟悉了解velero的代码逻辑,有助于理解Kubernetes世界中的备份与恢复的思路。本文将尝试对velero的代码进行深入的分析,因为篇幅原因,本文将分为多个部分,每个部分独立成篇。本文是这个系列的第一篇,将以velero v1.5.3代码为基础,会简单介绍一下velero的代码结构,模块结构,再对velero的API进行一个简单梳理。
代码结构
进入velero的代码目录,包含代码的主要有4个目录:
cmd/
internal/
pkg/
third_party/
其中,cmd/
是main.go
所在的目录,这里cmd/
有两个main的实现,一个是velero的主体,另一个是velero-restic-restore-helper
,这个velero-restic-restore-helper
我们将在恢复过程中讲。
internal/
实现了少数几个方法与结构,会被pkg/
里面用到的逻辑调用到,而且实现也不多,其实完全可以合并入pkg/
中。third_party/
就是引用到的vendor
的代码。因此,主要的代码都在pkg/
中。
pkg/
里有这些目录:
apis
archive
backup
builder
buildinfo
client
cmd
controller
discovery
features
generated
install
kuberesource
label
metrics
persistence
plugin
podexec
restic
restore
test
util
volume
下面我们对比较重要的目录做一些介绍。
-
apis
定义了ve