Kyverno 是来自 Nirmata 的开源项目,后来捐赠给了 CNCF。Kyverno 是一个具有验证和变异能力的 Kubernetes 策略引擎,但是它还有生成资源的功能,还加入了 API 对象查询的能力。Kyverno 原本就是为 Kubernetes 编写的,除了对象生成功能之外,无需专用语言即可编写策略。
同样 Kyverno 在 Kubernetes 集群中也是作为动态准入控制器运行的。Kyverno 从 kube-apiserver 接收验证和修改准入 webhook HTTP 回调,并应用匹配策略返回执行准入策略或拒绝请求的结果。Kyverno 策略可以使用资源 Kind、name 和标签选择器匹配资源,而且名称中支持通配符。
策略执行是通过 Kubernetes events 来捕获的,Kyverno 还报告现有资源的策略违规行为。下图显示了 Kyverno 的整体架构:
Kyverno架构
Kyverno 的高可用安装可以通过运行多个副本来完成,并且 Kyverno 的每个副本将具有多个执行不同功能的控制器。Webhook 处理来自 Kubernetes APIServer 的 AdmissionReview 请求,其 Monitor 组件创建和管理所需的配置。PolicyController watch 策略资源并根据配置的扫描间隔启动后台扫描,GenerateController 管理生成资源的生命周期。
安装
首先需要保证你的 Kubernetes 集群版本必须高于 v1.14,要安装的版本也和 Kubernetes 版本有关系。
兼容版本
我们这里已经是 v1.28.x 版本了,所以选择安装最新的 1.11.4 版本即可。
你可以选择直接从最新版本的资源清单安装 Kyverno,直接执行下面的命令即可:
➜ kubectl create -f https://github.com/kyverno/kyverno/releases/download/v1.11.3/install.yaml