From e1f2a7a4b0c67b6a444d25747737b28ae98756ab Mon Sep 17 00:00:00 2001 From: drivebyer Date: Fri, 30 Jun 2023 02:40:28 +0800 Subject: [PATCH] fix: stop discovery errors from bootstrap process (#1465) --- pkg/controller/certificates/csr.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/controller/certificates/csr.go b/pkg/controller/certificates/csr.go index 4ce1c57499e..50bc52e967f 100644 --- a/pkg/controller/certificates/csr.go +++ b/pkg/controller/certificates/csr.go @@ -22,6 +22,7 @@ import ( certificatesV1 "k8s.io/api/certificates/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/discovery" "k8s.io/client-go/kubernetes" "k8s.io/klog/v2" ) @@ -81,7 +82,13 @@ func GetCertificatesAPIVersion(clientSet kubernetes.Interface) CSRVersion { default: apiVersions, err := clientSet.Discovery().ServerPreferredResources() if err != nil { - panic(err) + // If extension API server is not available, we emit a warning and continue. + if discovery.IsGroupDiscoveryFailedError(err) { + klog.Warningf("The Kubernetes server has an orphaned API service. Server reports: %s", err) + klog.Warningf("To fix this, check related API Server or kubectl delete apiservice ") + } else { + panic(err) + } } for _, api := range apiVersions { // if certificates v1beta1 is present operator will use that api by default