zoukankan      html  css  js  c++  java
  • Kubernetes AdmissionWebhook

    什么是AdmissionWebhook?

            什么是AdmissionWebhook,就要先了解K8S中的admission controller, 按照官方的解释是: admission controller是拦截(经过身份验证)API Server请求的网关,并且可以修改请求对象或拒绝请求。简而言之,它可以认为是拦截器,类似web框架中的middleware。

    为什么使用 admission webhook?

            kubernetes的admission webhook为开发者提供了非常灵活的插件模式,在kubernetes资源持久化之前用户可以对指定资源做校验、修改等操作。应用场景 eg:接入sidecare、设置默认的servceaccount、设置quota等等。

    总体来说,admission-plugins分为三大类:

    1.修改类型(mutating)

    2.验证类型(validating)

    3.既是修改又是验证类型(mutating&validating)

    这些admission plugin构成一个顺序链,先后顺序决定谁先调用,但不会影响使用。

    这里关心的plugin有两个:

    一、MutatingAdmissionWebhook, ValidatingAdmissionWebhook

    • MutatingAdmissionWebhook: 做修改操作的AdmissionWebhook 
    • ValidatingAdmissionWebhook: 做验证操作的AdmissionWebhook

    引用kubernetes官方博客的一张图来说明MutatingAdmissionWebhook和ValidatingAdmissionWebhook所处的位置:

    解释下这个过程:

    1.api请求到达K8S API Server

    2.请求要先经过认证

    • kubectl调用需要kubeconfig
    • 直接调用K8S api需要证书+bearToken
    • client-go调用也需要kubeconfig

    3.执行一连串的admission controller,包括MutatingAdmissionWebhook和ValidatingAdmissionWebhook, 先串行执行MutatingAdmission的Webhook list

    4.对请求对象的schema进行校验

    5.并行执行ValidatingAdmission的Webhook list

    6.最后写入etcd

     应用场景:

    • 自动打标签 比如启动一个应用,应用包括deployment、service、ingress; 怎么快速过滤出哪些资源属于应用? 在K8S中,pod、service、ingress 都是独立的资源,通过给这些资源打上label,是最快速的方式。
    • 自动注入sidecar容器 应用启动后,应用的监控、日志如何处理?借助sidecar容器注入到其pod中
    • 设置默认的servceaccount、设置quota等等。

    参考:https://mp.weixin.qq.com/s/Z6ucuqNs2rOaPzwhvW-bmw

    参考:https://cloud.tencent.com/developer/article/1445760

  • 相关阅读:
    OpenStack网卡桥接问题
    Linux DD添加swap分区
    OpenStack KVM嵌套虚拟化的配置
    OpenStack KVM嵌套虚拟化的配置
    received packet with own address as source address
    mysql ERROR 1040 (08004): Too many connections
    openstack以其他tenant用户创建实例
    OpenStack Controller HA (3)
    OpenStack Controller HA (2)
    OpenStack controller HA
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/14064255.html
Copyright © 2011-2022 走看看