remove the karmada client from aggregated-apiserver
Signed-off-by: carlory <baofa.fan@daocloud.io>
This commit is contained in:
parent
878a71a673
commit
17578c8466
|
|
@ -21,7 +21,6 @@ import (
|
|||
"github.com/karmada-io/karmada/pkg/aggregatedapiserver"
|
||||
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
clientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||
informers "github.com/karmada-io/karmada/pkg/generated/informers/externalversions"
|
||||
)
|
||||
|
||||
|
|
@ -87,9 +86,8 @@ func (o *Options) Run(ctx context.Context) error {
|
|||
}
|
||||
restConfig.QPS, restConfig.Burst = o.KubeAPIQPS, o.KubeAPIBurst
|
||||
kubeClientSet := kubernetes.NewForConfigOrDie(restConfig)
|
||||
karmadaClient := karmadaclientset.NewForConfigOrDie(restConfig)
|
||||
|
||||
server, err := config.Complete().New(kubeClientSet, karmadaClient)
|
||||
server, err := config.Complete().New(kubeClientSet)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ import (
|
|||
|
||||
clusterapis "github.com/karmada-io/karmada/pkg/apis/cluster"
|
||||
clusterinstall "github.com/karmada-io/karmada/pkg/apis/cluster/install"
|
||||
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||
clusterstorage "github.com/karmada-io/karmada/pkg/registry/cluster/storage"
|
||||
)
|
||||
|
||||
|
|
@ -86,7 +85,7 @@ func (cfg *Config) Complete() CompletedConfig {
|
|||
return CompletedConfig{&c}
|
||||
}
|
||||
|
||||
func (c completedConfig) New(kubeClient kubernetes.Interface, karmadaClient karmadaclientset.Interface) (*APIServer, error) {
|
||||
func (c completedConfig) New(kubeClient kubernetes.Interface) (*APIServer, error) {
|
||||
genericServer, err := c.GenericConfig.New("aggregated-apiserver", genericapiserver.NewEmptyDelegate())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -98,7 +97,7 @@ func (c completedConfig) New(kubeClient kubernetes.Interface, karmadaClient karm
|
|||
|
||||
apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(clusterapis.GroupName, Scheme, ParameterCodec, Codecs)
|
||||
|
||||
clusterStorage, err := clusterstorage.NewStorage(Scheme, kubeClient, karmadaClient, c.GenericConfig.RESTOptionsGetter)
|
||||
clusterStorage, err := clusterstorage.NewStorage(Scheme, kubeClient, c.GenericConfig.RESTOptionsGetter)
|
||||
if err != nil {
|
||||
klog.Errorf("unable to create REST storage for a resource due to %v, will die", err)
|
||||
return nil, err
|
||||
|
|
|
|||
|
|
@ -13,19 +13,19 @@ import (
|
|||
"k8s.io/apimachinery/pkg/util/proxy"
|
||||
"k8s.io/apiserver/pkg/endpoints/handlers/responsewriters"
|
||||
"k8s.io/apiserver/pkg/endpoints/request"
|
||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||
"k8s.io/apiserver/pkg/registry/rest"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
|
||||
clusterapis "github.com/karmada-io/karmada/pkg/apis/cluster"
|
||||
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||
)
|
||||
|
||||
// ProxyREST implements the proxy subresource for a Cluster.
|
||||
type ProxyREST struct {
|
||||
Store *genericregistry.Store
|
||||
Redirector rest.Redirector
|
||||
|
||||
kubeClient kubernetes.Interface
|
||||
karmadaClient karmadaclientset.Interface
|
||||
kubeClient kubernetes.Interface
|
||||
}
|
||||
|
||||
// Implement Connecter
|
||||
|
|
@ -61,7 +61,7 @@ func (r *ProxyREST) Connect(ctx context.Context, id string, options runtime.Obje
|
|||
}
|
||||
location.Path = proxyOpts.Path
|
||||
|
||||
impersonateToken, err := r.getImpersonateToken(id)
|
||||
impersonateToken, err := r.getImpersonateToken(ctx, id)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get impresonateToken for cluster %s: %v", id, err)
|
||||
}
|
||||
|
|
@ -69,8 +69,8 @@ func (r *ProxyREST) Connect(ctx context.Context, id string, options runtime.Obje
|
|||
return newProxyHandler(location, transport, impersonateToken, responder)
|
||||
}
|
||||
|
||||
func (r *ProxyREST) getImpersonateToken(clusterName string) (string, error) {
|
||||
cluster, err := r.karmadaClient.ClusterV1alpha1().Clusters().Get(context.TODO(), clusterName, metav1.GetOptions{})
|
||||
func (r *ProxyREST) getImpersonateToken(ctx context.Context, clusterName string) (string, error) {
|
||||
cluster, err := getCluster(ctx, r.Store, clusterName)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,41 +16,21 @@ import (
|
|||
"sigs.k8s.io/structured-merge-diff/v4/fieldpath"
|
||||
|
||||
clusterapis "github.com/karmada-io/karmada/pkg/apis/cluster"
|
||||
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||
"github.com/karmada-io/karmada/pkg/printers"
|
||||
printersinternal "github.com/karmada-io/karmada/pkg/printers/internalversion"
|
||||
printerstorage "github.com/karmada-io/karmada/pkg/printers/storage"
|
||||
clusterregistry "github.com/karmada-io/karmada/pkg/registry/cluster"
|
||||
)
|
||||
|
||||
// ClusterStorage includes storage for Cluster and for Status subresource.
|
||||
// ClusterStorage includes storage for Cluster and for all the subresources.
|
||||
type ClusterStorage struct {
|
||||
Cluster *REST
|
||||
Status *StatusREST
|
||||
Proxy *ProxyREST
|
||||
}
|
||||
|
||||
// NewStorage returns new instance of ClusterStorage.
|
||||
func NewStorage(scheme *runtime.Scheme, kubeClient kubernetes.Interface, karmadaClient karmadaclientset.Interface,
|
||||
optsGetter generic.RESTOptionsGetter) (ClusterStorage, error) {
|
||||
clusterRest, clusterStatusRest, err := NewREST(scheme, optsGetter)
|
||||
if err != nil {
|
||||
return ClusterStorage{}, err
|
||||
}
|
||||
|
||||
return ClusterStorage{
|
||||
Cluster: clusterRest,
|
||||
Status: clusterStatusRest,
|
||||
Proxy: &ProxyREST{
|
||||
Redirector: clusterRest,
|
||||
kubeClient: kubeClient,
|
||||
karmadaClient: karmadaClient,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// NewREST returns a RESTStorage object that will work against API services.
|
||||
func NewREST(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, error) {
|
||||
// NewStorage returns a ClusterStorage object that will work against clusters.
|
||||
func NewStorage(scheme *runtime.Scheme, kubeClient kubernetes.Interface, optsGetter generic.RESTOptionsGetter) (*ClusterStorage, error) {
|
||||
strategy := clusterregistry.NewStrategy(scheme)
|
||||
|
||||
store := &genericregistry.Store{
|
||||
|
|
@ -68,7 +48,7 @@ func NewREST(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (*RES
|
|||
|
||||
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: clusterregistry.GetAttrs}
|
||||
if err := store.CompleteWithOptions(options); err != nil {
|
||||
return nil, nil, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
statusStrategy := clusterregistry.NewStatusStrategy(strategy)
|
||||
|
|
@ -76,7 +56,16 @@ func NewREST(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (*RES
|
|||
statusStore.UpdateStrategy = statusStrategy
|
||||
statusStore.ResetFieldsStrategy = statusStrategy
|
||||
|
||||
return &REST{store}, &StatusREST{store: &statusStore}, nil
|
||||
clusterRest := &REST{store}
|
||||
return &ClusterStorage{
|
||||
Cluster: clusterRest,
|
||||
Status: &StatusREST{&statusStore},
|
||||
Proxy: &ProxyREST{
|
||||
Store: store,
|
||||
Redirector: clusterRest,
|
||||
kubeClient: kubeClient,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// REST implements a RESTStorage for Cluster.
|
||||
|
|
|
|||
Loading…
Reference in New Issue