1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-06 07:57:07 +00:00
kyverno/pkg/utils/kube/crd.go
Charles-Edouard Brétéché b743a8999c
fix: use client instead of discovery for sanity checks (#6296)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
Co-authored-by: shuting <shuting@nirmata.com>
2023-02-10 15:38:34 +00:00

37 lines
1.1 KiB
Go

package kube
import (
"context"
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 {
kyvernoCRDs := []string{
"admissionreports.kyverno.io",
"backgroundscanreports.kyverno.io",
"cleanuppolicies.kyverno.io",
"clusteradmissionreports.kyverno.io",
"clusterbackgroundscanreports.kyverno.io",
"clustercleanuppolicies.kyverno.io",
"clusterpolicies.kyverno.io",
"clusterpolicyreports.wgpolicyk8s.io",
"policies.kyverno.io",
"policyexceptions.kyverno.io",
"policyreports.wgpolicyk8s.io",
"updaterequests.kyverno.io",
}
for _, crd := range kyvernoCRDs {
if !isCRDInstalled(apiserverClient, crd) {
return false
}
}
return true
}
func isCRDInstalled(apiserverClient apiserver.Interface, kind string) bool {
_, err := apiserverClient.ApiextensionsV1().CustomResourceDefinitions().Get(context.Background(), kind, metav1.GetOptions{})
return err == nil
}