K8s神器之YAML配置检查
Kubeconform项目
Kubeconform 是一个 Kubernetes 清单验证工具。Kubernetes 的 API 使用 OpenAPI(以前称为 swagger)规范在签入主 Kubernetes 存储库的文件中进行描述。
由于针对 OpenAPI 模式执行验证的工具的状态,项目通常首先将 OpenAPI 模式转换为 JSON 模式。
Kubeconform
依赖于 kubernetes-json-schema 的一个分支,该分支更加精心地保持最新状态,并且包含所有最新版本的 Kubernetes 的模式。
旧版本的链接地址:https://github.com/instrumenta/kubernetes-json-schema
安装Kubeconform
$ curl -O -L https://github.com/yannh/kubeconform/releases/download/v0.6.4/kubeconform-linux-amd64.tar.gz
$ tar xvf kubeconform-linux-amd64.tar.gz -C /tmp
$ mv /tmp/kubeconform /usr/local/bin
在线使用
说明:所谓的在线与离线是指kubeconform使用的
kubernetes-json-schema
库是否内网可达。默认访问 https://github.com/yannh/kubernetes-json-schema/
$ kubeconform -verbose nginx.yaml
nginx.yaml - Service nginx is valid
nginx.yaml - Deployment nginx is valid
$ kubeconform -verbose -kubernetes-version 1.19.0 nginx.yaml
nginx.yaml - Service nginx is valid
nginx.yaml - Deployment nginx is valid
$ kubeconform -verbose -strict nginx.yaml
nginx.yaml - Service nginx is valid
nginx.yaml - Deployment nginx is valid
$ kubeconform -cache /tmp/kubeconform_cache -verbose nginx.yaml
nginx.yaml - Service nginx is valid
nginx.yaml - Deployment nginx is valid
上面描述四个参数为最常用的
-verbose
:打印所有资源的结果。不加该参数,校验yaml正常则不输出任何信息-kubernetes-version
: 指定 k8s 版本信息,然后使用最新的版本进行校验。只能校验 1.19.0 以及以上版本;-strict
:严格校验yaml文件里面所有字段。没有添加该字段的话,只校验必选项-cache
:将在线验证的openAPI下载到cache路径下,下次校验相同k8s版本且资源类型一致话,执行使用cache的内容进行校验
离线使用
大部分生产环境都是不通公网的,所有上述的方法走不通。
解决方法:
- 将
kubernetes-json-schema
下载到本地,然后将这个目录放在文件共享服务器 kubeconform
指定使用文件共享服务器地址
第一步:将 kubernetes-json-schema
下载到本地,然后将这个目录放在文件共享服务器
$ curl -L -O https://github.com/yannh/kubernetes-json-schema/archive/refs/heads/master.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 2098M 0 0 3884k 0 --:--:-- 0:09:13 --:--:-- 4752k
$ unzip -d /data master.zip
$ docker run -d --name fileserver -p 80:5100 -v /data:/app/caddy/data jiaxzeng/fileserver:v1.2.0-alpine3.16
第二步:kubeconform
指定使用文件共享服务器地址
$ kubeconform -verbose -strict -kubernetes-version 1.23.3 -schema-location http://192.168.32.127/kubernetes-json-schema nginx.yaml
nginx.yaml - Service nginx is valid
nginx.yaml - Deployment nginx is valid
-schema-location
:指定文件服务器地址
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2022-03-11 Kafka调整ISR顺序