kube-linter

stackroxApache-2.0活跃维护

静态检查 Kubernetes YAML 和 Helm Chart 的合规工具,按最佳实践规则扫描配置问题,帮你在部署前发现隐患。

KubeLinter is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practices.

v0.8.3发布于 2026-03-10 13:17 UTC3,529star280fork同步于 2026-11-10 11:40 UTC

怎么上手

从 README 代码块原样提取,可能是其中一种安装方式
go install golang.stackrox.io/kube-linter/cmd/kube-linter@latest
brew install kube-linter
docker pull stackrox/kube-linter:latest
硬件要求按 README 关键词推断
有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v0.8.3
  1. v0.8.3最新正式版2026-03-10 · 2026-03-10 13:17 UTC

    What's Changed

    🐛 Bug Fixes

    Other Changes

  2. v0.8.12025-12-19 · 2025-12-19 10:11 UTC
    查看更新说明

    What's Changed

    Other Changes

    Full Changelog: https://github.com/stackrox/kube-linter/compare/v0.8.0...v0.8.1

  3. v0.8.02025-12-17 · 2025-12-17 16:27 UTC
    查看更新说明

    What's Changed

    ✔️ New checks

    Other Changes

  4. v0.7.62025-09-12 · 2025-09-12 12:29 UTC
    查看更新说明

    What's Changed

    ✔️ New checks

    Other Changes

    New Contributors

    Full Changelog: https://github.com/stackrox/kube-linter/compare/v0.7.5...v0.7.6

  5. v0.7.52025-08-04 · 2025-08-04 08:49 UTC
    查看更新说明

    What's Changed

    Other Changes

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Go Report Card

    What is KubeLinter?

    KubeLinter analyzes Kubernetes YAML files, Helm charts, and Kustomize manifests, and checks them against a variety of best practices, with a focus on production readiness and security.

    KubeLinter runs sensible default checks, designed to give you useful information about your Kubernetes YAML files, Helm charts, and Kustomize manifests. This is to help teams check early and often for security misconfigurations and DevOps best practices. Some common examples of these include running containers as a non-root user, enforcing least privilege, and storing sensitive information only in secrets.

    KubeLinter is configurable, so you can enable and disable checks, as well as create your own custom checks, depending on the policies you want to follow within your organization.

    When a lint check fails, KubeLinter reports recommendations for how to resolve any potential issues and returns a non-zero exit code.

    Documentation

    Visit https://docs.kubelinter.io for detailed documentation on installing, using and configuring KubeLinter.

    Installing KubeLinter

    Kube-linter binaries could be found here: https://github.com/stackrox/kube-linter/releases/latest

    Using Go

    To install using Go, run the following command:

    go install golang.stackrox.io/kube-linter/cmd/kube-linter@latest
    

    Otherwise, download the latest binary from Releases and add it to your PATH.

    Using Homebrew for macOS or LinuxBrew for Linux

    To install using Homebrew or LinuxBrew, run the following command:

    brew install kube-linter
    

    Using nix-shell

    nix-shell -p kube-linter
    

    Using docker

    docker pull stackrox/kube-linter:latest
    

    Development

    Prerequisites

    • Make sure that you have installed Go prior to building from source.

    Building KubeLinter

    Installing KubeLinter from source is as simple as following these steps:

    1. First, clone the KubeLinter repository.

      git clone [email protected]:stackrox/kube-linter.git
      
    2. Then, compile the source code. This will create the kube-linter binary files for each platform and places them in the .gobin folder.

      make build
      
    3. Finally, you are ready to start using KubeLinter. Verify your version to ensure you've successfully installed KubeLinter.

      .gobin/kube-linter version
      

    Testing KubeLinter

    There are several layers of testing. Each layer is expected to pass.

    1. go unit tests:

      make test
      
    2. end-to-end integration tests:

      make e2e-test
      
    3. and finally, end-to-end integration tests using bats-core:

      make e2e-bats
      

    Verifying KubeLinter images

    KubeLinter images are signed by cosign. We recommend verifying the image before using it.

    Once you've installed cosign, you can use the KubeLinter public key to verify the KubeLinter image with:

    cat kubelinter-cosign.pub
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEl0HCkCRzYv0qH5QiazoXeXe2qwFX
    DmAszeH26g1s3OSsG/focPWkN88wEKQ5eiE95v+Z2snUQPl/mjPdvqpyjA==
    -----END PUBLIC KEY-----
    
    
    cosign verify --key kubelinter-cosign $IMAGE_NAME
    

    KubeLinter also provides cosign keyless signatures.

    You can verify the KubeLinter image with:

    # NOTE: Keyless signatures are NOT PRODUCTION ready.
    
    COSIGN_EXPERIMENTAL=1 cosign verify $IMAGE_NAME
    

    Using KubeLinter

    Local YAML Linting

    Running KubeLinter to Lint your YAML files only requires two steps in its most basic form.

    1. Locate the YAML file you'd like to test for security and production readiness best practices:

    2. Run the following command:

      kube-linter lint /path/to/your/yaml.yaml
      

    Example

    Consider the following sample pod specification file pod.yaml. This file has two production readiness issues and one security issue:

    Security Issue:

    1. The container in this pod is not running as a read only file system, which could allow it to write to the root filesystem.

    Production readiness:

    1. The container's memory limits are not set, which could allow it to consume excessive memory

      apiVersion: v1
      kind: Pod
      metadata:
        name: security-context-demo
      spec:
        securityContext:
          runAsUser: 1000
          runAsGroup: 3000
          fsGroup: 2000
        volumes:
        - name: sec-ctx-vol
          emptyDir: {}
        containers:
        - name: sec-ctx-demo
          image: busybox
          resources:
            requests:
              memory: "64Mi"
              cpu: "250m"
          command: [ "sh", "-c", "sleep 1h" ]
          volumeMounts:
          - name: sec-ctx-vol
            mountPath: /data/demo
          securityContext:
            allowPrivilegeEscalation: false
      
    2. Copy the YAML above to pod.yaml and lint this file by running the following command:

      kube-linter lint pod.yaml
      
    3. KubeLinter runs its default checks and reports recommendations. Below is the output from our previous command.

      pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) The container "sec-ctx-demo" is using an invalid container image, "busybox". Please use images that are not blocked by the `BlockList` criteria : [".*:(latest)$" "^[^:]*$" "(.*/[^:]+)$"] (check: latest-tag, remediation: Use a container image with a specific tag other than latest.)
      
      pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" does not have a read-only root file system (check: no-read-only-root-fs, remediation: Set readOnlyRootFilesystem to true in the container securityContext.)
      
      pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" has memory limit 0 (check: unset-memory-requirements, remediation: Set memory limits for your container based on its requirements. Refer to https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits for details.)
      
      Error: found 3 lint errors
      

    Multiple Output Formats

    KubeLinter supports generating multiple output formats in a single run. This is useful for generating both human-readable and machine-readable reports simultaneously:

    kube-linter lint \
      --format sarif --output kube-linter.sarif \
      --format json --output kube-linter.json \
      --config .kube-linter.yaml \
      pod.yaml
    

    This command will:

    • Generate a SARIF format report in kube-linter.sarif
    • Generate a JSON format report in kube-linter.json
    • Process the files only once, improving efficiency

    Note: Multiple formats require explicit --output flags. For single format output to stdout, use just one --format flag without --output.

    For more details on using multiple output formats, see the documentation.

    To learn more about using and configuring KubeLinter, visit the documentation page.

    Mentions/Tutorials

    The following are tutorials on KubeLinter written by users. If you have one that you would like to add to this list, please send a PR!

    LICENSE

    KubeLinter is licensed under the Apache License 2.0.

    Community

    If you would like to engage with the KubeLinter community, including maintainers and other users, you can join the Slack workspace here.

    There may be breaking changes in the future to the command usage, flags, and configuration file formats. However, we encourage you to use KubeLinter to test your environment YAML files, see what breaks, and contribute.

    As a reminder, all participation in the KubeLinter community is governed by our code of conduct.


    KubeLinter is created with ❤️ by StackRox and is now powered by Red Hat.