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:指定文件服务器地址

posted @   jiaxzeng  阅读(601)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
历史上的今天:
2022-03-11 Kafka调整ISR顺序
点击右上角即可分享
微信分享提示