gatekeeper实践

gatekeeper实践环境要求 gatekeeper 是基于 k8s 的 admissioncon 实现的 需要 k8s 的 kube apiserve 开启相应的准入控制 也就是 validatingad 和 mutatingadmi 关于 admissioncon 可以参考 链接 kube apiserv

环境要求

gatekeeper是基于k8s的 admission controller webhooks实现的,需要k8s的 kube-apiserve开启相应的准入控制,也就是 validating admission webhook和mutating admissionwebhook.

  • 关于admission controller webhooks可以参考:链接
  • kube-apiserver每个参数的含义:链接
  • admission controller的介绍:链接

开启方式描述如下:

  • 针对二进制安装kube-apiserver的集群,可以直接修改kube-apiserver的启动参数,在目前的环境中(kube-apiserver是使用二进制安装在mater上的),修改方式如下
    1. 登录到k8s的master节点上
    2. 修改/etc/default/kube-apiserver文件,修改“–admission-control”的参数值 ,加上“MutatingAdmissionWebhook, ValidatingAdmissionWebhook”,注意添加顺序
    3. 重启kube-apiserver, service kube-apiserver restart

 

gatekeeper安装

另外也可以直接使用kubectl get crd的方式,查看对于的crd的AGE是不是

,只有当AGE不为

而是一个数字时,才表示这个资源对象可用

相关链接:github issuce

 

gatekeeper是否支持warn级别的约束

不支持,这种不支持是因为gatekeeper是基于k8s的admission来实现的,具体可以看 github issuce

 

如何实现细粒度的约束控制

在 gatekeeper中,如果你想将某些约束应用在部分资源对象,诸如命名空间或者Pod的话,可以配置spec. match

 

如何获取约束的审计信息

 

如果出现约束部署成功了,但是不起作用或者 status没有显示的情况,可能原因

  1. constraints的yam文件拼写出错,诸如 apiGroups打错
  2. 没有添加资源对象的spec.match,或者 spec.match添加错误,特别是 apiGroups

如果部署模板CRD之后,使用 kubectl get crd没有看到新建的模板

这种情况多半就是模板的rego语法出错了,可以先使用 kubectl get ConstraintTemplate取模板CRD名称,再 kubectl get ConstraintTemplate

-o yam获取 status查看语法出错的位置

 

gatekeeper的Policy里面的rego语法

要写这种语法,建议就是把相关的资料都看一次,然后参考官方的来写。

学习链接有:

  • https://www.openpolicyagent.org/docs/latest/policy-language/
  • https://www.openpolicyagent.org/docs/latest/policy-reference/#built-in-functions
  • https://github.com/open-policy-agent/frameworks/tree/master/constraint

可以参考的例子有:

  • https://github.com/ritazh/gatekeeper/tree/master/demo
  • https://github.com/open-policy-agent/gatekeeper/tree/master/demo
  • https://github.com/open-policy-agent/gatekeeper/tree/master/library/general

另外就是上Slack跟opa项目的人交流了

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198297.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:23
下一篇 2026年3月26日 下午3:23


相关推荐

  • c语言中结构体的指针初始化,c语言结构体指针初始化

    c语言中结构体的指针初始化,c语言结构体指针初始化今天终于看完了 C 语言深度剖析这本书 对 C 语言有了进一步的了解与感悟 突然发觉原来自己学 C 语言的时候学得是那样的迷糊 缺少深入的思考 在重新看书的时候发觉 C 语言基本教材虽然经典 但是缺乏独到性 老师在讲解的过程中也就照本宣科了 没有多大的启迪 看到 C 语言内存管理这块 发觉还是挺有用的 当然平时在编程时基本上就没有考虑过内存问题 定义了指针变量 没有为指针分配内存 即指针没有在内存中指向一块合法的内存

    2025年11月11日
    4
  • gcd exgcd[通俗易懂]

    gcd exgcd[通俗易懂]#include#define_ios_base::sync_with_stdio(0);cin.tie(0);#defineINF0x3f3f3f3f#defineeps1e-5typedeflonglongLL;constdoublepi=acos(-1.0);constlonglongmod=25*1E8;usi

    2025年6月26日
    5
  • pycharm使用技巧及常用快捷键_全屏快捷键

    pycharm使用技巧及常用快捷键_全屏快捷键Pycharm常用快捷键1、编辑(Editing)Ctrl+Space基本的代码完成(类、方法、属性)Ctrl+Alt+Space快速导入任意类Ctrl+Shift+Enter语句完成Ctrl+P参数信息(在方法中调用参数)Ctrl+Q快速查看文档F1外部文档Shift+F1外部文档,进入web文档主页Ctrl+Shift+Z–>Redo重做Ctrl+鼠标简介/进入代码定义Ctrl+F1显示错误描述或警告.

    2022年8月26日
    8
  • 龙虾AI(OpenClaw)概念股全梳理与解读

    龙虾AI(OpenClaw)概念股全梳理与解读

    2026年3月13日
    3
  • redis一级缓存和二级缓存_面试官让面试者先回去

    redis一级缓存和二级缓存_面试官让面试者先回去说起mybatis,大家可能都知道它是一个优秀的久层框架,它支持定制化SQL、存储过程以及高级映射。面试中都会问起mybatis一级缓存和二级缓存,它体现出你对mybatis这个开发中的理解,如果照着答案背的话只能拿到一个及格分,所以今天咱们就好好聊聊mybatis。另外本人整理了20年面试题大全,包含spring、并发、数据库、Redis、分布式、dubbo、JVM、微服务等方面总结,下图是部分截图,需要的话点这里点这里,暗号CSDN。1.首先,什么是Mybatis?MyBatis是一.

    2026年2月2日
    9
  • ajax同步和异步区别

    ajax同步和异步区别同步和异步的区别 ajax 的编程步骤解 同步是指一个线程要等待上一个线程执行完才能开始执行 同步可以看做是一个单线程操作 只要客户端请求了 在服务器没有反馈信息之前是一个线程阻塞状态 异步是一个线程在执行中 下一个线程不必等待它执行完就可以开始执行 异步肯定是个多线程 在客户端请求时 可以执行其他线程 并且在把这个线程存放在他的队列里面 有序的执行 异步的效率要高于同步 如果数据在线程间共享 那么

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号