
KubeLinter:如何检查K8s清单文件和Helm图表
该开源工具可以分析Kubernetes YAML
文件和Helm 图表
,以确保它们遵循最佳实践,重点关注生产就绪性和安全性。以下是如何设置和使用它。
KubeLinter是一款开源工具,可分析 Kubernetes YAML 文件和 Helm 图表
,以确保它们遵循最佳实践,重点关注生产就绪性和安全性
。它对配置的各个方面进行检查,以识别潜在的安全错误配置和DevOps最佳实践
。
通过运行 KubeLinter,您可以获得有关Kubernetes配置文件和 Helm 图表
的有价值的信息。它可以帮助团队在开发过程的早期检测并解决安全问题。KubeLinter 执行的检查的一些示例包括以非 root 用户身份运行容器
、强制执行最小权限
以及通过仅将敏感信息存储在机密中
来正确处理敏感信息。
KubeLinter 根据 Apache License 2.0 获得许可,允许您根据许可条款使用、修改和分发它。
为什么选择 KubeLinter?
KubeLinter 带有合理的默认检查
,但它也是可配置的。您可以根据组织的策略灵活地启用或禁用特定检查
。此外,您可以创建自己的自定义检查
来强制执行特定要求。
当 lint 检查
失败时,KubeLinter
会提供有关如何解决已识别问题的建议。它还返回一个非零退出代码
以指示存在潜在问题。
安装、设置和入门
要开始使用KubeLinter,可以参考官方文档。该文档提供了有关安装、使用和配置 KubeLinter 的详细信息。以下是 KubeLinter 的一些安装选项。
使用Go
通过运行以下命令使用 Go 安装 KubeLinter
:
使用 Homebrew (macOS) 或 LinuxBrew (Linux)
通过运行以下命令,使用 Homebrew 或 LinuxBrew
安装 KubeLinter:
从源码构建
如果您更喜欢从源代码构建 KubeLinter
,请按照以下步骤操作:
KubeLinter 提供不同层的测试,包括go单元测试
、端到端集成测试
和使用bats-core 的端到端集成测试
。您可以运行这些测试来确保 KubeLinter 的正确性和可靠性。
如何使用 KubeLinter
要使用 KubeLinter,您可以首先针对本地 YAML 文件运行它
。只需指定要测试的 YAML 文件的路径,KubeLinter 将执行 linting 检查
。例如。
KubeLinter 的输出将显示任何检测到的问题以及建议的修复步骤
。它还将提供所发现的 lint 错误的摘要。
您可以选择在本地运行它或将其集成到您的 CI 系统中。以下是本地运行 KubeLinter 的说明:
安装 KubeLinter 后,您可以使用 lint 命令
并提供 Kubernetes YAML 文件或包含 YAML 文件的目录的路径。
对于单个 YAML 文件:
对于包含 YAML 文件的目录:
要使用 KubeLinter 进行本地 YAML linting,请按照以下步骤操作:
- 找到要测试安全性和生产就绪性最佳实践的 YAML 文件。
- 运行以下命令,替换
/path/to/your/yaml.yaml为 YAML 文件
的实际路径。格式如下:
下面是一个使用名为 pod 规范文件示例的示例pod.yaml,该文件具有生产就绪性和安全问题
:
将上面的 YAML 内容保存到名为lint-pod.yaml
. 然后,您可以通过运行以下命令来检查该文件:
KubeLinter 将运行默认检查并根据 linting 结果报告建议
。在上面的示例中,输出将显示三个 lint 错误:
要在本地运行 Helm 图表的 KubeLinter
,您需要提供包含该文件的目录的路径chart.yaml
。以下是为 Helm 图表运行 KubeLinter 的命令:
您还可以使用该--format
选项来指定输出格式。例如,对于 JSON 格式使用 –format=json
,对于 SARIF 规范使用 –format=sarif
。
如果您使用预提交框架来管理 git 预提交挂钩,则可以将 KubeLinter 集成为预提交挂钩。将以下配置添加到您的.pre-commit-config.yaml
文件中:
此配置设置kube-linter hook
,它使用 go get
在本地克隆、构建和安装 KubeLinter。
KubeLinter 为不同的操作提供了额外的命令和选项。以下是运行 KubeLinter 命令的一般语法。
kube-linter [资源] [命令] [选项]
-
resource
指定要对其执行操作的资源,例如检查或模板 -
command
指定要执行的操作,例如 lint 或检查列表 -
options
为每个命令指定附加选项。例如,您可以使用-c或--config
选项来指定配置文件。
要查看可用资源、命令和选项的完整列表,您可以使用--help或-h选项。
查找所有资源:
要查找特定资源的可用命令,例如检查:
要查找特定命令的可用选项,例如 lint:
要配置 KubeLinter 运行的检查或创建您自己的自定义检查,您可以使用 YAML 配置文件
。运行 lint 命令时,您可以提供 –config
选项,后跟配置文件的路径。
如果未显式提供配置文件,KubeLinter 将在当前工作目录中按优先顺序查找具有以下文件名的配置文件
:
如果没有找到这些文件,KubeLinter 将使用默认配置。
以下是如何使用特定配置文件运行 lint 命令的示例:
kube-linter lint pod.yaml –config kubelinter-config.yaml
配置文件有两个主要部分
- customChecks 用于配置自定义检查。
- checks 配置默认检查。
要查看所有内置检查的列表,您可以参考KubeLinter 检查文档。
以下是您可以在配置文件中使用的一些配置选项。
禁用所有默认检查。doNotAutoAddDefaults
您可以通过在检查部分中设置为 true 来禁用所有内置检查。
运行所有默认检查。addAllBuiltIn您可以通过在检查部分设置为 true 来运行所有内置检查
运行自定义检查。您可以根据现有模板创建自定义检查。params文档中的每个模板描述都包含有关可与该模板一起使用的参数 ( ) 的详细信息。这是一个例子。
这些是 KubeLinter 中可用的一些配置选项。您可以参考 KubeLinter 文档以获取有关配置和定制的更多详细信息。
结论
KubeLinter 是一个 alpha 版本,这意味着它仍处于开发的早期阶段。因此,未来可能会在命令使用、标志和配置文件格式方面发生重大变化。但是,我们鼓励您使用 KubeLinter 来测试您的环境 YAML 文件、识别问题并为其开发做出贡献。
文章转载自公众号:DevOps云学堂
