Rancher Webhook
Rancher-Webhook 是 Rancher 的重要元件,與 Kubernetes 協同工作以增強安全性並為 Rancher 管理的叢集啟用關鍵功能。
它與 Kubernetes 的可擴展准入控制器整合,如 Kubernetes 文件所述,這使得 Rancher-Webhook 能夠檢查發送到 Kubernetes API 伺服器的特定請求,並對 Rancher 特定的請求添加自訂驗證和變更。Rancher-Webhook 使用 rancher.cattle.io ValidatingWebhookConfiguration 和 rancher.cattle.io MutatingWebhookConfiguration 物件來管理要驗證的資源,並將覆蓋任何手動編輯。
Rancher 在本地和下游叢集中將 Rancher-Webhook 部署為單獨的部署和服務。Rancher 使用 Helm 管理 Rancher-Webhook。需要注意的是,Rancher 可能會覆蓋使用者對 Helm 版本所做的修改。要安全地修改這些值,請參閱自訂 Rancher-Webhook 配置。
每個 Rancher 版本都設計為與單一版本的 webhook 相容。為方便起見,以下提供了相容版本。
**注意:**Rancher 管理 webhook 的部署和升級。在大多數情況下,不需要使用者介入即可確保 webhook 版本與你執行的 Rancher 版本相容。
| Rancher Version | Webhook Version | Availability in Prime | Availability in Community |
|---|---|---|---|
| v2.13.0 | v0.9.0 | ✗ | ✓ |
為什麼我們需要它?
Rancher-Webhook 對於 Rancher 保護叢集免受惡意攻擊並啟用各種功能至關重要。 Rancher 依賴 Rancher-Webhook 作為其功能的組成部分。沒有 webhook,Rancher 將不是一個完整的產品。 它為 Rancher 管理的叢集提供必要的保護,防止安全漏洞並確保叢集的一致性和穩定性。
Webhook 驗證哪些資源?
你可以在 webhook 的儲存庫中找到 webhook 驗證的資源進度清單。這些文件按組/版本和資源組織(頂層標題是組/版本,次級標題是資源)。可以透過查看與特定標籤關聯的 docs.md 檔案來找到特定於一個版本的檢查(請注意,v0.3.6 之前的 webhook 版本不會有此檔案)。
繞過 Webhook
有時,你必須繞過 Rancher 的 webhook 驗證以執行緊急還原操作或修復其他關鍵問題。繞過操作是徹底的,這意味著當你使用它時,不會應用任何 webhook 驗證或變更。無法繞過某些驗證或變更而讓其他驗證或變更仍然生效——它們要麼全部繞過,要麼全部啟用。
Rancher 的 webhook 提供關鍵的安全保護。繞過 webhook 應僅由管理員在特定場景中執行,並且在所有其他選項都已用盡之後。此外,繞過 webhook 的權限應受到嚴格控制,並且永遠不應授予非管理員使用者。
要繞過 webhook,請模擬 rancher-webhook-sudo 服務帳戶和 system:masters 群組(兩者都是必需的):
kubectl create -f example.yaml --as=system:serviceaccount:cattle-system:rancher-webhook-sudo --as-group=system:masters
自訂 Rancher-Webhook 配置
你可以在透過 Helm 安裝 Rancher-Webhook 時添加自訂 Helm 值。在 Helm 安裝 Rancher-Webhook Chart 期間,Rancher 會檢查自訂 Helm 值。這些自訂值必須在 cattle-system 命名空間中名為 rancher-config 的 ConfigMap 中的資料鍵 rancher-webhook 下定義。此鍵的值必須是有效的 YAML。
apiVersion: v1
kind: ConfigMap
metadata:
name: rancher-config
namespace: cattle-system
labels:
app.kubernetes.io/part-of: "rancher"
data:
rancher-webhook: '{"port": 9553, "priorityClassName": "system-node-critical"}'
當檢測到 ConfigMap 值的變更時,Rancher 會重新部署 Rancher-Webhook Chart。
在 Rancher 安裝期間自訂 Rancher-Webhook
當你使用 Helm 安裝 Rancher Chart 時,可以將自訂 Helm 值添加到本地叢集的 Rancher-Webhook。Rancher-Webhook Chart 中的所有值都可以作為 webhook 名稱下的巢狀變數存取。
這些值在安裝期間會同步到 rancher-config ConfigMap。
helm install rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
...
--set webhook.port=9553 \
--set webhook.priorityClassName="system-node-critical"