Kubernetes - Admission webhook - 验证部署中的规模操作
Kubernetes - Admission webhook - validate scale operatoin in deployments
我想在扩展之前根据自定义逻辑验证部署。
我创建了一个 admission webhook 来执行此操作,但不幸的是,webbook 未检测到缩放操作。
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 服务器会检测到该操作,如果我 PATCH(kubectl 补丁...)也是如此。
不幸的是,如果我使用 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: '*'
这应该有效。
我想在扩展之前根据自定义逻辑验证部署。 我创建了一个 admission webhook 来执行此操作,但不幸的是,webbook 未检测到缩放操作。
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 服务器会检测到该操作,如果我 PATCH(kubectl 补丁...)也是如此。 不幸的是,如果我使用 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: '*'
这应该有效。