OPA Gatekeeper
OPA Gatekeeper is deprecated and will be removed in a future release. As a replacement for OPA Gatekeeper, consider switching to Kubewarden. |
为了确保一致性和合规性,每个组织都需要能够以自动化的方式在环境中定义和执行策略。OPA(Open Policy Agent) 是一个策略引擎,用于基于策略控制云原生环境。Rancher 支持在 Kubernetes 集群中启用 OPA Gatekeeper,并且还安装了一些内置的策略定义(也称为约束模板)。
OPA 提供了一种高级声明性语言,可以让你将策略指定为代码,还能扩展简单的 API,从而减轻策略决策的负担。
OPA Gatekeeper 是一个提供 OPA 和 Kubernetes 集成的项目。OPA Gatekeeper 提供:
-
一个可扩展的参数化策略库。
-
用于实例化策略库的原生 Kubernetes CRD,也称为"`约束`"。
-
用于扩展策略库的原生 Kubernetes CRD,也称为"`约束模板`"。
-
审计功能。
要了解更多关于 OPA 的信息,请参阅官方文档。
OPA Gatekeeper 集成的工作原理
Kubernetes 支持通过准入控制器(准入控制器)webhook 来扩展 API Server 的功能,创建、更新或删除资源时都会调用这些 webhook。Gatekeeper 作为验证 webhook 安装,并执行由 Kubernetes CRD(Custom Resource Definition)定义的策略。除了使用准入控制之外,Gatekeeper 还能审计 Kubernetes 集群中的现有资源,并对违反当前策略的情况进行标记。
OPA Gatekeeper 由 Rancher 的 Helm system Chart 提供,它安装在名为 gatekeeper-system
的命名空间中。
在集群中启用 OPA Gatekeeper
Rancher 2.5 改进了 OPA Gatekeeper 应用。无法从 Rancher 2.4 升级到 Rancher 2.5 中的新版本。如果你在 Rancher 2.4 中安装了 OPA Gatekeeper,则需要在旧 UI 中卸载 OPA Gatekeeper 及其 CRD,然后在 Rancher 2.5 中重新安装它。如需卸载 CRD,请在 kubectl 控制台中运行 |
先决条件:
只有管理员和集群所有者才能启用 OPA Gatekeeper。 |
你可以在 Apps 页面安装 OPA Gatekeeper Helm Chart。
创建和配置约束
约束是 Kubernetes 自定义资源,用于定义要应用约束模板的对象范围。约束模板和约束共同定义一个完整的策略。
先决条件:
集群中已启用 OPA Gatekeeper。 |
要列出已安装的约束,请转到 OPA Gatekeeper 下的左侧菜单,然后单击约束。
可以从约束模板创建新的约束。
Rancher 支持通过使用方便的表单来创建约束,你可以在该表单中输入各种约束字段。
以 YAML 文件编辑选项也可以用于配置约束的 YAML 定义。
在集群中实施约束
如果执行动作为 Deny,约束会立即启用,并拒绝任何违反策略的请求。默认情况下,执行的值为 Deny。
如果执行动作 为 Dryrun,违反策略的资源仅会记录在约束的状态字段中。
要强制执行约束,请使用表单创建约束。在执行动作字段中,选择 Deny。