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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM