kube-lint, 带有可以定制规则集的Kubernetes资源的linter

分享于 

6分钟阅读

GitHub

  繁體 雙語
A linter for Kubernetes resources with a customizable rule set
  • 源代码名称:kube-lint
  • 源代码网址:http://www.github.com/viglesiasce/kube-lint
  • kube-lint源代码文档
  • kube-lint源代码下载
  • Git URL:
    git://www.github.com/viglesiasce/kube-lint.git
    Git Clone代码到本地:
    git clone http://www.github.com/viglesiasce/kube-lint
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/viglesiasce/kube-lint
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    kube-lint

    带有可以定制规则集的Kubernetes资源的linter。

    简介

    kube-lint 希望能够容易地验证你的Kubernetes配置文件和运行的资源是否符合你定义的标准。 你定义了一些规则,你希望根据资源验证,kube-lint 将对这些规则进行评估。

    在许多组织中,你将希望有一个标准,以便将"正确"部署到Kubernetes集群中。 你可能对创建的某些服务的标签或者限制有约定。 你可以使用 kube-lint/cd管道中的来创建不遵守标准的资源。 另外,可以使用 kube-lint对集群中运行的资源集进行审计。

    考虑这个 Prototype。 请在问题提供反馈。

    目前,只有 Pod目前实现

    安装

    用于 macOS的

    
    wget https://github.com/viglesiasce/kube-lint/releases/download/v0.0.1-prototype/kube-lint-prototype-darwin.tgz
    
    
    tar zxfv kube-lint-prototype-darwin.tgz
    
    
    ./darwin/kube-lint -h
    
    
    
    

    用于Linux的插件

    
    wget https://github.com/viglesiasce/kube-lint/releases/download/v0.0.1-prototype/kube-lint-prototype-linux.tgz
    
    
    tar zxfv kube-lint-prototype-linux.tgz
    
    
    ./linux/kube-lint -h
    
    
    
    

    规则配置

    规则配置文件是一个YAML格式的KubernetesRules 列表。 一个示例配置文件在这个库的example/config.yaml 中可用。

    KubernetesRule具有以下格式:

    
    name: app-label
    
    
    description: Includes a label with key"app"
    
    
    kind: Pod
    
    
    field:. metadata.labels.app
    
    
    operator: set
    
    
    valueType: string
    
    
    tags:
    
    
    - operations
    
    
    - security
    
    
    
    

    name 是这里规则的标识符。

    description 提供有关规则检查的内容的详细信息。

    kind 是这里检查应执行的资源类型。

    field 是一个用于获取你要评估的值的jsonpath

    operator 是你希望对预期的vs 实际值(。IE 等于,MATCHES,小于) 进行的检查。 对于 string 类型,可用的运算符是 equalnotequalsetunsetmatches。 对于 bool 类型,可用的运算符是 equalnotequalsetunset。 对于 float64 类型,可用的运算符有 equalnotequalsetunsetgreaterthanlessthan

    valueType 是需要评估的值的类型。 string 是默认值 boolfloat64 也被实现。

    tags 是一个字符串列表,可以用于决定是否运行这里规则,或者不通过 CLI。

    运行 kube-lint

    基本操作

    安装后,你可以按如下方式从该目录运行 kube-lint:

    
    kube-lint pods --config example/config.yaml
    
    
    
    

    更改规则编辑 example/config.yaml。 你是 rulebender。

    按标签过滤规则

    你可以通过筛选到只包含某些标记的规则来评估规则子集。 例如:

    
    kube-lint pods --config example/config.yaml --tags security,operations
    
    
    
    

    按命名空间筛选资源

    你还可以通过传递 --namespace 标志来筛选要计算的资源,如下所示:

    
    kube-lint pods --config example/config.yaml --namespace kube-system
    
    
    
    

    如果这看起来像一个合理的方法,那么

    • 使用适当的错误处理替换 panic
    • 添加测试大量测试。
    • 向所有导出的functions/types/methods 中添加日志文件
    • 使-f能够加载一个yaml文件的目录( 如 kubectl )
    • 决定如何处理未设置的参数
    • 选择日志框架并使用它
    • 添加更多资源 (services/deployments/etc.)
    • 将 ${HOME}/.kube-lint 用于配置参数
    • 制定有用的规则标准基线
    • 使用下滑的供应商依赖项

    添加一个问题来讨论你想看到什么。 让我们讨论一下它,然后提出一个行动计划。


    SET  resource  资源  RULE  LINT  Kubernetes  
    相关文章