Fix: api-server fail to start, when multi-cluster is disabled (#3501)

Signed-off-by: StevenLeiZhang <zhangleiic@163.com>
This commit is contained in:
StevenLeiZhang
2022-03-23 20:46:29 +08:00
committed by GitHub
parent aaa1db8760
commit 8af5afa5dc
3 changed files with 18 additions and 1 deletions

View File

@@ -17,6 +17,8 @@ limitations under the License.
package clients
import (
"errors"
"k8s.io/client-go/discovery"
"k8s.io/client-go/rest"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -25,6 +27,7 @@ import (
"github.com/oam-dev/kubevela/pkg/cue/packages"
"github.com/oam-dev/kubevela/pkg/multicluster"
"github.com/oam-dev/kubevela/pkg/oam/discoverymapper"
"github.com/oam-dev/kubevela/pkg/utils/common"
)
var kubeClient client.Client
@@ -42,6 +45,18 @@ func GetKubeClient() (client.Client, error) {
}
var err error
kubeClient, kubeConfig, err = multicluster.GetMulticlusterKubernetesClient()
if err == nil {
return kubeClient, nil
}
if !errors.Is(err, multicluster.ErrDetectClusterGateway) {
return nil, err
}
// create single cluster client
conf, err := config.GetConfig()
if err != nil {
return nil, err
}
kubeClient, err = client.New(conf, client.Options{Scheme: common.Scheme})
if err != nil {
return nil, err
}

View File

@@ -30,6 +30,8 @@ var (
ErrClusterNotExists = ClusterManagementError(fmt.Errorf("no such cluster"))
// ErrReservedLocalClusterName reserved cluster name is used
ErrReservedLocalClusterName = ClusterManagementError(fmt.Errorf("cluster name `local` is reserved for kubevela hub cluster"))
// ErrDetectClusterGateway fail to wait for ClusterGateway service ready
ErrDetectClusterGateway = ClusterManagementError(fmt.Errorf("failed to wait for cluster gateway, unable to use multi-cluster"))
)
// ClusterManagementError multicluster management error

View File

@@ -143,7 +143,7 @@ func Initialize(restConfig *rest.Config, autoUpgrade bool) (client.Client, error
}
svc, err := WaitUntilClusterGatewayReady(context.Background(), c, 60, 5*time.Second)
if err != nil {
return nil, errors2.Wrapf(err, "failed to wait for cluster gateway, unable to use multi-cluster")
return nil, ErrDetectClusterGateway
}
ClusterGatewaySecretNamespace = svc.Namespace
klog.Infof("find cluster gateway service %s/%s:%d", svc.Namespace, svc.Name, *svc.Port)