multicluster

package
v0.0.0-...-1d80bfb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2024 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LocalCluster clusterType = iota
	PivotCluster
	MemberCluster
	AllCluster
)

Variables

View Source
var ManagerImpl = newMultiClusterMgr()

ManagerImpl instance implement interface, init local cluster at first.

Functions

func AddInternalCluster

func AddInternalCluster(cluster clusterv1.Cluster) error

AddInternalCluster build internal cluster of cluster and add it to multi cluster manager without scout.

func AddInternalClusterWithScout

func AddInternalClusterWithScout(cluster clusterv1.Cluster) error

AddInternalClusterWithScout build internal cluster of cluster and add it to multi cluster manager with scout by default opts.

func AddInternalClusterWithScoutOpts

func AddInternalClusterWithScoutOpts(cluster clusterv1.Cluster, scoutInitialDelaySeconds, scoutWaitTimeoutSeconds int) error

AddInternalClusterWithScoutOpts build internal cluster of cluster and add it to multi cluster manager with scout opts.

func ClusterWideKeyFunc

func ClusterWideKeyFunc(obj interface{}) (worker.QueueKey, error)

ClusterWideKeyFunc generates a ClusterWideKey for object.

func InitFakeMultiClusterMgrWithOpts

func InitFakeMultiClusterMgrWithOpts(opts *fake.Options)

InitFakeMultiClusterMgrWithOpts must be called at first in testing

func NewDefaultMultiVersionConverter

func NewDefaultMultiVersionConverter(m Manager) conversion.MultiVersionConverter

Types

type DefaultMultiVersionConverter

type DefaultMultiVersionConverter struct {
	// contains filtered or unexported fields
}

func (*DefaultMultiVersionConverter) GetVersionConvert

func (m *DefaultMultiVersionConverter) GetVersionConvert(cluster string) (*conversion.VersionConverter, error)

type FakerManagerImpl

type FakerManagerImpl struct {
	sync.RWMutex
	Clusters map[string]*InternalCluster
}

FakerManagerImpl implements Manager

func (*FakerManagerImpl) Add

func (m *FakerManagerImpl) Add(cluster string, c *InternalCluster) error

func (*FakerManagerImpl) Del

func (m *FakerManagerImpl) Del(cluster string) error

func (*FakerManagerImpl) FuzzyCopy

func (m *FakerManagerImpl) FuzzyCopy() map[string]*FuzzyCluster

func (*FakerManagerImpl) Get

func (m *FakerManagerImpl) Get(cluster string) (*InternalCluster, error)

func (*FakerManagerImpl) GetClient

func (m *FakerManagerImpl) GetClient(cluster string) (client.Client, error)

func (*FakerManagerImpl) GetTransport

func (m *FakerManagerImpl) GetTransport(cluster string) (http.RoundTripper, error)

func (*FakerManagerImpl) ListClustersByType

func (m *FakerManagerImpl) ListClustersByType(t clusterType) []*InternalCluster

func (*FakerManagerImpl) ListClustersNameByType

func (m *FakerManagerImpl) ListClustersNameByType(t clusterType) []string

func (*FakerManagerImpl) ScoutFor

func (m *FakerManagerImpl) ScoutFor(ctx context.Context, cluster string) error

ScoutFor do nothing in testing

func (*FakerManagerImpl) Version

func (m *FakerManagerImpl) Version(cluster string) (*version.Info, error)

type FuzzyCluster

type FuzzyCluster struct {
	Name       string
	Config     *rest.Config
	Client     client.Client
	RawCluster *clusterv1.Cluster
}

FuzzyCluster be exported for test

type InternalCluster

type InternalCluster struct {
	// Name the cluster name
	Name string

	// Type of cluster
	Type clusterType

	// Client holds all the clients needed
	Client client.Client

	// Scout knows the health status of cluster and keep watch
	Scout *scout.Scout

	// Config bind to a real cluster
	Config *rest.Config

	// Version the k8s Version about internal cluster
	Version *version.Info

	// RawCluster holds raw cluster
	RawCluster *clusterv1.Cluster

	// StopCh for closing channel when delete cluster, goroutine
	// of cache and scout will exit gracefully.
	StopCh chan struct{}
	// contains filtered or unexported fields
}

InternalCluster represent a cluster runtime contains client and internal warden.

func NewInternalCluster

func NewInternalCluster(cluster clusterv1.Cluster) (*InternalCluster, error)

type Manager

