[英]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.