Velero 二次开发-04
五 本地运行
在开发中本地运行 Velero
在本地运行 Velero 服务器可以加速迭代开发。这样就无需在每次更改时重建 Velero 服务器映像并将其重新部署到集群中。
5.1 使用远程集群在本地运行 Velero
Velero 以 Kubernetes API 服务器作为端点(根据 kubeconfig 配置)运行,因此 Velero 服务器和客户机使用相同的客户机-go 与 Kubernetes 进行通信。这意味着 Velero 服务器可以像在远程集群中运行一样在本地运行。
5.2 先决条件
在运行 Velero 时,您需要确保设置以下所有权限:
- 从源集群和名称空间读取所有数据的访问权限
- 对来自源集群和命名空间的所有数据的读取权限
- 写访问目标集群和命名空间
- 写访问目标集群和命名空间
- 对卷的读/写访问
- 对备份数据的对象存储进行读/写访问
- BackupStorageLocationVelero 服务器的对象定义
- 可选VolumeSnapshotLocation Velero 服务器的对象定义,用于拍摄 PV 快照
5.3 步骤
5.3.1 安装velero
请参阅有关如何在某些特定提供商中安装 Velero 的文档:Install overview
5.3.2 将部署规模缩小到零
使用 velero install 命令将 Velero 安装到集群中后,您将 Velero 部署缩小到 0,这样它就不会同时在远程集群上运行,并可能导致事情不同步:
kubectl scale --replicas=0 deployment velero -n velero
5.3.3 在本地启动Velero服务器
- 要在本地运行服务器,请根据所需的二进制文件使用完整路径。例如,如果您使用 Mac,并使用 AWS 作为提供程序,下面是如何使用完整路径运行从源代码构建的二进制文件:
AWS_SHARED_CREDENTIALS_FILE=<path-to-credentials-file> ./_output/bin/darwin/amd64/velero
.或者,您可以将 velero 二进制文件添加到 PATH 中。 - 启动服务器:velero 服务器 [CLI 标志]。以下 CLI 标志可能有助于自定义,但请参阅 velero server --help 以获取完整详细信息:
- –log-level:设置 Velero 服务器的日志级别(默认信息,使用 debug 进行最多的日志记录)
- –kubeconfig:设置 Velero 服务器用来与 Kubernetes apiserver 通信的 kubeconfig 文件的路径(默认为 $ KUBECONFIG)
- –namespace:Velero 服务器应在其中查找备份、计划、恢复的集合命名空间(默认 velero)
- –plugin-dir:设置Velero服务器查找插件的目录(默认/plugins)
- –plugin-dir 标志要求插件二进制文件存在于本地,并应设置为包含此构建二进制文件的目录。
- –metrics-address:设置暴露 Prometheus 指标的绑定地址和端口(默认:8085)
六 代码标准
6.1 打卡一个pr
当开启拉取请求时,请填写提供模板的清单。这将帮助其他人正确地分类和审查您的拉请求。
6.2 添加更新日志
作者需要在其拉取请求中包含一个更改日志文件。更改日志文件应该是在更改日志/未发布文件夹中创建的新文件。文件应该遵循 pr-用户名的变数命名原则,文件的内容应该是你的文本更新日志。
velero/changelogs/unreleased <- folder
000-username <- file
将其添加到 PR 中。
如果 PR 不保证更改日志,则可以通过在 PR 上应用 changelog-not-required 标签来跳过对更改日志的 CI 检查。
6.3 版权头部
每当修改源代码文件时,版权声明应该更新为我们的标准版权声明。也就是说,它应该读作“ Velero 贡献者的版权”对于新文件,必须添加完整的版权和许可标题。请注意,文档文件不需要版权标题。
6.4 代码
-
日志消息大写。
-
错误消息保持小写。
-
仅对从非 velero 代码直接返回的错误(例如对 Kubernetes 服务器的 API 调用)包装/添加堆栈。
-
errors.WithStack(err)
-
更喜欢使用 Kubernetes 包集中的实用程序。
-
k8s.io/apimachinery/pkg/util/sets
6.5 导包
对于导入,我们使用以下约定:
<group><version><api | client | informer | ...>
Example
import (
corev1api "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
corev1listers "k8s.io/client-go/listers/core/v1"
velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1"
velerov1client "github.com/vmware-tanzu/velero/pkg/generated/clientset/versioned/typed/velero/v1"
)
6.6 Mocks
我们使用一个包来为我们的接口生成模拟。
示例:如果你想改变这个模拟:https://github.com/vmware-tanzu/velero/blob/v1.5.1/pkg/restic/mocks/restorer.go
运行:
go get github.com/vektra/mockery/.../
cd pkg/restic
mockery -name=Restorer
可能需要运行 make update 来更新导入。
6.7 Kubernetes 标签
在生成标签值时,请确保将它们传递到标签中。GetValidName () helper 函数。这将有助于确保值是要存储和查询的适当长度和格式。一般来说,uid 作为标签值持久存在是安全的。此函数与没有限制的注释值无关。
6.8 DCO Sign off
该项目的所有作者保留对其作品的版权。然而,为了确保他们只提交他们有权的作品,我们要求每个人通过签署他们的作品来承认这一点。
本 repo 中的任何版权声明都应将作者指定为“Velero 贡献者”。
要在你的作品上签名,只需要在提交消息的末尾加上这样一行:
Signed-off-by: Joe Beda <joe@heptio.com>
这可以通过 git commit 的 --signoff 选项轻松完成。
通过这样做,您声明您可以证明以下内容:(from https://developercertificate.org/):
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
六 网站引导
6.1 本地运行
对网站进行更改时,请在提交 PR 之前在本地运行该网站并手动验证您的更改。 在项目的根目录,运行:
make serve-docs
这会在容器中运行所有 Hugo 依赖项。 或者,为了快速加载网站,在 velero/site/ 目录下运行:
hugo serve
有关如何在本地运行网站的更多信息,请参阅我们的 Hugo documentation。
6.2 添加博客文章
要添加博客文章,请在 /site/content/posts/ 文件夹中创建一个新的 Markdown (.MD) 文件。一篇博客文章需要以下前言。
title: "Title of the blog"
excerpt: Brief summary of thee blog post that appears as a preview on velero.io/blogs
author_name: Jane Smith
slug: URL-For-Blog
# Use different categories that apply to your blog. This is used to connect related blogs on the site
categories: ['velero','release']
# Image to use for blog. The path is relative to the site/static/ folder
image: /img/posts/example-image.jpg
# Tag should match author to drive author pages. Tags can have multiple values.
tags: ['Velero Team', 'Nolan Brubaker']
例如,在标签字段中包含 author_name 值,以便列出作者帖子的页面可以正常工作,https://velero.io/tags/carlisia-campos/.
理想情况下,每个博客都有一个独特的图像可以在博客主页上使用,但如果您不包含图像,则将使用默认的 Velero 徽标。使用小于 70KB 的图像并将其添加到 /site/static/img/posts 文件夹。
七 文档风格
参考:https://velero.io/docs/v1.5/style-guide/
参考链接
- 点赞
- 收藏
- 关注作者
评论(0)