antony@notes:~/rancher$ cat "Rancher-Webhook.md"
Rancher Webhook
Preface
本篇文章會介紹以下內容
- 甚麼是 Rancher Webhook,它在做什麼?
可以透過點擊展開以下目錄,選擇想看的內容,跳轉至特定章節
What is Rancher Webhook
Rancher-Webhook 是 Rancher 的一個重要元件,與 Kubernetes 搭配使用,以增強安全性並啟用 Rancher 管理叢集的關鍵功能。
Rancher webhook 同時是 Kubernetes 的 validating admission webhook 和 mutating admission webhook.
Rancher-Webhook 與 Kubernetes 的 extensible admission controllers (可擴充入場控制器)整合在一起,就像 Kubernetes documentation 中所描述的那樣。
這使得 Rancher-Webhook 能夠檢視傳送至 Kubernetes API 伺服器的特定請求,並對 Rancher 相關的請求進行自訂的驗證和變更。
Rancher-Webhook 透過 rancher.cattle.io 的 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 來管理要進行驗證的資源,並會覆蓋任何手動編輯。
Rancher 在本地和下游叢集中將 Rancher-Webhook 部署為獨立的 Deployment 和 Service。Rancher 使用 Helm 來管理 Rancher-Webhook。值得注意的是,Rancher 可能會覆蓋使用者對 Helm 發行版所做的修改。
Why do we need it?
Rancher-Webhook 是 Rancher 的重要組件,用於保護叢集免受惡意攻擊並啟用各種功能。Rancher 依賴於 Rancher-Webhook 作為其功能的不可或缺的一部分。如果沒有這個網鉤,Rancher 將不會是一個完整的產品。它為 Rancher 管理的叢集提供了重要的保護,防止安全漏洞並確保叢集的一致性和穩定性。
What are admission webhooks?
「admission webhooks」是一種 HTTP callbacks (回調) 功能,用於接收「admission requests (入場請求)」並對其進行處理。
你可以定義兩種類型的 admission webhooks,validating admission webhook (驗證型入場網鉤) 和 mutating admission webhook (變異型入場網鉤)。
mutating admission webhook 會先被呼叫,並且可以修改傳送至 API Server 的物件,以強制套用自訂預設值。在所有物件修改完成後,且進入物件通過 API Server 的驗證後,validating admission webhook 會被呼叫,並且可以拒絕請求以套用自訂規則。
Note. 需要確保看到物件的最終狀態以執行策略的 admission webhook 應該使用 Validating Admission Webhook,因為物件在被 mutating admission webhook 看到後可能會被修改。
What is Validating Admission Webhook
這個 admission controller (入場控制器)會呼叫符合請求的所有 Validating Admission Webhook。符合的 Webhook 會並行呼叫;如果其中任何一個拒絕請求,則請求將失敗。
這個 admission controller 僅在驗證階段運行;它所呼叫的 Webhook 不能對物件進行變更,這與 MutatingAdmissionWebhook admission controller 所呼叫的 Webhook 相對。
What is MutatingAdmissionWebhook
這個 admission controller 會呼叫符合請求的所有 mutating webhooks。符合的 webhooks 會依序呼叫;每個 webhooks 都可以修改物件,如果需要的話。
這個 admission controller(如其名所示)僅在 mutating (變異)階段運行。