KubeEye 旨在发现 Kubernetes 上的各种问题,比如应用配置错误、集群组件不健康和节点等问题。主要从以下四方面阐述Kubernetes最佳实践自定义规则,Pod和Container中包含字段、Go-Json-Schema主要参数说明、KubeEye rule.yaml说明、代码层面说明。
1. Pod和Container中包含字段
2. Go-Json-Schema主要参数说明
- 参考文档:Json-Schema参数说明
- Json Schema的类型为:Object,有三个关键字type,properties和required。
- type: 类型
- properties: 定义属性
- required: 必需属性,当属性下是一个数组,需要定义该值,否则可以不定义该值。
3. KubeEye rule.yaml 说明
# 自定义规则必需要checks字段打头(必需项)
checks:
# 自定义参数,可采取驼峰式命名,要能表达检查项含义,当检查内容和检查逻辑不满足时,控制台会打印此信息出来。冒号后面内容表明该参数检测程度。此参数作为代码层面判断检查项。
imageFromUnauthorizedRegistry: warning
# 具体自定义规则,customChecks字段打头(必需项)
customChecks:
# 此处声明和checks下定义需要一致,作用是代码层面检查项和检查逻辑相对应。
imageFromUnauthorizedRegistry:
# promptMessage字段在代码里面已定义,此处作用是运行时,当检查内容和检查逻辑不满足,运行可以显示更加详细字段信息,自定义内容。(必需项)
promptMessage: When the corresponding rule does not match. Show that image from an unauthorized registry.
# 此处开始,是逻辑开始,检查镜像层面等问题,也可以别的问题,比如资源,容器结构层面问题都可以检查。
category: Images
# 检查容器里面的镜像
target: Container
# 遵守schema语法
schema:
'$schema': http://json-schema.org/draft-07/schema
# 针对是所有容器的镜像问题,这一对象类型。
type: object
# 具体逻辑定义,properties包含属性名,该属性名为对应Pod或Container中定义字段,可以参数上面截图内容。
properties:
# 必需包含type和具体的逻辑。
image:
type: string
not:
pattern: ^quay.io
4. 代码层面说明