我想在擴展之前根據自定義邏輯驗證部署。我創建了一個 admission webhook 來做到這一點,但不幸的是,webbook 沒有檢測到 scale 操作。
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: deployment-validator
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: example-name
namespace: example-namespace
path: /validate-deployment
port: 9443
failurePolicy: Ignore
matchPolicy: Equivalent
name: validation.deploy.example-domain.com
namespaceSelector: {}
objectSelector: {}
rules:
- apiGroups:
- apps
apiVersions:
- v1
operations:
- '*'
resources:
- deployment
scope: '*'
sideEffects: None
timeoutSeconds: 10
如果我創建或更新部署,webhook 服務器會檢測到該操作,如果我修補(kubectl patch ...)也是如此。不幸的是,如果我使用 kubectl scale ...,webhook 服務器不會檢測到該操作,并且我無法驗證請求。
我該如何解決這個問題?
uj5u.com熱心網友回復:
當您運行時,kubectl scale您實際上并沒有修補Deployment資源,而是正在編輯一個名為的子資源Scale。
這是規模呼叫的 API 檔案條目:https ://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#replace-scale-deployment-v1-apps
PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale
另外,我認為您的資源需要復數名稱。因此,您可能必須像這樣更改準入控制器中的規則:
rules:
- apiGroups:
- apps
apiVersions:
- v1
operations:
- '*'
resources:
- deployments/scale
scope: '*'
這應該有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/480759.html
標籤:Kubernetes 网络挂钩 kube-apiserver
