好用的预防 Kubernetes 配置错误工具 - Datree

k8s技术圈

共 2357字,需浏览 5分钟

 ·

2022-03-16 11:58

Datree 是一个可以检测 Kubernetes 资源清单错误配置的 CLI 工具,可确保 Kubernetes 资源清单和 Helm Charts 遵循最佳实践,防止开发人员在 Kubernetes 配置中出现错误,导致集群在生产中出现错误。它比人工处理要有效得多,比如给开发者发邮件,恳求他们设置各种限制,而这很可能会因为开发者已经不堪重负而被选择性忘记~

Datree 为 Kubernetes 提供了一种策略执行解决方案,对每一行代码变更都会进行自动检查,以防止违反规则和错误配置。当发现违反规则时,Datree 会产生一个警报,指导开发人员在 CI 过程中去修复问题,同时也会对这些规则背后的原因做出解释。

安装

只需要两步即可开始使用 Datree。

  1. 安装最新版本的 Datre。

    • Linux & MacOS: curl https://get.datree.io | /bin/bash
    • Windows: iwr -useb https://get.datree.io/windows_install.ps1 | iex
    • 其他安装方式(Homebrew、Docker等等)可以查看文档 https://hub.datree.io/
  2. 将 Kubernetes 资源清单文件传递给 Datree 进行扫描。

datree test [k8s-manifest-file]

这样就进行了一次检查了🥳。

插件

Datree 还提供了很多插件来增强体验。

Helm插件

Datree 的 Helm 插件可以通过 Helm CLI 访问,为 Helm 用户提供无缝体验,执行下面的命令即可启用 Helm 插件:

helm plugin install https://github.com/datreeio/helm-datree

VSCode插件

允许你在 Kubernetes 配置上运行 Datree 测试,插件地址:https://marketplace.visualstudio.com/items?itemName=suyashsonawane.vscode-datree

Kustomize支持

Datree 为 Kustomize 提供了开箱即用的支持,允许你轻松扫描 Kustomization 文件以及它将为错误配置生成的资源。

在测试 kustomization 目录时,Datree 将构建 kustomization.yaml 中定义的资源的临时副本,并对它们运行策略检查。

只需将 kustomize 参数添加到 CLI 命令中即可,如下所示:

datree kustomize test [path] [cliArgs] -- [kustomizeArgs]
  • path:表示所需 kustomize 目录的路径(包含 kustomization.yaml 文件
  • cliArgs(可选):Datree CLI 参数
  • kustomizeArgs(可选)kustomize build命令的参数,要查看支持的参数列表,请运行 kustomize build -hkubectl kustomize -h

此外还可以配置 Git Hooks。

策略

每个策略检查都将验证你的 Kubernetes Schema,此外,还有很多 Datree 内置的一些策略规则。这些规则涵盖了各种 Kubernetes 资源和用例:

  • Workload
  • CronJob
  • Containers
  • Networking
  • Security
  • Deprecation
  • Others

除了内置的规则之外,你还可以编写任何希望的自定义规则,然后针对你的 Kubernetes 配置来检查是否违反规则,自定义规则引擎是基于 JSON Schema 的。更多的策略使用可以参考官方文档:https://hub.datree.io。

CI/CD集成

像任何 linter 或静态代码分析工具一样,Datree 的命令行工具可以与所有 CI/CD 平台集成,自动扫描每行代码变化并作为工作流程的一部分提供反馈。

比如在 Gitlab CI 中使用 Datree:

image: node:14

stages:
    - test

test:
    stage: test
    script:
        - curl https://get.datree.io | /bin/bash
        - datree test ~/.datree/k8s-demo.yaml

在 Jenkins Pipeline 中使用 Datree:

pipeline{
    agent any 
    stages{
        stage('indentifying misconfigs using datree'){
            steps{
                script{
                        withEnv(['DATREE_TOKEN=']) {
                              sh 'datree test *.yaml --only-k8s-files'
                        }

                }
            }
        }
    }

}

仓库地址:https://github.com/datreeio/datree

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报