Kubernetes开发(4)-webhook 实现拦截请求

本文介绍了Kubernetes webhook的概念,作为权限控制的补充,允许自定义拦截和处理请求。webhook分为MutatingWebhookConfiguration(修改请求配置)和ValidatingWebhookConfiguration(验证请求配置)。通过AdmissionReview对象,api-server与webhook服务进行交互,完成资源的修改和准入判断。文章还简单探讨了webhook的实现逻辑,包括创建TLS web server并设置路由及处理函数。
摘要由CSDN通过智能技术生成

什么是webhook

Kubernetes 通过rbac进行权限控制,实现了哪些account对哪些资源具有哪些权限的控制,但它并不是万能的, 因为rbac控制的操作权限类型是有限的,需要再进行一些细化的权限管控就无从下手了,比如需要限制一些controller只能从制定的harbor进行image的下载,比如需要限制一些controller只能使用指定范围的端口号等,所幸Kubernetes在各个方面都可以进行一些自定义的开发,而webhook就是用来实现类似需求的。

webhook官网介绍

先看下官网的说明:
官方说明

官网写的很清楚,webhook本质上就是一个拦截器+回调器,它在拦截了用户的请求之后对通过以下2类webhook对请求做处理,然后再回调api-server。

  • MutatingWebhookConfiguration: 修改用户请求的配置
  • ValidatingWebhookConfiguration: 验证 用户请求的配置是否合法

这2类webhook的调用顺序可以参考下图:
拦截器

前置检查:

  • 先要看下api-server的启动参数里有没有开启准入配置
    –enable-admission-plugins=NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,由于开发环境是mac 上,用docker-desktop部署的,所以可以通过pod配置进行查看。
kubectl get pods kube-apiserver-docker-desktop -n kube-system -o yaml | grep enable-admiss

AdmissionReview

webhook本质上是一个http 服务,由api-server通过一个叫做AdmissionReview的对象来发送&接受请求的。

一个官网的AdmissionReview示例(admissionregistration.k8s.io/v1):

{
   
  "apiVersion": "admission.k8s.io/v1",
  "kind": "AdmissionReview",
  "request": {
   
    # Random uid uniquely identifying this admission call
    "uid": "705ab4f5-6393-11e8-b7cc-42010a800002",

    # Fully-qualified group/version/kind of the incoming object
    "kind": {
   "group":"autoscaling","version":"v1","kind":"Scale"},
    # Fully-qualified group/version/kind of the resource being modified
    "resource": {
   "group":"apps","version":"v1","resource":"deployments"},
    # subresource, if the request is to a subresource
    "subResource": "scale",

    # Fully-qualified group
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值