Kubernetes Kyverno

该页面的原作者是 Guillaume

定义

Kyverno 是一个开源的 Kubernetes 策略管理框架,使组织能够在整个 Kubernetes 基础设施中定义、执行和审计策略。它提供了一个可扩展、可扩展且高度可定制的解决方案,用于管理 Kubernetes 集群的安全性、合规性和治理。

用例

Kyverno 可以用于多种用例,包括:

  1. 网络策略执行:Kyverno 可用于执行网络策略,例如允许或阻止 pod 或服务之间的流量。

  2. 秘密管理:Kyverno 可用于执行秘密管理策略,例如要求秘密以特定格式或位置存储。

  3. 访问控制:Kyverno 可用于执行访问控制策略,例如要求用户具有特定角色或权限才能访问某些资源。

示例:ClusterPolicy 和 Policy

假设我们有一个包含多个命名空间的 Kubernetes 集群,我们想要执行一项政策,要求 default 命名空间中的所有 pod 都具有特定标签。

ClusterPolicy

ClusterPolicy 是定义整体政策意图的高级政策。在这种情况下,我们的 ClusterPolicy 可能如下所示:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-label
spec:
rules:
- validate:
message: "Pods in the default namespace must have the label 'app: myapp'"
match:
any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
- any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
validationFailureAction: enforce

当在 default 命名空间中创建一个没有标签 app: myapp 的 pod 时,Kyverno 将阻止该请求并返回一条错误消息,指示该 pod 不符合政策要求。

References

Last updated