繁体   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