From c8f2f90ee7121eac1e8f8f1c143768ab11a1f6d6 Mon Sep 17 00:00:00 2001 From: "dmitry.koba" Date: Mon, 18 Mar 2024 14:14:00 +0300 Subject: [PATCH 1/2] Fix taking a crd that is not yet installed Signed-off-by: dmitry.koba --- pkg/webhook/conversion/crd_client_config.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pkg/webhook/conversion/crd_client_config.go b/pkg/webhook/conversion/crd_client_config.go index aaa0dd9e..a0e12701 100644 --- a/pkg/webhook/conversion/crd_client_config.go +++ b/pkg/webhook/conversion/crd_client_config.go @@ -2,11 +2,12 @@ package conversion import ( "context" - "fmt" + "time" log "github.com/sirupsen/logrus" extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/klog/v2" klient "github.com/flant/kube-client/client" ) @@ -24,8 +25,12 @@ type CrdClientConfig struct { var SupportedConversionReviewVersions = []string{"v1", "v1beta1"} func (c *CrdClientConfig) Update() error { - client := c.KubeClient + var ( + retryTimeout = 15 * time.Second + client = c.KubeClient + ) +tryToGetCRD: listOpts := metav1.ListOptions{ FieldSelector: "metadata.name=" + c.CrdName, } @@ -36,7 +41,9 @@ func (c *CrdClientConfig) Update() error { } if len(crdList.Items) == 0 { - return fmt.Errorf("crd/%s not found", c.CrdName) + klog.Errorf("crd/%s not found", c.CrdName) + time.Sleep(retryTimeout) + goto tryToGetCRD } crd := crdList.Items[0] From ddf1dab752aca70b860251ab1de006dc719b76dc Mon Sep 17 00:00:00 2001 From: Yuriy Losev Date: Mon, 18 Mar 2024 23:19:02 +0400 Subject: [PATCH 2/2] Apply suggestions from code review --- pkg/webhook/conversion/crd_client_config.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/webhook/conversion/crd_client_config.go b/pkg/webhook/conversion/crd_client_config.go index a0e12701..c1facc9d 100644 --- a/pkg/webhook/conversion/crd_client_config.go +++ b/pkg/webhook/conversion/crd_client_config.go @@ -7,7 +7,6 @@ import ( log "github.com/sirupsen/logrus" extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/klog/v2" klient "github.com/flant/kube-client/client" ) @@ -41,7 +40,7 @@ tryToGetCRD: } if len(crdList.Items) == 0 { - klog.Errorf("crd/%s not found", c.CrdName) + log.Warnf("crd/%s not found. Will try to find it later", c.CrdName) time.Sleep(retryTimeout) goto tryToGetCRD }