type Manager interface {
	// Add runtime cache in memory
	Add(cluster string, internalCluster *InternalCluster) error
	Get(cluster string) (*InternalCluster, error)
	Del(cluster string) error

	// Version the k8s version about cluster
	Version(cluster string) (*version.Info, error)

	// FuzzyCopy return fuzzy cluster of raw
	FuzzyCopy() map[string]*FuzzyCluster

	// ScoutFor scout heartbeat for warden
	ScoutFor(ctx context.Context, cluster string) error

	// GetClient get client for cluster by name
	GetClient(cluster string) (client.Client, error)

	GetTransport(cluster string) (http.RoundTripper, error)

	// ListClustersByType list clusters by given type
	ListClustersByType(t clusterType) []*InternalCluster

	// ListClustersNameByType list cluster names by given type
	ListClustersNameByType(t clusterType) []string
}

Manager access to internal cluster

func Interface

func Interface() Manager

Interface the way to be used outside for multi cluster manager

type MultiClustersMgr

type MultiClustersMgr struct {
	sync.RWMutex
	Clusters map[string]*InternalCluster
}

MultiClustersMgr a memory cache for runtime cluster.

func (*MultiClustersMgr) Add

func (m *MultiClustersMgr) Add(cluster string, c *InternalCluster) error

func (*MultiClustersMgr) Del

func (m *MultiClustersMgr) Del(cluster string) error

func (*MultiClustersMgr) FuzzyCopy

func (m *MultiClustersMgr) FuzzyCopy() map[string]*FuzzyCluster

FuzzyCopy copy all internal clusters when runtime except local cluster

func (*MultiClustersMgr) Get

func (m *MultiClustersMgr) Get(cluster string) (*InternalCluster, error)

func (*MultiClustersMgr) GetClient

func (m *MultiClustersMgr) GetClient(cluster string) (client.Client, error)

func (*MultiClustersMgr) GetTransport

func (m *MultiClustersMgr) GetTransport(cluster string) (http.RoundTripper, error)

func (*MultiClustersMgr) ListClustersByType

func (m *MultiClustersMgr) ListClustersByType(t clusterType) []*InternalCluster

ListClustersByType get clusters by given type return nil if found no clusters with type.

func (*MultiClustersMgr) ListClustersNameByType

func (m *MultiClustersMgr) ListClustersNameByType(t clusterType) []string

ListClustersNameByType get cluster names by given type return nil if found no clusters with type.

func (*MultiClustersMgr) ScoutFor

func (m *MultiClustersMgr) ScoutFor(ctx context.Context, cluster string) error

ScoutFor starts watch for warden intelligence

func (*MultiClustersMgr) Version

func (m *MultiClustersMgr) Version(cluster string) (*version.Info, error)

type SyncMgr

type SyncMgr struct {
	Informer cache.Informer
	Worker   worker.Interface

	// ScoutWaitTimeoutSeconds that heartbeat not receive timeout
	ScoutWaitTimeoutSeconds int
	// ScoutInitialDelaySeconds the time that wait for warden start
	ScoutInitialDelaySeconds int
	// contains filtered or unexported fields
}

SyncMgr only running when process as subsidiary

func NewSyncMgr

func NewSyncMgr(config *rest.Config, isWithScout bool, scoutInitialDelaySeconds, scoutWaitTimeoutSeconds int) (*SyncMgr, error)

func NewSyncMgrWithDefaultSetting

func NewSyncMgrWithDefaultSetting(config *rest.Config, isWithScout bool) (*SyncMgr, error)

func NewSyncMgrWithScoutSetting

func NewSyncMgrWithScoutSetting(config *rest.Config, scoutInitialDelaySeconds, scoutWaitTimeoutSeconds int) (*SyncMgr, error)

func (*SyncMgr) OnClusterAdd

func (m *SyncMgr) OnClusterAdd(obj interface{})

func (*SyncMgr) OnClusterDelete

func (m *SyncMgr) OnClusterDelete(obj interface{})

func (*SyncMgr) OnClusterUpdate

func (m *SyncMgr) OnClusterUpdate(oldObj, newObj interface{})

func (*SyncMgr) ReconcileCluster

func (m *SyncMgr) ReconcileCluster(key worker.QueueKey) error

ReconcileCluster sync cluster during multi Kubeworkz instance

func (*SyncMgr) Start

func (m *SyncMgr) Start(ctx context.Context) error

Start keep sync cluster change by informer

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL