了解 KubeLinter 的实际应用
在本实训演示中了解命令行工具的工作原理。
为什么要用 KubeLinter?
Kubernetes,又叫 K8s,因其卓越的部署、管理和扩展容器化应用的能力而广受欢迎,但其保护容器的能力却鲜有人知。Kubernetes 配置通常也在 YAML 文件中定义,这些文件是人类可读的,但仍不容易理解和大规模生成有效配置。仅在复杂的 YAML 中进行静态验证无法轻易捕获错误和违规行为,从而可能会暴露安全问题。
而安全正是重中之重。
根据红帽的 2021 年 Kubernetes 采用、安全和市场趋势报告,超过一半的受访者表示,出于安全考虑,他们推迟将 Kubernetes 应用部署到生产环境中,其中 94% 的人在 2020 年经历了至少一起与 Kubernetes 相关的安全事件。这主要是由于人为错误造成的,其中手动输入的错误配置占报告案例的 67%。
而这,正好就是 KubeLinter 的用武之地。
这款 lint 工具由 StackRox(2021 初被红帽收购)在 2020 年底推出,专门用于在开发初期防止安全错误并改善跨 Kubernetes 部署的准确配置。它执行配置文件检查,并可与持续集成(CI)系统一起使用,以简化更新 YAML 文件和 Helm 图表的过程,同时采用 DevSecOps 最佳实践。
作为 Apache 2.0 许可证下可用的开源工具,KubeLinter 还允许整个开源社区的用户参与项目。
KubeLinter 是如何工作的?
KubeLinter 采用图表路径并运行一系列测试来验证图表是否格式正确且无错误,以此来验证 Kubernetes 集群的设置是否正确以及在部署之前编程错误是否已修复。然后,它会针对发现的导致图表安装失败的任何内容发送 lint 错误消息,或者针对与安全最佳实践不相符的任何内容发送警告消息。
KubeLinter 秉持简单易用的设计理念。它预封装了 40 个内置 lint 检查,用于检查常见的 K8s 错误配置,例如以用户身份运行容器、不匹配的选择器以及以机密方式存储敏感数据。它支持自定义检查的配置,并允许用户将配置作为代码,从而可以更早地将安全防护构建到应用开发过程中。
配置 KubeLinter
KubeLinter 可以灵活地进行配置。用户可以创建、启用和禁用他们自己的自定义规则,只需对工作流程进行少量更改,并就错误配置和安全违规提供近乎即时的反馈。
KubeLinter 可以添加到任何持续集成/持续交付(CI/CD)工具中——包括 GitHub Action、Jenkins、CircleCI 和 Travis CI——并且可以自动检查和识别应用配置中的错误。这有助于开发人员进行修复,并且可以自动查看整个生产管道中的问题。
KubeLinter 默认检查也始终以安全防护为核心,因此如果用户想以不安全的方式配置 Kubernetes,则必须手动选择加入。
KubeLinter 只需几分钟就能下载和安装。它是使用人类可读的 Go 编程语言开发的独立二进制文件,可与 kubectl 相媲美,并且由几个相同的软件包组成。
要安装 KubeLinter,您可以使用 Go 建立本地命令行界面,使用预构建的 Docker 容器, 使用 Homebrew 安装,或自行从源代码构建。安装后,将该工具指向您的 Helm 图表和 Kubernetes YAML 文件,马上就能获得结果。
由于它是一种开源工具,随着进一步开发,我们可以期待,KubeLinter 的关键要素会迎来更多变化。这可能包括配置文件格式、标志和命令使用。