sublime text 本身不带 kubernetes schema 校验能力,必须安装 lsp 和 yaml language server 插件,配置项目级 .sublime-project 文件中的 yaml.schemas 指向远程 openapi schema(如 master-standalone-strict/all.json),并重启文件才能启用字段名、类型及必填项校验。

Sublime Text 本身不带 Kubernetes Schema 校验能力
它默认只做缩进和冒号匹配,apiVersion、kind、spec.containers[].ports 这些字段不会被验证是否合法,也不会提示 replicas 应为整数而非字符串。所谓“Schema 强校验”,必须靠外部 JSON Schema + 语言服务器(LSP)驱动,Sublime 自身不解析 Kubernetes OpenAPI 定义。
必须装 Red Hat YAML 插件并手动配 yaml.schemas
VSCode 用户常误以为 Sublime 也能直接复用同套配置,但 Sublime 没有原生 yaml.schemas 支持 —— 它依赖 YAML Language Server + LSP 插件 才能加载远程 Schema。操作要点:
- 用
Package Control: Install Package装LSP和YAML Language Server(注意不是 “YAML” 或 “Better YAML”) - 打开
Preferences → Package Settings → LSP → Servers → yaml-language-server,确认已启用 - 在项目根目录建
.sublime-project,填入:{ "settings": { "LSP": { "yaml-language-server": { "settings": { "yaml": { "schemas": { "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master-standalone-strict/all.json": ["**/*.yaml", "**/*.yml"] } } } } } } } - 保存后必须关闭再重开文件,否则缓存不刷新,
apiVersion: apps/v1不会触发补全
yaml.schemas 路径写错就等于没配
常见失效原因不是插件没装,而是路径没对上。比如:
- 写成
"file:///path/to/local/schema.json":本地路径需绝对且可读,且 Sublime 不自动下载更新 - 用
"*.yaml"而非"**/*.yaml":无法匹配manifests/deploy.yaml这类子目录文件 - 把配置塞进
Preferences.sublime-settings顶层:LSP 不认,必须放在项目级或服务器专属配置里 - URL 拼错,比如漏掉
-strict后缀:会导致volumeClaimTemplates等字段不校验
Schema 校验生效后仍要分层验证
JSON Schema 只管字段名、类型、必填项,不检查业务逻辑。例如:
-
selector.matchLabels和template.metadata.labels键值完全一致?Schema 不管 -
image: nginx:laetst(拼错 latest)?Schema 认为合法,因为image字段类型是 string -
replicas: "3"?Schema 可能放行(取决于所用 schema 版本),但 kube-apiserver 会拒绝
真正防炸集群,得靠 kubectl apply --dry-run=client -f file.yaml 构建系统配合 BracketHighlighter 对比 labels 块 —— Schema 是第一道过滤网,不是终点。











