diff --git a/go.mod b/go.mod index 35cc436..f1fdad5 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( go.uber.org/zap v1.26.0 golang.org/x/sync v0.4.0 k8s.io/api v0.28.3 + k8s.io/apiextensions-apiserver v0.28.3 k8s.io/apimachinery v0.28.3 k8s.io/client-go v0.28.3 k8s.io/utils v0.0.0-20230726121419-3b25d923346b diff --git a/go.sum b/go.sum index 4a6d58b..45840dc 100644 --- a/go.sum +++ b/go.sum @@ -236,6 +236,7 @@ gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= k8s.io/api v0.28.3 h1:Gj1HtbSdB4P08C8rs9AR94MfSGpRhJgsS+GF9V26xMM= k8s.io/api v0.28.3/go.mod h1:MRCV/jr1dW87/qJnZ57U5Pak65LGmQVkKTzf3AtKFHc= k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08= +k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc= k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A= k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb8= k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= diff --git a/main.go b/main.go index ca41afc..86b6399 100644 --- a/main.go +++ b/main.go @@ -32,6 +32,7 @@ import ( "go.uber.org/zap" "golang.org/x/sync/errgroup" corev1 "k8s.io/api/core/v1" + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" kerrors "k8s.io/apimachinery/pkg/api/errors" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -212,7 +213,17 @@ func main() { switch gvk.Kind { case "CustomResourceDefinition": - crds = append(crds, &obj) + crd := apiext.CustomResourceDefinition{} + _, _, _ = decoder.Decode( + resourceYAML, + nil, + &crd) + + // Conversion Webhook is unsupported since there will be no pods running handling the conversion request + if crd.Spec.Conversion != nil { + crd.Spec.Conversion.Strategy = "None" + } + crds = append(crds, &crd) case "Namespace": namespaces[obj.GetName()] = &obj default: