ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Velero 历史版本 ark client 命令族详解:从 CLI 参数到客户端配置文件实现

Velero 历史版本 ark client 命令族详解:从 CLI 参数到客户端配置文件实现 Velero 历史版本 ark client 命令族详解从 CLI 参数到客户端配置文件实现【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本指南以仓库内 site/content/docs/v0.7.1/cli-reference/ark_client.md 为核心文档系统讲解 Velero 前身 Heptio Ark 时代ark client命令族的用途、完整参数列表、子命令ark client config get/set的用法并结合当前仓库源码深入解析客户端配置文件的读写机制。读完本文你将掌握该命令族的全部命令行标志含义、配置文件的实际结构与操作行为以及它与ark backup、ark restore等顶层命令之间的组织关系。说明本仓库当前已更名为 Velero但 v0.7.1 版本文档目录 完整保留了 Heptio Ark 时代的 CLI 参考文档命令名为ark默认命名空间为heptio-ark是理解该项目历史演进与 CLI 设计的第一手资料。命令概览ark client是什么根据原文档ark client的 Synopsis 定义为Ark client related commands即“与 Ark 客户端相关的命令”。它是 Ark CLI 中的一个命令分组command group本身不执行具体业务操作而是用于组织和管理客户端侧的配置能力。其唯一的自身选项是-h, --help help for client从当前仓库源码 pkg/cmd/cli/client/config/config.go 的结构可以印证这种“分组命令”的实现方式NewCommand()返回一个cobra.Command其Short描述为Get and set client configuration file values并注册了两个子命令NewGetCommand()与NewSetCommand()——这正是文档中SEE ALSO一节所列出的命令树ark — Back up and restore Kubernetes cluster resources.ark client config — Get and set client configuration file values也就是说ark client的唯一实际职能是作为ark client config及更下一级的get/set命令的父命令容器。命令树与子命令用法ark client命令族完整的层级结构如下ark └── client └── config ├── get └── set读取配置值ark client config get根据 ark_client_config_get.md其用法为ark client config get [KEY 1] [KEY 2] [...] [flags]该命令用于读取客户端配置文件中的键值支持一次传入多个键名。对应源码实现位于 pkg/cmd/cli/client/config/get.go其关键行为包括通过client.LoadConfig()加载配置文件不存在时返回空 map不报错若不传任何 KEY则列出全部键值对并按键名字典序排序后逐行输出key: value格式若传入一个或多个 KEY则按传入顺序逐个查询未设置的键输出key: NOT SET。# 列出客户端配置中的所有键值 ark client config get # 查询指定键 ark client config get namespace features写入配置值ark client config set根据 ark_client_config_set.md其用法为ark client config set KEYVALUE [KEYVALUE]... [flags]对应源码实现位于 pkg/cmd/cli/client/config/set.go关键行为包括至少需要一个KEYVALUE参数由Args: cobra.MinimumNArgs(1)强制校验每个参数按拆分为键值对格式非法时向 stderr 输出WARNING: invalid KEYVALUE: arg并跳过空值即删除若VALUE为空字符串如ark client config set namespace则从配置中删除该键最后统一通过client.SaveConfig(config)落盘。# 设置单个键值 ark client config set namespaceheptio-ark # 一次性设置多个键值 ark client config set featuresEnableCSI cacert/path/to/ca.crt # 删除一个配置项空值即删除 ark client config set namespace完整的继承选项参数表ark client及其全部子命令都会继承父命令ark的全局选项。这些选项在原文档中逐条列出含义如下选项类型说明--alsologtostderr布尔同时将日志写入标准错误stderr与日志文件--kubeconfig string字符串连接 Kubernetes apiserver 所用的 kubeconfig 文件路径若未设置依次尝试环境变量KUBECONFIG与集群内配置in-cluster configuration--log_backtrace_at traceLocationtraceLocation当日志命中file:N时打印堆栈跟踪默认:0--log_dir string字符串非空时将日志文件写入该目录--logtostderr布尔将日志写入标准错误而不是日志文件-n, --namespace string字符串Ark 操作的命名空间默认heptio-ark--stderrthreshold severityseverity达到或超过该级别的日志同时输出到 stderr默认2即 ERROR-v, --v LevelLevel设置 V 级别日志的详细程度--vmodule moduleSpecmoduleSpec以逗号分隔的patternN列表按文件过滤日志级别其中--kubeconfig与-n/--namespace是实际使用中最常涉及的参数ark client的配置操作虽然不直接访问 apiserver但命令树整体继承了这两项以保持与ark backup、ark restore等命令一致的连接配置模型。客户端配置文件的源码级解析虽然 v0.7.1 的原文档只描述了命令与参数未给出配置文件的具体格式但从当前仓库的 pkg/client/config.go 可以还原客户端配置文件的实际读写机制文件位置与格式configFileName()返回配置文件路径为$HOME/.config/velero/config.json参见 pkg/client/config.go。配置文件本身是一个 JSON 键值映射对应源码中的类型定义// VeleroConfig is a map of strings to any for deserializing Velero client config options. type VeleroConfig map[string]anyLoadConfig()在文件不存在时返回空 map不报错存在时用json.Decoder解码SaveConfig()在写入前通过os.MkdirAll(dir, 0700)创建目录并以0600权限打开文件后使用json.Encoder落盘参见 pkg/client/config.go。这意味着配置文件内容是明文 JSON且权限控制较严。get/set 与配置文件的调用关系ark client config get→client.LoadConfig()→ 读取并解码config.jsonark client config set→client.LoadConfig()→ 修改 map →client.SaveConfig()→ 编码回写config.json。两个命令均以“整体读入、整体写回”的方式操作配置文件不存在增量更新。当前实现支持的配置键从 pkg/client/config.go 的常量定义可以看出当前仓库实现中预定义的客户端配置键包括键用途namespace操作命令使用的命名空间静态值namespace-mode命名空间解析模式值为auto时每次调用都从当前 kubeconfig 上下文解析命名空间而非使用静态的namespace值features逗号分隔的功能开关列表Features()方法会按逗号拆分cacert自定义 CA 证书文件路径colorized是否启用彩色输出默认true可通过strconv.ParseBool解析字符串需要说明的是这些键的完整形态属于当前 Velero 实现源码文件版权头为 2021与 v0.7.1 时代 Ark 的配置文件内容未必完全一致但ark client config get/set的“通用键值对读写”模型是贯穿始终的设计即任意KEYVALUE都可以写入预定义键只是提供了类型化读取的便利方法。测试覆盖仓库在 pkg/client/config_test.go 中对该机制进行了测试覆盖进一步印证了配置文件的读写行为是可验证、可回归的既定功能。命令组织与项目更名背景ark client是 Ark CLI 命令树的一部分。从 ark.md 的 Synopsis 可以看到当时的定位Heptio Ark is a tool for managing disaster recovery, specifically for Kubernetes cluster resources.其命令体系与kubectl类似支持ark get backup与ark backup get两种等价写法。ark client在命令树中与以下顶层命令并列见ark.md的SEE ALSOark backup — Work with backupsark create — Create ark resourcesark delete — Delete ark resourcesark describe — Describe ark resourcesark get — Get ark resourcesark plugin — Work with pluginsark restore — Work with restoresark schedule — Work with schedulesark server — Run the ark serverark version — Print the ark version and associated image从仓库现状可以推断该 CLI 参考文档系由 cobra 从命令定义自动生成的帮助文本ark client的相关实现至今仍保留在源码中命令入口在 pkg/cmd/cli/client/config/config.go配置读写在 pkg/client/config.go只是命令名随项目由 Ark 更名为 Velero 而变为velero client默认命名空间也由heptio-ark演进为velero。使用前提与限制本文描述的命令与默认值如heptio-ark命名空间、ark命令名以仓库内 v0.7.1 版本文档为准属于历史版本行为当前 Velero 版本的命令名与配置键应以最新文档为准。配置文件路径$HOME/.config/velero/config.json来自当前仓库源码实现可视为该项目客户端配置文件的现行位置v0.7.1 文档本身未指定路径使用时请以对应版本实际行为为准。ark client本身不做任何备份、恢复等业务操作其价值在于通过ark client config get/set统一管理 CLI 的本地持久化配置便于在脚本与自动化流程中读写命名空间、功能开关、CA 证书等参数。小结ark client命令族虽然短小却是 Ark/Velero CLI 中“客户端本地状态管理”的代表它以get/set两个子命令配合一个 JSON 配置文件实现了零依赖、可脚本化的配置读写。通过对照原文档与仓库源码config.go、get.go、set.go、pkg/client/config.go既能看清 v0.7.1 时代的命令全貌也能追溯到当代 Velero 中该机制的实现细节与演进脉络。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表