kubeval结合kube-score实现k8s yaml文件校验

news2025/3/27 7:44:07

一、工具定位与互补性

工具核心能力检查范围
kubeval校验 YAML 语法和 API 版本兼容性确保资源配置符合 Kubernetes 版本规范
kube-score检查安全配置与最佳实践识别资源限制缺失、权限过高等问题

协同作用

  • kubeval 确保配置文件的语法正确性,避免低级错误导致部署失败。

  • kube-score 确保配置遵循安全与性能最佳实践,降低生产环境风险。

二、整合校验流程

1. 本地手动校验
# 步骤 1:使用 kubeval 检查语法和 API 版本
kubeval --strict --exit-on-error ./manifests/*.yaml

# 步骤 2:使用 kube-score 检查最佳实践
kube-score score --exit-one-on-warning ./manifests/*.yaml
2. 自动化脚本整合

创建 validate.sh 脚本,一键运行双校验:

#!/bin/bash

# 检查 kubeval
echo "Running kubeval..."
kubeval --strict --exit-on-error $@
if [ $? -ne 0 ]; then
  echo "kubeval validation failed!"
  exit 1
fi

# 检查 kube-score
echo "Running kube-score..."
kube-score score --exit-one-on-warning $@
if [ $? -ne 0 ]; then
  echo "kube-score validation failed!"
  exit 1
fi

echo "All checks passed!"

使用方式

./validate.sh ./manifests/deployment.yaml

三、CI/CD 流水线集成

1. GitHub Actions 示例
name: Kubernetes Config Validation
on: [push]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # 步骤 1:kubeval 校验
      - name: Run kubeval
        uses: instrumenta/kubeval-action@v1
        with:
          files: ./k8s/*.yaml
          kubernetes_version: "1.27"
          strict: true

      # 步骤 2:kube-score 校验
      - name: Run kube-score
        uses: docker://zegl/kube-score
        with:
          args: score --exit-one-on-warning ./k8s/*.yaml
2. GitLab CI 示例
stages:
  - validate

kubeval-check:
  stage: validate
  image: garethr/kubeval
  script:
    - kubeval --strict --exit-on-error ./k8s/*.yaml

kube-score-check:
  stage: validate
  image: zegl/kube-score
  script:
    - kube-score score --exit-one-on-warning ./k8s/*.yaml

四、校验场景与示例

1. 校验 Helm 渲染后的模板
# 渲染 Helm Chart 并校验
helm template my-chart | tee /dev/tty | kubeval --strict -
helm template my-chart | tee /dev/tty | kube-score score -
2. 忽略特定规则
# 忽略 kubeval 的缺失 Schema 警告
kubeval --ignore-missing-schemas deployment.yaml

# 忽略 kube-score 的资源限制检查
kube-score score --ignore-test container-resources deployment.yaml

五、校验结果处理

1. kubeval 典型问题
  • 错误示例

    ERR - deployment.yaml - my-app: spec.replicas: Invalid type. Expected: integer, given: string

    修复:将 spec.replicas 的值从字符串 "3" 改为整数 3

2. kube-score 典型问题
  • 错误示例

    CRITICAL: Container Resources (my-container): CPU limit is not set

    修复:添加 resources.limits.cpu 字段。

六、进阶用法

1. 自定义校验规则
  • kubeval:使用本地 Schema 文件校验私有 CRD:

    kubeval --schema-location=file:///schemas --strict deployment.yaml
  • kube-score:定义自定义规则文件(custom-rules.yaml):

    - id: require-annotations
      description: All resources must have 'owner' annotation
      severity: CRITICAL
      resource: "*"
      field: metadata.annotations.owner
      value: required

    运行

    kube-score score -r custom-rules.yaml deployment.yaml
2. 输出格式与报告
  • JSON 报告

    kubeval --output=json deployment.yaml > kubeval-report.json
    kube-score score -o json deployment.yaml > kube-score-report.json
  • CI 友好格式

    kubeval --output=tap deployment.yaml
    kube-score score --output-format=ci deployment.yaml

七、总结

整合优势

  • 全面覆盖:从语法到安全配置的全方位检查。

  • 快速反馈:在开发阶段提前拦截问题,减少调试时间。

  • 自动化保障:通过 CI/CD 强制校验,确保生产配置合规。

推荐流程

  1. 本地开发阶段:使用脚本或 IDE 插件实时校验。

  2. 代码提交时:通过 Git 钩子(pre-commit)触发校验。

  3. CI/CD 流水线:强制阻断未通过校验的部署。

通过结合 kubeval 和 kube-score,可显著提升 Kubernetes 配置的健壮性,降低运维风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2321456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux驱动开发-①platform平台②MISC字符驱动框架③input框架

Linux驱动开发-①platform平台②MISC字符驱动框架③input框架 一,platform1.1 platform框架(设备树下)1.2 platform框架(配置设备函数) 二,MISC字符驱动框架三,input框架 一,platfor…

【mysql】唯一性约束unique

文章目录 唯一性约束 1. 作用2. 关键字3. 特点4. 添加唯一约束5. 关于复合唯一约束 唯一性约束 1. 作用 用来限制某个字段/某列的值不能重复。 2. 关键字 UNIQUE3. 特点 同一个表可以有多个唯一约束。唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯…

常见中间件漏洞:Jboss篇

CVE-2015-7501 环境搭建 cd vulhub-master/jboss/JMXInvokerServlet-deserialization docker-compose up -d 过程 访问网址,存在页面说明接口存在且存在反序列化漏洞 http://8.130.17.222:8080/invoker/JMXInvokerServlet 2.下载 ysoserial ⼯具进⾏漏洞利⽤…

2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)

龙卷风优化算法(Tornado optimizer with Coriolis force)是发表在中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:11.7)的2025年智能优化算法 01.引言 当自然界的狂暴之力,化身数字世界的智慧引擎&…

3.24-3 接口测试断言

一.postman 断言 1.断言再test中 #状态码是否等于200 tests["Status code is 200"] responseCode.code 200; #断言响应时间小于200ms tests["Response time is less than 200ms"] responseTime < 200; #断言响应体包含内容 tests["Body…

DeepSeek面试——模型架构和主要创新点

本文将介绍DeepSeek的模型架构多头潜在注意力&#xff08;MLA&#xff09;技术&#xff0c;混合专家&#xff08;MoE&#xff09;架构&#xff0c; 无辅助损失负载均衡技术&#xff0c;多Token 预测&#xff08;MTP&#xff09;策略。 一、模型架构 DeepSeek-R1的基本架构沿用…

Python----计算机视觉处理(Opencv:图像亮度变换)

一、图像亮度变换 亮度调整&#xff1a;图像像素强度整体变高或者变低。 对比度调整&#xff1a;图像暗处像素强度变低&#xff0c;图像亮处像素强度变高&#xff0c;从而拉大中间某个区域范围的显示精 度。 A&#xff1a;原图 …

无人机动平衡-如何在螺旋桨上添加或移除材料

平衡无人机螺旋桨是一项精细的工作&#xff0c;直接影响飞行稳定性和组件寿命。不同的方法适用于不同的情况&#xff0c;螺旋桨的材料和尺寸以及所需调整的幅度都会影响选择的方法。 本文将深入探讨添加如胶水和胶带等材料的方法&#xff0c;以及通过打磨和修剪来移除质量的方…

基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行步骤

该项目是基于python/django/vue开发的房屋租赁系统/租房平台&#xff0c;作为本学期的课程作业作品。欢迎大家提出宝贵建议。给师弟开发的课程作业&#xff0c;技术学习可以留言哦 功能介绍 平台采用B/S结构&#xff0c;后端采用主流的PythonDjango进行开发&#xff0c;前端采…

涨薪技术|k8s设计原理

01k8s介绍 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化 工作负载和服务&#xff0c;有助于实现声明性配置和自动化。它有一个庞大、快速增长的生态系统。Kubernetes 服务、支持和工具广泛可用。Kubernetes 这个名字起源于希腊语&#xff0c;意思是舵…

基于FPGA的16QAM+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 16QAM调制解调原理 2.2 帧同步 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 vivado2019.2仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 设置SNR12db 将FPGA数据导入到MATLAB显…

QuecPython 外设接口之GPIO应用指南

基础知识 了解GPIO基础知识更有益于我们使用它。 框图 GPIO&#xff08;通用输入输出&#xff09;是指一种通用的数字输入/输出接口&#xff0c;用于与外部电子元件或设备进行通信。它通常存在于微处理器、微控制器和其他嵌入式系统中。 物理电路结构如下图所示&#xff1a…

Spring Boot 整合 Nacos 注册中心终极指南

在微服务架构中&#xff0c;配置管理和动态路由是核心需求。Nacos 作为阿里巴巴开源的动态服务发现、配置管理和服务管理平台&#xff0c;能够帮助开发者实现配置热更新、多环境共享配置以及动态路由管理。本文将结合 Spring Boot 和 Spring Cloud Gateway&#xff0c;手把手教…

SQLServer列转行操作及union all用法

1.创建测试表及数据sql如下 create table ScoresTable( Name varchar(50), ChineseScore int, MathScore int ) insert into ScoresTable values(小张,90,95) insert into ScoresTable values(小王,98,99) 2.表中查询结果如下 3.现需列转行显示&#xff0c;每行显示 姓名…

【GL010】C++

1.C中的const关键字有哪些用法&#xff1f; 1.修饰变量&#xff1a;表示变量的值不可修改。 const int a 10; 2.修饰指针&#xff1a; const int* p&#xff1a; // 指针指向的内容不可修改。 int* const p&#xff1a; // 指针本身不可修改。 const int* const…

(Arxiv-2025)MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏

MagicDistillation&#xff1a;用于大规模人像少步合成的弱到强视频蒸馏 paper是HKUST发布在Arxiv 2025的工作 paper title&#xff1a;MagicDistillation: Weak-to-Strong Video Distillation for Large-Scale Portrait Few-Step Synthesis Project page&#xff1a;地址 Abst…

Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表

目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…

Simple-BEV的bilinear_sample 作为view_transformer的解析,核心是3D-2D关联点生成

文件路径models/view_transformers 父类 是class BiLinearSample(nn.Module)基于https://github.com/aharley/simple_bev。 函数解析 函数bev_coord_to_feature_coord的功能 将鸟瞰图3D坐标通过多相机&#xff08;针孔/鱼眼&#xff09;内外参投影到图像特征平面&#xff0…

同一个局域网的话 如何访问另一台电脑的ip

在局域网内访问另一台电脑&#xff0c;可以通过以下几种常见的方法来实现&#xff1a; ‌直接通过IP地址访问‌&#xff1a; 首先&#xff0c;确保两台电脑都连接在同一个局域网内。获取目标电脑的IP地址&#xff0c;这可以通过在目标电脑上打开命令提示符&#xff08;Windows系…

基于SpringBoot的名著阅读网站

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…