webhook是什么(gitwebhook)
欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创的分类和汇总,及配套源码,涉及Java、Docker、Kubernetes、DevOPS等本篇概览本文是《kubebuilder实战》系列的第七篇,之前的文章咱们完成了一个Operator的设计、开发、部署、验证过程,为了让整个过程保持简洁并且篇幅不膨胀,实战中刻意跳过了一个重要的知识点:webhook,如今是时候学习它了,这是个很重要的功能;本篇由以下部分构成:介绍webhook;结合前面的elasticweb项目,设计一个使用webhook的场景;准备工作生成webhook开发(配置)开发(编码)部署验证Defaulter(添加默认值)验证Validator(合法性校验)关于webhook熟悉java开发的读者大多知道过滤器(Servlet Filter),如下图,外部请求会先到达过滤器,做一些统一的操作,例如转码、校验,然后才由真正的业务逻辑处理请求:
Operator中的webhook,其作用与上述过滤器类似,外部对CRD资源的变更,在Controller处理之前都会交给webhook提前处理,流程如下图,该图来自《Getting Started with Kubernetes | Operator and Operator Framework》:
再来看看webhook具体做了哪些事情,如下图,kubernetes官方博客明确指出webhook可以做两件事:修改(mutating)和验证(validating)
kubebuilder为我们提供了生成webhook的基础文件和代码的工具,与制作API的工具类似,极大地简化了工作量,咱们只需聚焦业务实现即可;基于kubebuilder制作的webhook和controller,如果是同一个资源,那么它们在同一个进程中;设计实战场景为了让实战有意义,咱们为前面的elasticweb项目上增加需求,让webhook发挥实际作用;如果用户忘记输入总QPS,系统webhook负责设置默认值1300,操作如下图:
为了保护系统,给单个pod的QPS设置上限1000,如果外部输入的singlePodQPS值超过1000,就创建资源对象失败,如下图所示:
源码下载本篇实战中的源码可在GitHub下载到,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
这个git项目中有多个文件夹,kubebuilder相关的应用在kubebuilder文件夹下,如下图红框所示:
kubebuilder文件夹下有多个子文件夹,本篇对应的源码在elasticweb目录下,如下图红框所示:
准备工作和controller类似,webhook既能在kubernetes环境中运行,也能在kubernetes环境之外运行;如果webhook在kubernetes环境之外运行,是有些麻烦的,需要将证书放在所在环境,默认地址是:/tmp/k8s-webhook-server/serving-certs/tls.{crt,key}为了省事儿,也为了更接近生产环境的用法,接下来的实战的做法是将webhook部署在kubernetes环境中为了让webhook在kubernetes环境中运行,咱们要做一点准备工作安装cert manager,执行以下操作:kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml上述操作完成后会新建很多资源,如namespace、rbac、pod等,以pod为例如下:[root@hedy ~]# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE cert-manager cert-manager-6588898cb4-nvnz8 1/1 Running 1 5d14h cert-manager cert-manager-cainjector-7bcbdbd99f-q645r 1/1 Running 1 5d14h cert-manager cert-manager-webhook-5fd9f9dd86-98tm9 1/1 Running 1 5d14h ...操作完成后,准备工作结束,可以开始实战了;生成webhook进入elasticweb工程下,执行以下命令创建webhook:kubebuilder create webhook \ --group elasticweb \ --version v1 \ --kind ElasticWeb \ --defaulting \ --programmatic-validation上述命令执行完毕后,先去看看main.go文件,如下图红框1所示,自动增加了一段代码,作用是让webhook生效:
上图红框2中的elasticweb_webhook.go就是新增文件,内容如下:package v1 import ( "k8s.io/apimachinery/pkg/runtime" ctrl "sigs.k8s.io/controller-runtime" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/webhook" ) // log is for logging in this package. var elasticweblog = logf.Log.WithName("elasticweb-resource") func (r *ElasticWeb) SetupWebhookWithManager(mgr ctrl.Manager) error { return ctrl.NewWebhookManagedBy(mgr). For(r). Complete() } // EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! // kubebuilder:webhook:path=/mutate-elasticweb-com-bolingcavalry-v1-elasticweb,mutating=true,failurePolicy=fail,groups=elasticweb.com.bolingcavalry,resources=elasticwebs,verbs=create;update,versions=v1,name=melasticweb.kb.io var _ webhook.Defaulter =
by是哪个国家(ch是哪个国家的简称)介词by是英语中又一常见的介词,其词义比较多,在不同的语境中有不同的意思,这让我们同学在实际运用中感觉复杂,为此,我们今天对其进行一次梳理,以较简略的方式看看其中的奥妙。一by表示
苏泊尔与美的哪个好(电饭煲选苏泊尔还是美的)提起厨房里的国产电饭煲品牌,估计很多人就会想到苏泊尔。相比美的,苏泊尔专注厨房电器的研发和制造,以锅具起家,在内胆制作上独树一帜,比如陶晶内胆氧化不粘内胆都是苏泊尔的代表作。在很多
微盘哪个好(微盘)嘿!哥们儿,我们共享一下资料吧。如果此时你拿出一块16GB的U盘,那一定会大煞风景。云计算从最初学院派研究的对象,到走下神坛经历了很长的时间,也诞生了很多的产品。而网盘无疑是所有产
算命哪个准(最准算命网吓人)听好友推荐说,灵慈师傅算卦很准,是一个很厉害的算命先生,我就抱着试试看的心态,加了灵慈师傅的。这是一个非常令人震惊的网上算命的高人。付了卦金之后,他问我要了八字,起了卦,片刻之后,
睡袋哪个好(大人在室内长期睡睡袋好不好)俗话说,白露不露,长衣长裤。白露节气一过,气温明显下降,早晚温差大,大人都得长衣长裤,孩子更吃不消了。这不,群里宝妈都在喊干妈测睡袋呢。其实,去年干妈就测过睡袋,总结起来就两点好睡
兼职app哪个好(任务类兼职app)如今,智能手机充斥着我们的整个生活,工作中需要它,生活中需要它,衣食住行都离不开它,你不得不承认,手机比叔叔阿姨还要亲,哈哈。但是,很多朋友闲暇之余会想,如何用手机在闲暇之余赚点零
神武哪个区(神武哪个区人多稳定)众所周知,神武人最多的区应该就是天下无双,人多了事情也就多了。且看,混迹天下无双的秒升95级龙宫,半年时间,如何在鱼龙混杂的天下无双大区里游刃有余的生存而不被骗?1。天下主动加你好
尿布哪个好(适合新生儿用的尿片牌子)众所周知,纸尿裤是每个婴儿家庭的必备物品,因此选择优质的尿布非常重要。毕竟,尿布的好坏直接关系到婴儿的健康和舒适感。对于婴儿来说,易于使用质量良好的尿布是必不可少的,因为每天都直接
网线哪个品牌好(秋叶原网线质量怎么样)秋叶原集团董事长孙逸楷秋叶原惠州产业园区。企业供图秋叶原万兆网线,助力新基建!企业供图2020年是深圳经济特区建立40周年,也是粤港澳大湾区和中国特色社会主义先行示范区建设推进的关
高清机顶盒哪个好(广电高清和网络机顶盒哪个好)不同于电视和手机,手机可以一年一换,而电视就不行。那么如果电视好好的,想换个网络机顶盒,是买传统机顶盒好还是电视盒子好呢?1。如果你只想看电视直播例如,一个家庭老人使用比较多,每天
哪个花好养(最好养的花排行榜)7种养不死的花,耐干旱皮实好养,适合新手养在家中养花,不仅能美化居室,优化空气环境,还能愉悦心情,让人得到很好的放松。所以现在越来越多的人喜欢上了养花。但是也有很多刚开始学习养花的