Kubernetes 清单 Linter
Lint Kubernetes YAML 根据集群强化最佳实践进行清单,在浏览器中完全离线。
结果
Kubernetes 清单通常会在拉取请求中进行目视审查,这意味着同样的一些强化错误会不断地进入生产环境:没有内存限制的部署最终会被 OOM 杀死并带有一个节点,容器会以 root 身份运行,因为没有人设置 runAsNonRoot,或者固定到像“:latest”这样的镜像标签的 Pod 在部署过程中会默默地发生变化。当您粘贴清单时,该 linter 会捕获此类问题,而无需正在运行的集群、kubectl 上下文或任何凭据。
在底层,它包括一个专门为 Kubernetes 实际使用的 YAML 实际子集编写的小型手动 YAML 解析器:`---` 分隔的文档、基于缩进的嵌套、`key: value` 和嵌套块映射、`-` 序列项,包括映射列表、带引号和不带引号的标量、注释以及用于多行 ConfigMap 值或注释等内容的 `|`/`>` 块标量。不涉及外部 YAML 库——解析器和规则引擎都与该工具捆绑在一起,并完全在浏览器中运行。
该规则表以众所周知的集群强化指南(CIS Kubernetes 基准、kube-score 和 Pod 安全标准“受限”配置文件)为模型,并检查每个容器是否缺少资源请求/限制、可以以 root 或特权模式运行的容器、长时间运行的工作负载(Deployments、StatefulSets、DaemonSets)上缺少活动性和就绪性探测、暴露主机文件系统的 hostPath 卷挂载、hostNetwork 使用情况以及不可复制的“:最新”或未标记的容器图像。结果按文档和容器进行分组,每个结果都有明确的错误/警告严重性,这样您就可以区分哪些是真正有风险的,哪些只是最佳实践的推动。
它适用于直接从 Helm 模板渲染或“kustomize build”输出粘贴的单个清单或整个多文档文件,了解 Pod、Deployment、StatefulSet、DaemonSet、Job、ReplicaSet 和 CronJob 资源。因为一切都在本地运行,所以可以安全地粘贴包含内部服务名称、实际资源大小或您不想发送到第三方 API 的任何其他内容的清单,这对于快速提交前健全性检查、代码审查辅助或只是了解实践中的“强化”实际上是什么样子很有用。