From 0bf7d46bab89b3213c0870f0ed28ba13870388c3 Mon Sep 17 00:00:00 2001 From: AnyISalIn Date: Wed, 5 Jan 2022 09:49:00 +0800 Subject: [PATCH] :bug: skip mutation handler when received deletion verb Signed-off-by: AnyISalIn --- pkg/webhook/admission/defaulter.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/webhook/admission/defaulter.go b/pkg/webhook/admission/defaulter.go index 0d9aa7a838..e4e0778f57 100644 --- a/pkg/webhook/admission/defaulter.go +++ b/pkg/webhook/admission/defaulter.go @@ -21,6 +21,8 @@ import ( "encoding/json" "net/http" + admissionv1 "k8s.io/api/admission/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" ) @@ -56,6 +58,17 @@ func (h *mutatingHandler) Handle(ctx context.Context, req Request) Response { panic("defaulter should never be nil") } + // always skip when a DELETE operation received in mutation handler + // describe in https://github.com/kubernetes-sigs/controller-runtime/issues/1762 + if req.Operation == admissionv1.Delete { + return Response{AdmissionResponse: admissionv1.AdmissionResponse{ + Allowed: true, + Result: &metav1.Status{ + Code: http.StatusOK, + }, + }} + } + // Get the object in the request obj := h.defaulter.DeepCopyObject().(Defaulter) if err := h.decoder.Decode(req, obj); err != nil {