Skip to content

Commit 5800ba4

Browse files
check crd installation
Signed-off-by: stoneshi-yunify <stoneshi@kubesphere.io>
1 parent 36adde2 commit 5800ba4

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

pkg/webhook/pod.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

8486
func (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

pkg/webhook/scheme.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
99
corev1 "k8s.io/api/core/v1"
1010
storagev1 "k8s.io/api/storage/v1"
11+
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
1112
"k8s.io/apimachinery/pkg/runtime"
1213
"k8s.io/apimachinery/pkg/runtime/serializer"
1314
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
@@ -30,4 +31,5 @@ func addToScheme(scheme *runtime.Scheme) {
3031
utilruntime.Must(v1alpha1.AddToScheme(scheme))
3132
utilruntime.Must(tenantv1alpha1.AddToScheme(scheme))
3233
utilruntime.Must(storagev1.AddToScheme(scheme))
34+
utilruntime.Must(apiextensions.AddToScheme(scheme))
3335
}

0 commit comments

Comments
 (0)