簡體   English   中英

Kubernetes - 准入 webhook - 驗證部署中的規模操作

[英]Kubernetes - Admission webhook - validate scale operatoin in deployments

我想在擴展之前根據自定義邏輯驗證部署。 我創建了一個 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 服務器不會檢測到該操作,並且我無法驗證請求。

我該如何解決這個問題?

當您運行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: '*'

這應該有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM