Velero 二次开发-02

网友投稿 524 2022-05-29

三 使用 Tilt 进行快速迭代 velero 开发

3.1 概要

本文档描述了如何将 Tilt 与任何集群一起使用,以实现简化的工作流,从而提供简单的部署和快速的迭代构建。这种设置允许继续部署 Velero 服务器,如果指定,则允许任何提供程序插件或 restic daemonset。它通过以下方式完成这项工作:

部署必要的 Kubernetes 资源,例如 Velero CRD 和 Velero 部署

为 Velero 和(如果指定)提供程序插件构建本地二进制文件作为 local_resource

调用 docker_build 将任何二进制文件实时更新到容器/初始化容器中并触发重新启动

Tilt 会在 velero/tilt-resources 下寻找配置文件。此目录中的大多数文件都被 gitignored 忽略,因此您可以根据需要配置您的设置。

3.2 先决条件

Docker v19.03或更新的

Kubernetes cluster v1.10或更高版本(不一定是 Kind)

Tilt v0.12.0或更新版本

在本地克隆 Velero 项目存储库

访问 S3 对象存储

克隆您想要更改和部署的任何提供程序插件 (可选的,必须配置为由 Velero Tilt 的设置部署,更多信息见下)

注意: 要正确配置你使用的任何插件,请参考插件文档。

3.3 入门

3.3.1 配置

将 velero/tilt-resources/examples 下的所有示例文件复制到 velero/tilt-resources 中。

配置 velero_v1_backupstoragelocation.yaml 文件和存储凭证/密钥的云文件。

运行tilt up

3.3.2 创建 tilt 设置文件

创建一个名为tilt-settings.json 的配置文件,并将其放在velero/tilt-resources 的本地副本中。或者,您可以复制并粘贴在 velero/tilt-resources/examples 中找到的示例文件。

例如:

{ "default_registry": "", "enable_providers": [ "aws", "gcp", "azure", "csi" ], "providers": { "aws": "../velero-plugin-for-aws", "gcp": "../velero-plugin-for-gcp", "azure": "../velero-plugin-for-microsoft-azure", "csi": "../velero-plugin-for-csi" }, "allowed_contexts": [ "development" ], "enable_restic": false, "create_backup_locations": true, "setup-minio": true, "enable_debug": false, "debug_continue_on_start": true }

3.3.3 tilt-settings.json 字段

