Velero 二次开发-04

网友投稿 747 2022-05-30

五 本地运行

在开发中本地运行 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= ./_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 添加更新日志

velero/changelogs/unreleased <- folder 000-username <- file

将其添加到 PR 中。

如果 PR 不保证更改日志,则可以通过在 PR 上应用 changelog-not-required 标签来跳过对更改日志的 CI 检查。

6.3 版权头部

6.4 代码

日志消息大写。

错误消息保持小写。

仅对从非 velero 代码直接返回的错误(例如对 Kubernetes 服务器的 API 调用)包装/添加堆栈。

errors.WithStack(err)

Velero 二次开发-04

更喜欢使用 Kubernetes 包集中的实用程序。

k8s.io/apimachinery/pkg/util/sets

6.5 导包

对于导入,我们使用以下约定:

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

要在你的作品上签名,只需要在提交消息的末尾加上这样一行:

Signed-off-by: Joe Beda

这可以通过 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']

理想情况下,每个博客都有一个独特的图像可以在博客主页上使用,但如果您不包含图像,则将使用默认的 Velero 徽标。使用小于 70KB 的图像并将其添加到 /site/static/img/posts 文件夹。

七 文档风格

参考:https://velero.io/docs/v1.5/style-guide/

参考链接

https://github.com/tilt-dev/tilt

https://tilt.dev/

https://velero.io/docs/v1.5/tilt/

Kubernetes 网站

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python 爬虫进阶必备 | DES加密与Base64编码实例
下一篇:中小项目用ELK做日志?我准备玩点新花样
相关文章