Skip to content

antony@notes:~/rancher$ cat "Rancher-Webhook.md"

Rancher Webhook

2023-07-14· rancher ·SUSE Rancher 2.6

Preface

本篇文章會介紹以下內容

  • 甚麼是 Rancher Webhook,它在做什麼?

可以透過點擊展開以下目錄,選擇想看的內容,跳轉至特定章節

:::warning

:::spoiler 文章目錄

[TOC]

:::

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.ioValidatingWebhookConfigurationMutatingWebhookConfiguration 來管理要進行驗證的資源,並會覆蓋任何手動編輯。

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 會被呼叫,並且可以拒絕請求以套用自訂規則。

:::info

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 (變異)階段運行。