
Monokle CLI是用于静态分析Kubernetes资源的命令行界面。
使用它来防止Kustomize,Helm或默认的Kubernetes资源中的错误配置。输出可作为SARIF文件可用,您可以将其上传到GitHub Codescan。
Monokle CLI允许与Monokle Cloud和Monokle Enterprise集成,以中心管理和执行所有存储渠和管道的验证策略。
您可以在公告博客群中阅读有关Monokle CLI功能和整个Monokle生态系统的更多信息。
您可以通过NPM安装Monokle CLI:
npm install --global @monokle/cli或如果您在MacOS上使用啤酒:
brew install kubeshop/monokle/monokle-cliMonokle CLI公开以下命令:
monokle validate [path] - 在给定路径中验证Kubernetes资源。monokle init生成本地配置文件。monokle login - 登录到Monokle Cloud或Enterprise使用远程策略。monokle logout - 从Monokle Cloud或Enterprise注销。monokle whoami获取有关当前身份验证用户的信息。monokle config show [path] - 显示策略配置文件,该文件将用于验证的给定路径。您可以始终使用--help参数获取所有可用命令的列表或有关每个命令的详细信息。
Monokle CLI包括内置验证器,为您提供开箱即用的K8S配置的全面验证可能性:
在引擎盖下,它使用[@monokle/验证] [https://github.com/kubeshop/monokle-core/tree/main/main/packages/validation],它允许您广泛配置验证规则。
安装后,使用CLI直接向前。
monokle validate bundle.yaml这将递归地扫描所有YAML文件,并将它们作为普通的Kubernetes资源解析。
monokle validate k8s-dirhelm template helm-dir | monokle validate -kustomize build kustomize-dir/overlays/local | monokle validate -monokle validate path/to/validate -c path/to/config/monokle.validation.yaml要使用远程策略,您需要先登录到Monokle Cloud。可以通过monokle login命令来完成:
monokle login之后,只需运行validate命令即可。 Monokle CLI将根据您的用户数据获取远程策略:
monokle validate path/to/validate重要的是:请记住,需要首先配置远程策略。请参考下面的Monokle Cloud部分使用。
Monokle CLI支持预定义的称为框架的规则集,这些规则可让您快速运行Monokle验证,而无需其他配置。通过使用框架,您可以根据既定的最佳实践和行业标准轻松执行全面的验证。
使用框架时,您无需手动配置monokle.validation.yaml文件。只需使用--framework或-f CLI参数指定所需的框架,Monokle CLI将自动应用相应的规则集。
可用框架:
pss-restrictedpss-baselinensa使用Frameworks是Monokle CLI快速入门并执行全面验证的一种绝佳方法,而无需进行广泛的配置。
这是如何使用--framework参数的示例:
monokle validate k8s-dir --framework pss-restricted如果您喜欢更自定义的验证,则仍然可以使用您自己的规则配置monokle.validation.yaml文件。最简单的方法是使用monokle init命令,该命令将指导您基于可用框架创建自定义配置。
Monokle CLI可以以SARIF格式输出其结果。
monokle validate --output sarif k8s-dir > results.sarif之后,您可以使用VSC的SARIF查看器或其他工具来检查结果。
要使用Monokle CLI使用远程策略,您将需要在Monokle Cloud中创建一个项目并为其配置策略。首先登录Monokle Cloud。
如果有疑问,请参阅“入门指南”或直接在不和谐中击中我们。
注册后,首先在项目页面上创建一个项目:

创建项目后,将一个存储库(您将在本地使用的存储库)添加到一个项目。这可以通过在项目视图中的Repositories库标签中使用并使用Add repository按钮来完成:

最后一步是策略设置。您可以通过转到项目视图中的Policy选项卡来使用策略向导:

设置完成后,您可以运行monokle validate命令,只要您登录,它就会使用远程策略。
使用Monokle Enterprise(自我托管)与Monokle Cloud的使用非常相似。主要区别是Monokle CLI将与之交流的起源(URL)。可以在login或每个命令上设置此设置(对于自动场景)。
monokle login --origin https://monokle.mydomain.com重要的是:ENV变量
MONOKLE_ORIGIN也可用于将原点设置为记录命令。如果两者都不使用,CLI将在使用自定义原始原点时提示。
对于使用--origin标志而无需登录,请参阅下面的CI/CD管道部分上的使用。
我们已经专门使用
Monokle GitHub Bot将集中策略管理集成到GitHub CI/CD管道中,该策略与直接使用CLI相比,它与Monokle Cloud更加更紧密地集成。
要将Monokle CLI用作CI/CD管道的一部分,需要先安装它,然后简单地使用monokle validate path/to/resources运行。
另一种情况是在这种情况下使用Monokle Cloud中心管理的政策。在这种情况下,应该使用自动化令牌(可以通过Workspace视图中的Automation token制成)以及应使用策略的项目ID:
monokle validate project/path -t YOUR_AUTOMATION_TOKEN -p PROJECT_ID可以从url
https://app.monokle.com/dashboard/projects/<projectId>从项目详细信息页面上获取项目ID。
您还可以更改将使用该来源的来源(例如运行自己的Monokle Enterprise实例时):
monokle validate project/path -t YOUR_AUTOMATION_TOKEN -p PROJECT_ID -r https://monokle.mydomain.com重要的是:始终记住将API代币作为秘密,并以与其他秘密相同的方式将其传递给CI/CD作业。
Monokle GitHub机器人可以用来验证您的资源作为GitHub CI/CD管道的一部分。它与Monokle Cloud开箱即用,以允许简单的集中策略管理。
Monokle GitHub动作可用于验证您的资源,作为您在GitHub上的CI/CD管道的一部分。在验证干式运行结果时,它提供了更多的自定义性。
如果您需要与Monokle Cloud紧密集成的东西,我们建议使用Monokle GitHub Bot 。
您可以使用--help直接从CLI访问帮助信息。
Monokle CLI在./monokle.validation.yaml上寻找Monokle验证配置文件。您可以使用--config标志来更改此操作。
默认情况下启用了所有规则,并在Monokle验证配置文档中进行了描述。
例子
plugins :
yaml-syntax : true
kubernetes-schema : true
rules :
yaml-syntax/no-bad-alias : " warn "
yaml-syntax/no-bad-directive : false
open-policy-agent/no-last-image : " err "
open-policy-agent/cpu-limit : " err "
open-policy-agent/memory-limit : " err "
open-policy-agent/memory-request : " err "
settings :
kubernetes-schema :
schemaVersion : v1.24.2可以使用自定义验证器扩展Monokle CLI,可以使用我们的Monokle社区插件存储库与他人共享。
您可以使用Docker Image monokle-cli:latest ,以在容器化的环境中运行Monokle CLI。这对于将Monokle集成到CI/CD管道或其他自动化系统中可能特别有用。
要运行Docker映像,您可以使用docker run命令。 Monokle CLI参数可以直接传递到Docker Run命令。例如:
docker run -v /path/to/input:/input -e CONFIG_FILE=my-validation-config.yaml monokle-cli:latest validate /input
在此命令中:
-v /path/to/input:/input将目录从主机系统安装到码头容器内的/输入目录。-e CONFIG_FILE=my-validation-config.yaml设置了码头容器内的环境变量。如果设置了此环境变量,则Docker容器将使用指定的文件作为Monokle验证配置。validate /input是将传递给Monokle CLI的命令。您可以用要使用Monokle CLI运行的任何命令替换此命令。