From 248e6be0730874e34f3bad332e19a0167305a89d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= <charles.edouard@nirmata.com> Date: Tue, 6 Jun 2023 17:47:28 +0200 Subject: [PATCH] fix: error reported when sanity check fails (#7439) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> --- cmd/kyverno/main.go | 6 +----- pkg/utils/kube/crd.go | 16 ++++++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cmd/kyverno/main.go b/cmd/kyverno/main.go index edd61745fa..dde52969a1 100644 --- a/cmd/kyverno/main.go +++ b/cmd/kyverno/main.go @@ -5,7 +5,6 @@ import ( "context" "errors" "flag" - "fmt" "os" "strings" "sync" @@ -62,10 +61,7 @@ func showWarnings(logger logr.Logger) { } func sanityChecks(apiserverClient apiserver.Interface) error { - if !kubeutils.CRDsInstalled(apiserverClient) { - return fmt.Errorf("CRDs not installed") - } - return nil + return kubeutils.CRDsInstalled(apiserverClient) } func createNonLeaderControllers( diff --git a/pkg/utils/kube/crd.go b/pkg/utils/kube/crd.go index ba1d6f699f..52ecc3d040 100644 --- a/pkg/utils/kube/crd.go +++ b/pkg/utils/kube/crd.go @@ -2,13 +2,15 @@ package kube import ( "context" + "fmt" + "go.uber.org/multierr" apiserver "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // CRDsInstalled checks if the Kyverno CRDs are installed or not -func CRDsInstalled(apiserverClient apiserver.Interface) bool { +func CRDsInstalled(apiserverClient apiserver.Interface) error { kyvernoCRDs := []string{ "admissionreports.kyverno.io", "backgroundscanreports.kyverno.io", @@ -23,15 +25,17 @@ func CRDsInstalled(apiserverClient apiserver.Interface) bool { "policyreports.wgpolicyk8s.io", "updaterequests.kyverno.io", } + var errs []error for _, crd := range kyvernoCRDs { - if !isCRDInstalled(apiserverClient, crd) { - return false + err := isCRDInstalled(apiserverClient, crd) + if err != nil { + errs = append(errs, fmt.Errorf("failed to check CRD %s is installed: %s", crd, err)) } } - return true + return multierr.Combine(errs...) } -func isCRDInstalled(apiserverClient apiserver.Interface, kind string) bool { +func isCRDInstalled(apiserverClient apiserver.Interface, kind string) error { _, err := apiserverClient.ApiextensionsV1().CustomResourceDefinitions().Get(context.Background(), kind, metav1.GetOptions{}) - return err == nil + return err }