如果你的组织在运行 Kubernetes,那么你可能一直在寻找控制终端用户可以在集群上做什
么,以及确保集群符合公司或组织政策的方法。这些政策可能是用来满足治理和法律需求,或者
执行最佳实践和组织约定。使用 Kubernetes,你如何在不牺牲开发灵活性和操作独立性的情况下
确保遵从性?例如,你可以执行以下政策:
技术出发点:上面的需求,需要为 Kubernetes实现一个准入控制, Kubernetes允许通过准入控制器( admission controller) webhook将政策决策与API服务器解耦,以便在将它们持久化为
Kubernetes中的对象之前拦截允许请求。
Gatekeeper是 Kubernetes一个可定制的准入 webhook,它执行 open Policy Agent
(OPA)的政策,OPA是CNCF托管的云原生环境的政策引擎;除了准入控制功能之外, gatekeeper的
审计功能可以允许管理者查看哪些资源正在违反哪些政策,也就是让管理者意识到集群的状态
而不仅仅是单个对象
gatekeeper的功能主要有两个,一个是准入控制( admission controller),另一个是审计(audit);
准入控制
当k8s集群中安装了所有 Gatekeeper组件,无论何时创建、更新或删除k8s集群中的资源,API服务器都触发 Gatekeeper准入webhook来处理准入请求。
在验证过程中, Gatekeeper充当API服务器和OPA之间的桥梁。API服务器将强制执行OPA执行的所
有政策。
审计
审计功能支持根据集群中强制的约束对复制资源进行定期评估,以检测预先存在的错误配
置。 Gatekeeper将审计结果存储为相关约束的 status字段中列出的违规行为( violations)
推荐按github上的方法进行部署之后,使用下面的demo进行体验过程
https://github.com/open-policy-agent/gatekeeper/tree/master/demo