【免费下载链接】sofka
A Kubernetes TUI, reimagined in Rust - built on kube-rs and ratatui, async-first from the ground up.
sofka 是一个用 Rust 编写的 Kubernetes TUI(终端界面)工具,基于 kube-rs 和 ratatui 构建,异步优先设计让界面永不阻塞。本文带你一次讲透 sofka 配置体系:TOML/YAML 配置文件、conf.d 拆分、按集群/上下文覆盖,以及:reload热加载机制,新手也能快速上手。
配置文件放在哪里?
sofka 从配置目录读取唯一一个配置文件(详见 docs/configuration.md):
- Linux/macOS:
~/.config/sofka(即$XDG_CONFIG_HOME/sofka) - Windows:
USERPROFILE下的对应目录 - 文件名:
config.toml(默认)、config.yaml或config.yml
TOML 是默认格式,两种格式支持完全相同的设置、校验、按键绑定和覆盖规则。所有配置项都是可选的——空配置等同于没有配置,直接就能用。
配置文件的核心加载逻辑位于 src/config.rs,TOML/YAML 解析与校验在 src/config/document.rs,旧版按键配置的自动迁移(备份为.bak)在 src/config/key_migration.rs。
最小可用的 TOML 配置示例
先给出一份覆盖高频选项的示例,其余可全部省略:
default_namespace = "kube-system" # 兜底命名空间;实际会记住每个上下文上次选择的 ns default_resource = "deployments" readonly = true # 生产环境强烈建议:禁用一切变更操作 favorite_namespaces = ["kube-system", "monitoring"] [skin] name = "gruvbox-dark" # 不写则自动检测深色/浅色 [aliases] dep = "deployments" # 输入 :dep 直达 deployments 列表常用基础选项速查:
| 选项 | 作用 |
|---|---|
readonly | 禁用删除、编辑、扩缩容、shell、插件等所有变更操作 |
hide_header | 隐藏头部与 logo,给视图更多空间 |
compact_mode | 启动即为单行头部、无页脚(Ctrl-E可随时切换) |
mouse | 是否捕获鼠标(滚动/点击/排序),关闭则保留终端原生选中文本 |
terminal_title | 终端标题显示sofka: <context>/<namespace> |
update_check | 每日一次的新版本检查,离线环境可关闭 |
favorite_namespaces | 置顶命名空间,按1–9快速切换 |
皮肤与主题:一处修改全局生效
sofka 内置 Catppuccin、Gruvbox、Solarized、Nord、Dracula、Tokyo Night、One Dark、Rosé Pine、Monokai 等主题,并支持自动深色/浅色检测:
[skin] name = "catppuccin-mocha" background = true # 用皮肤自带背景填充视图;false 则继承终端背景 [skin.colors] # 可选:对单个颜色块做覆盖 red = "#fb4934"所有语义颜色(行状态、严重级别徽章、表头、边框)都从活动调色板派生,所以换一次皮肤,全局立刻统一。运行时输入:skin可实时切换主题。
conf.d 拆分配置:团队共享 + 个人偏好
把配置文件拆到conf.d/目录,实现"团队一份、个人一份":
~/.config/sofka/ ├── config.toml # 基础配置 └── conf.d/ ├── 10-team.yaml # 团队共享(按文件名顺序合并) └── 20-personal.toml # 个人设置,后应用者优先- 目录内所有
*.toml/*.yaml/*.yml按文件名字典序依次合并到基础配置上 - 两种格式可混用;无效的 drop-in 文件会被跳过并给出警告
- 合并发生在集群/上下文覆盖之前,所以覆盖层始终拥有最终决定权
插件列表合并:默认情况下含plugins的文件会整体替换继承的插件列表。要按名字合并,在文件顶层写plugins_merge = "name",并用plugins_remove = ["名字"]删除不需要的继承条目。
按集群/上下文覆盖:生产环境的安全网
这是 sofka 配置最有价值的部分(与 k9s 类似):任意选项都可以针对特定集群或 kubeconfig 上下文单独覆盖。只需在clusters/目录下按名称建立子目录:
~/.config/sofka/ ├── config.toml # 基础配置,全局生效 └── clusters/ └── prod-cluster/ # kubeconfig 中的 *cluster* 名 ├── config.toml # 该集群上的所有上下文 └── prod-admin/ # kubeconfig 中的 *context* 名 └── config.toml # 仅该上下文生效给生产集群上一个"只读 + 浅色皮肤"的保险,只需:
# clusters/prod-cluster/config.toml readonly = true [skin] name = "catppuccin-latte" background = true几个关键细节:
- 合并规则:表(如
[aliases]、[skin.colors])逐键合并;字符串、布尔值和[[plugins]]等数组默认整体替换 - 目录命名:kubeconfig 名称中字母/数字/
./_/-以外的字符都替换为-(例如 EKS 的 ARN 上下文会变为arn-aws-eks-...-cluster-prod形式) - 每层只放一个配置文件:同层出现两个受支持格式会报冲突
- 故障隔离:基础配置损坏时启动回退默认值;覆盖文件损坏只跳过该文件并警告,不会拖垮全局
- 不同层可以使用不同格式(TOML 基础 + YAML 覆盖),但同一目录不能混放
注:上图即为 sofka 实际运行界面,头部
Context行会显示[read-only]标记,直观提示当前处于只读覆盖。
热加载::reload与:config双命令
sofka 不需要重启就能应用绝大多数配置改动:
| 命令 | 作用 |
|---|---|
:reload | 重新读取基础配置、conf.d、集群/上下文覆盖文件 |
:config | 查看当前所有配置来源、合并结果和警告 |
热加载的典型行为:
:ctx切换上下文时覆盖层会被重新读取,所以编辑覆盖文件后直接切回该上下文即可生效- 需要重启的设置很少(如
[journal]文件路径类),文档中会明确标注 - 基础配置热加载失败时保留上一次有效配置,不会让你掉线
- 类型错误时回退到基础配置值并给警告
YAML 格式速记
如果你偏好 YAML(例如配合 Home Manager 模块),字段名完全相同:TOML 的[keys.table]变成keys: {table: ...},[[plugins]]变成plugins下的列表。几条规则:
- 单文档、根为映射;空文件/纯注释视为默认
- 显式
null、~是错误;不支持 YAML 合并键<<和自定义 tag - 颜色值与通配键务必加引号:
red: "#fb4934"、"*" : ...
新手配置三步走清单 🚀
- 起步:只写
default_resource+[skin],其余用默认值 - 加固:为生产集群建
clusters/<cluster>/config.toml,写死readonly = true - 分工:团队公共设置放
conf.d/10-team.toml,个人偏好放config.toml或conf.d/20-personal.toml - 验证:改完输入
:config检查来源与警告,再:reload立即生效
更多配置项([views]、[thresholds]、[keys]、[logs]、[guardrails]等)各有专篇文档,可结合 docs/keybindings.md、docs/views.md、docs/safety.md 查阅。
【免费下载链接】sofka
A Kubernetes TUI, reimagined in Rust - built on kube-rs and ratatui, async-first from the ground up.
相关推荐
GraphQL Code Generator配置完全参考:schema、documents与plugins三大字段一次讲透
GraphQL Code Generator配置完全参考:schema、documents与plugins三大字段一次讲透 GraphQL Code Gener
开发工具Lore Server 配置参考:分层 TOML 配置、环境变量覆盖与插件后端全解析
Lore Server 配置参考:分层 TOML 配置、环境变量覆盖与插件后端全解析 Lore 下一代开源版本控制系统 的服务端二进制 loreserver 通
版本控制后端Grafana Loki 配置参数完全参考:从 loki.yaml 到运行时热加载
Grafana Loki 配置参数完全参考:从 loki.yaml 到运行时热加载 Grafana Loki 以 YAML 文件(通常称为 loki.yaml
可观测性日志分析后端微服务对象存储云原生
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考