@@ -12,6 +12,8 @@ import (
1212 admissionv1 "k8s.io/api/admission/v1"
1313 corev1 "k8s.io/api/core/v1"
1414 v1 "k8s.io/api/storage/v1"
15+ "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
16+ "k8s.io/apimachinery/pkg/api/errors"
1517 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1618 "k8s.io/apimachinery/pkg/types"
1719 "k8s.io/klog/v2"
@@ -82,6 +84,8 @@ func (a *Admitter) serverPVCRequest(w http.ResponseWriter, r *http.Request) {
8284}
8385
8486func (a * Admitter ) Admit (ar admissionv1.AdmissionReview ) * admissionv1.AdmissionResponse {
87+ ctx := context .Background ()
88+
8589 if ar .Request .Operation != admissionv1 .Create {
8690 return toV1AdmissionResponseWithPatch (nil )
8791 }
@@ -102,6 +106,19 @@ func (a *Admitter) Admit(ar admissionv1.AdmissionReview) *admissionv1.AdmissionR
102106 return toV1AdmissionResponseWithPatch (nil )
103107 }
104108
109+ crdInitializers := & apiextensions.CustomResourceDefinition {}
110+ crdInitializersName := types.NamespacedName {
111+ Name : "initializers.storage.kubesphere.io" ,
112+ }
113+ err = a .client .Get (ctx , crdInitializersName , crdInitializers )
114+ if err != nil {
115+ if errors .IsNotFound (err ) {
116+ klog .Warningf ("crd %s not found, skip processing" , crdInitializersName .Name )
117+ return toV1AdmissionResponseWithPatch (nil )
118+ }
119+ return toV1AdmissionResponse (err )
120+ }
121+
105122 // the creating pod(Request.Object) may not have name or namespace set, keep that in mind. We need to set it here.
106123 pod .Namespace = namespace
107124
0 commit comments