Kubernetes 策略引擎 Kyverno 使用


Kubernetes 策略引擎 Kyverno 使用

文章插图
Kyverno 是来自 Nirmata 的开源项目,后来捐赠给了 CNCF 。Kyverno 是一个具有验证和变异能力的 Kube.NETes 策略引擎,但是它还有生成资源的功能,还加入了 API 对象查询的能力 。Kyverno 原本就是为 Kubernetes 编写的,除了对象生成功能之外,还无需专用语言即可编写策略 。
同样 Kyverno 在 Kubernetes 集群中也是作为动态准入控制器运行的 。Kyverno 从 kube-apiserver 接收验证和修改准入 webhook HTTP 回调,并应用匹配策略返回执行准入策略或拒绝请求的结果 。Kyverno 策略可以使用资源 Kind、name 和标签选择器匹配资源,而且名称中支持通配符 。
策略执行是通过 Kubernetes events 来捕获的,Kyverno 还报告现有资源的策略违规行为 。下图显示了 Kyverno 的整体架构:
Kubernetes 策略引擎 Kyverno 使用

文章插图
Kyverno架构
Kyverno 的高可用安装可以通过运行多个副本来完成,并且 Kyverno 的每个副本将具有多个执行不同功能的控制器 。Webhook 处理来自 Kubernetes APIServer 的 AdmissionReview 请求,其 Monitor 组件创建和管理所需的配置 。PolicyController watch 策略资源并根据配置的扫描间隔启动后台扫描,GenerateController 管理生成资源的生命周期 。
安装首先需要保证你的 Kubernetes 集群版本必须高于 v1.14,要安装的版本也和 Kubernetes 版本有关系 。
Kubernetes 策略引擎 Kyverno 使用

文章插图
兼容版本
我们这里已经是 v1.26.x 版本了,所以选择安装最新的 1.9.2 版本即可 。
你可以选择直接从最新版本的资源清单安装 Kyverno,直接执行下面的命令即可:
? kubectl create -f https://Github.com/kyverno/kyverno/releases/download/v1.9.2/install.yaml此外同样可以使用 Helm 来进行一键安装:
? helm repo add kyverno https://kyverno.github.io/kyverno/? helm repo update# Install the Kyverno Helm chart into a new namespace called "kube-kyverno"? helm upgrade --install kyverno kyverno/kyverno -n kube-kyverno --create-namespaceRelease "kyverno" does not exist. Installing it now.NAME: kyvernoLAST DEPLOYED: Tue Apr 11 15:51:30 2023NAMESPACE: kube-kyvernoSTATUS: deployedREVISION: 1NOTES:Chart version: 2.7.2Kyverno version: v1.9.2Thank you for installing kyverno! Your release is named kyverno.??WARNING: Setting replicas count below 3 means Kyverno is not running in high availability mode.
【Kubernetes 策略引擎 Kyverno 使用】


    推荐阅读