default_registry:(String, default=”"),如果你需要推送镜像到镜像仓库需要改字段,更详细可参考:Tilt *documentation

provider_repos:(Array[]String, default=[]),您要更改的所有提供程序插件的路径列表。每个提供者必须有一个tilt-provider.json 文件来描述如何构建提供者。

enable_providers (Array[]String, default=[]):要启用的提供程序插件列表。更多详细信息请参阅提供程序插件。注意: 当不对插件进行更改时,不需要将它们加载到 Tilt 中: 可以在 Velero 部署中指定一个现有的映像和版本,Tilt 将加载这些内容。

allowed_contexts (Array, default=[]):允许 Tilt 使用的 kubeconfig 上下文列表。有关更多详细信息,请参阅关于 *allow_k8s_contexts 的 Tilt 文档。注意: Kind 是自动允许的。

enable_restic (Bool, default=false):指示是否部署restic Daemonset。如果设置为 true,Tilt 将查找包含 Velero restic DaemonSet 配置的 velero/tilt-resources/restic.yaml 文件。

create_backup_locations (Bool, default=false):指示是否创建一个或多个备份存储位置。如果设置为 true,Tilt 将查找 velero/tilt-resources/velero_v1_backupstoragelocation.yaml 文件,其中至少包含一个 Velero 备份存储位置的配置。

setup-minio (Bool, default=false):如果要在集群内运行的 Minio 实例中配置备份存储位置,请将此配置为 true。

enable_debug (Bool, default=false):如果要使用 Delve 调试 velero 进程,请将此配置为 true。

debug_continue_on_start (Bool, default=true):如果您希望 velero 进程在调试模式下在启动时继续,请将此配置为 true。请参阅 Delve CLI documentation 文档。

3.4 创建要部署的 Kubernetes 资源文件

在 velero/tilt-resources/examples 目录中,提供了所有需要的 Kubernetes 资源文件,以便随时使用示例。你只需要将它们移动到 velero/tilt-resources 级别。

因为 Velero Kubernetes 的部署和恢复的 DaemonSet 包含所有要使用的插件的配置,所以这些资源的文件应该由用户提供,因此您可以选择加载哪个提供者插件作为 init 容器。目前,所提供的样例文件已经配置了 Velero 支持的所有插件,可以根据需要随意删除任何插件。

为了使 Velero 完全运行,它还需要至少一个备份存储位置。提供了一个示例文件,需要使用对象存储的特定配置对其进行修改。请参阅下一小节以获得更多关于此的详细信息。

3.5 配置一个backup storage location

您必须配置 velero/tilt-resources/velero _ v1 _ backupstoragellocation。根据您的存储提供程序使用适当的值。参考plugin documentation,了解特定提供者的备份存储位置配置需要哪些字段/值对。

下面是为 Velero 配置备份存储位置的一些方法。

3.5.1 使用公有云存储

按照提供程序文档来配置存储。我们有一个所有已知对象存储提供程序的列表,以及相应的 Velero 插件。list of all known object storage providers

3.5.2 使用MinIO作为对象存储

注意:要将 MinIO 用作对象存储,您需要使用 AWS plugin,并将存储位置配置为将 spec.provider 设置为 aws,将 spec.config.region 设置为 minio。例子:

spec: config: region: minio s3ForcePathStyle: "true" s3Url: http://minio.velero.svc:9000 objectStorage: bucket: velero provider: aws

以下是使用 MinIO 作为存储的两种方法:

作为在集群内运行的 MinIO 实例(不要在生产环境中这样做!)

在tilt-settings.json 文件中,设置“setup-minio”:true。这将配置一个 Kubernetes 部署,其中包含集群内正在运行的 MinIO 实例。在集群外公开 MinIO 需要额外的步骤( extra steps)。

要访问这个存储,您需要使用 kubectl port-forward-n svc/MinIO 9000将 MinIO 端口转发到本地计算机,从而在集群之外暴露 MinIO。通过在 BSL 配置中添加 publicUrl: http://localhost:9000,更新 BSL 配置,将其作为其“公共 URL”。这对于下载备份文件是必要的。

注意:使用此设置,当您的集群终止时,其中的存储和任何备份/恢复也会终止。

作为在 Docker 容器中本地运行的独立 MinIO 实例 请参阅these instructions以在您的计算机上本地运行 MinIO,作为独立的而不是在 Pod 上运行它。

请参阅我们的locations documentation以了解更多备份位置的工作原理。

3.6 配置提供者凭据(secret)

无论您使用什么对象存储提供程序,都要在 velero/tilt-resources/cloud 文件中配置凭据。阅读插件文档,了解提供者的凭据需要哪些字段/值对。Tilt 文件将调用 Kustomize 在硬编码的密钥 secret.cloud-credentials 下创建秘密。名称空间中的 data.cloud。在 velero/tilt-resources/examples/cloud 中,有一个为 MinIO 存储凭证正确格式化的示例凭证文件。

3.7 使用 Delve 配置调试

如果您希望调试 Velero 进程,可以通过将字段 enable _ debug 设置为 true 在 tilt-resources/tile-settings 中启用调试模式。Json 文件。这将使您能够使用深入来调试进程。通过启用调试模式,将在调试模式下构建 Velero 可执行文件(使用 flags-gcflags = “-n-l”禁用优化和内联) ,并在使用 dlv exec的 Velero 部署中启动该进程。

调试服务器将接受端口2345上的连接,而 Tilt 被配置为将该端口转发到本地计算机。一旦 Tilt 运行并且 Velero 资源准备就绪,您就可以连接到调试服务器开始调试。要连接到会话,可以通过在本地运行 dlv connect 127.0.0.1:2345来使用深入的 CLI。有关如何使用深入研究的更多指导,请参阅 Delve CLI documentation。钻研也可以在许多editors and IDEs.

默认情况下,当处于调试模式时,Velero 进程将在启动时继续。这意味着进程将一直运行,直到设置了断点。可以通过在倾斜资源/平铺设置中将字段 debug _ continue _ on _ start 设置为 false 来禁用此选项。Json 文件。当此设置被禁用时,Velero 进程将不会继续运行,直到通过您的深入会话发出一个 continue 指令。

退出调试会话时,CLI 和编辑器集成通常会询问是否应该停止远程进程。保持远程进程运行并断开与调试会话的连接非常重要。通过停止远程进程,这将导致 Velero 容器停止和荚重新启动。如果正在进行备份,那么这些备份将处于不新鲜状态,因为在 Velero pod 重新启动时它们不会恢复。

3.8 运行Tilt

要启动您的开发环境,请运行:

tilt up

这将输出地址到一个网络浏览器界面,在那里你可以监视倾斜的状态和每个倾斜资源的日志。经过短暂的时间后,您应该已经有了一个正在运行的开发环境,现在应该能够创建备份/恢复并完全操作 Velero 了。

注意:退出 Tilt 后运行倾斜向下将 Tiltfile 中指定的will delete all resources

提示:为 velero/_tuiltbuild/local/velero 创建别名,您不必运行 make local 来获得 Velero CLI 的更新版本,只需使用别名即可。

请参阅文档how Velero works.

3.9 提供插件

Velero 二次开发-02

提供者必须提供一个tilt-provider.json 文件来描述如何构建它。下面是一个例子:

{ "plugin_name": "velero-plugin-for-aws", "context": ".", "image": "velero/velero-plugin-for-aws", "live_reload_deps": [ "velero-plugin-for-aws" ], "go_main": "./velero-plugin-for-aws" }

3.10 实时更新

每个配置为由 Velero 的 Tilt 设置部署的提供者插件都有一个 live _ reload_deps 列表。这定义了 Tilt 应该监视的文件和/或目录的更改。修改依赖项后,Tilt 在本地计算机上重新构建提供程序的二进制文件,将二进制文件复制到 init 容器,并触发 Velero 容器的重新启动。这比为每次更改重新生成容器映像要快得多。它还有助于保持每个开发映像的大小尽可能小(容器映像不需要整个 go 工具链、源代码、模块依赖性等)。

Kubernetes 对象存储服务 OBS

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

上一篇:部署数据库1
下一篇:Posix线程 它们那一大家子事儿,要觉得好你就收藏进被窝慢慢看(2)
相关文章