Documentation ¶
Index ¶
- Variables
- func NewDelegatingClientMap(...) clientmap.ClientMap
- func NewGardenClientMap(factory *GardenClientSetFactory, logger logrus.FieldLogger) clientmap.ClientMap
- func NewPlantClientMap(factory *PlantClientSetFactory, logger logrus.FieldLogger) clientmap.ClientMap
- func NewSeedClientMap(factory *SeedClientSetFactory, logger logrus.FieldLogger) clientmap.ClientMap
- func NewShootClientMap(factory *ShootClientSetFactory, logger logrus.FieldLogger) clientmap.ClientMap
- type GardenClientSetFactory
- type GardenClientSetKey
- type GenericClientMap
- type PlantClientSetFactory
- type PlantClientSetKey
- type SeedClientSetFactory
- type SeedClientSetKey
- type ShootClientSetFactory
- type ShootClientSetKey
Constants ¶
This section is empty.
Variables ¶
var ( // NewClientFromFile is an alias to kubernetes.NewClientFromFile which allows it to be mocked for testing. NewClientFromFile = kubernetes.NewClientFromFile // NewClientFromSecret is an alias to kubernetes.NewClientFromSecret which allows it to be mocked for testing. NewClientFromSecret = kubernetes.NewClientFromSecret // NewClientSetWithConfig is an alias to kubernetes.NewWithConfig which allows it to be mocked for testing. NewClientSetWithConfig = kubernetes.NewWithConfig )
github.com/gardener/gardener/pkg/client/kubernetes aliases
var ( // LookupHost is an alias to net.LookupHost which allows it to be mocked for testing. LookupHost = net.LookupHost )
net aliases
var ( // MaxRefreshInterval is the maximum rate at which the version and hash of a single ClientSet are checked, to // decide whether the ClientSet should be refreshed. Also, the GenericClientMap waits at least MaxRefreshInterval // after creating a new ClientSet before checking if it should be refreshed. MaxRefreshInterval = 5 * time.Second )
var ( // ProjectForNamespaceWithClient is an alias to common.ProjectForNamespaceWithClient which allows it to be mocked for testing. ProjectForNamespaceWithClient = common.ProjectForNamespaceWithClient )
github.com/gardener/gardener/pkg/operation/common aliases
Functions ¶
func NewDelegatingClientMap ¶
func NewDelegatingClientMap(gardenClientMap, seedClientMap, shootClientMap, plantClientMap clientmap.ClientMap) clientmap.ClientMap
NewDelegatingClientMap constructs a new delegatingClientMap consisting of the given different ClientMaps. It will panic if `gardenClientMap` is nil.
func NewGardenClientMap ¶
func NewGardenClientMap(factory *GardenClientSetFactory, logger logrus.FieldLogger) clientmap.ClientMap
NewGardenClientMap creates a new gardenClientMap with the given factory and logger.
func NewPlantClientMap ¶
func NewPlantClientMap(factory *PlantClientSetFactory, logger logrus.FieldLogger) clientmap.ClientMap
NewPlantClientMap creates a new plantClientMap with the given factory and logger.
func NewSeedClientMap ¶
func NewSeedClientMap(factory *SeedClientSetFactory, logger logrus.FieldLogger) clientmap.ClientMap
NewSeedClientMap creates a new seedClientMap with the given factory and logger.
func NewShootClientMap ¶
func NewShootClientMap(factory *ShootClientSetFactory, logger logrus.FieldLogger) clientmap.ClientMap
NewShootClientMap creates a new shootClientMap with the given factory and logger.
Types ¶
type GardenClientSetFactory ¶
type GardenClientSetFactory struct { // RESTConfig is a rest.Config that will be used by the created ClientSets. RESTConfig *rest.Config }
GardenClientSetFactory is a ClientSetFactory that can produce new ClientSets to the garden cluster.
func (*GardenClientSetFactory) CalculateClientSetHash ¶
func (f *GardenClientSetFactory) CalculateClientSetHash(context.Context, clientmap.ClientSetKey) (string, error)
CalculateClientSetHash returns "" as the garden client config cannot change during runtime
func (*GardenClientSetFactory) NewClientSet ¶
func (f *GardenClientSetFactory) NewClientSet(_ context.Context, k clientmap.ClientSetKey) (kubernetes.Interface, error)
NewClientSet creates a new ClientSet to the garden cluster.
type GardenClientSetKey ¶
type GardenClientSetKey struct{}
GardenClientSetKey is a ClientSetKey for the garden cluster.
func (GardenClientSetKey) Key ¶
func (k GardenClientSetKey) Key() string
type GenericClientMap ¶
type GenericClientMap struct {
// contains filtered or unexported fields
}
GenericClientMap is a generic implementation of clientmap.ClientMap, which can be used by specific ClientMap implementations to reuse the core logic for storing, requesting, invalidating and starting ClientSets. Specific implementations only need to provide a ClientSetFactory that can produce new ClientSets for the respective keys if a corresponding entry is not found in the GenericClientMap.
func NewGenericClientMap ¶
func NewGenericClientMap(factory clientmap.ClientSetFactory, logger logrus.FieldLogger) *GenericClientMap
NewGenericClientMap creates a new GenericClientMap with the given factory and logger.
func (*GenericClientMap) GetClient ¶
func (cm *GenericClientMap) GetClient(ctx context.Context, key clientmap.ClientSetKey) (kubernetes.Interface, error)
GetClient requests a ClientSet for a cluster identified by the given key. If the ClientSet was already created before, it returns the one saved in the map, otherwise it creates a new ClientSet by using the provided ClientSetFactory. New ClientSets are immediately started if the ClientMap has already been started before. Also GetClient will regularly check if the server version of the targeted cluster has changed and recreate a ClientSet if a version change is detected.
func (*GenericClientMap) InvalidateClient ¶
func (cm *GenericClientMap) InvalidateClient(key clientmap.ClientSetKey) error
InvalidateClient removes the ClientSet identified by the given key from the ClientMap after stopping its cache.
func (*GenericClientMap) Start ¶
func (cm *GenericClientMap) Start(stopCh <-chan struct{}) error
Start starts the caches of all contained ClientSets and saves the stopCh to start the caches of ClientSets, that will be created afterwards.
type PlantClientSetFactory ¶
type PlantClientSetFactory struct { // GetGardenClient is a func that will be used to get a client to the garden cluster to retrieve the Plant's // kubeconfig secret. GetGardenClient func(ctx context.Context) (kubernetes.Interface, error) }
PlantClientSetFactory is a ClientSetFactory that can produce new ClientSets to Plant clusters.
func (*PlantClientSetFactory) CalculateClientSetHash ¶
func (f *PlantClientSetFactory) CalculateClientSetHash(ctx context.Context, k clientmap.ClientSetKey) (string, error)
CalculateClientSetHash calculates a SHA256 hash of the kubeconfig in the plant secret.
func (*PlantClientSetFactory) NewClientSet ¶
func (f *PlantClientSetFactory) NewClientSet(ctx context.Context, k clientmap.ClientSetKey) (kubernetes.Interface, error)
NewClientSet creates a new ClientSet for a Plant cluster.
type PlantClientSetKey ¶
type PlantClientSetKey struct {
Namespace, Name string
}
PlantClientSetKey is a ClientSetKey for a Plant cluster.
func (PlantClientSetKey) Key ¶
func (k PlantClientSetKey) Key() string
type SeedClientSetFactory ¶
type SeedClientSetFactory struct { // GetGardenClient is a func that will be used to get a client to the garden cluster to retrieve the Seed's // kubeconfig secret (if InCluster=false). GetGardenClient func(ctx context.Context) (kubernetes.Interface, error) // If InCluster is set to true, the created ClientSets will use in-cluster communication // (using ClientConnectionConfig.Kubeconfig or fallback to mounted ServiceAccount if unset). InCluster bool // ClientConnectionConfiguration is the configuration that will be used by created ClientSets. ClientConnectionConfig baseconfig.ClientConnectionConfiguration }
SeedClientSetFactory is a ClientSetFactory that can produce new ClientSets to Seed clusters.
func (*SeedClientSetFactory) CalculateClientSetHash ¶
func (f *SeedClientSetFactory) CalculateClientSetHash(ctx context.Context, k clientmap.ClientSetKey) (string, error)
CalculateClientSetHash returns "" if the gardenlet uses in-cluster communication. Otherwise, it calculates a SHA256 hash of the kubeconfig in the seed secret.
func (*SeedClientSetFactory) NewClientSet ¶
func (f *SeedClientSetFactory) NewClientSet(ctx context.Context, k clientmap.ClientSetKey) (kubernetes.Interface, error)
NewClientSet creates a new ClientSet for a Seed cluster.
type SeedClientSetKey ¶
type SeedClientSetKey string
SeedClientSetKey is a ClientSetKey for a Seed cluster.
func (SeedClientSetKey) Key ¶
func (k SeedClientSetKey) Key() string
type ShootClientSetFactory ¶
type ShootClientSetFactory struct { // GetGardenClient is a func that will be used to get a client to the garden cluster to retrieve the Shoot's // Project name (which is used for determining the Shoot's technical ID). GetGardenClient func(ctx context.Context) (kubernetes.Interface, error) // GetSeedClient is a func that will be used to get a client to the Shoot's Seed cluster to retrieve the Shoot's // kubeconfig secret ('gardener-internal' or 'gardener'). GetSeedClient func(ctx context.Context, name string) (kubernetes.Interface, error) // ClientConnectionConfiguration is the configuration that will be used by created ClientSets. ClientConnectionConfig baseconfig.ClientConnectionConfiguration // Log is a logger for logging entries related to creating Shoot ClientSets. Log logrus.FieldLogger }
ShootClientSetFactory is a ClientSetFactory that can produce new ClientSets to Shoot clusters.
func (*ShootClientSetFactory) CalculateClientSetHash ¶
func (f *ShootClientSetFactory) CalculateClientSetHash(ctx context.Context, k clientmap.ClientSetKey) (string, error)
CalculateClientSetHash calculates a SHA256 hash of the kubeconfig in the 'gardener' secret in the Shoot's Seed namespace.
func (*ShootClientSetFactory) NewClientSet ¶
func (f *ShootClientSetFactory) NewClientSet(ctx context.Context, k clientmap.ClientSetKey) (kubernetes.Interface, error)
NewClientSet creates a new ClientSet for a Shoot cluster.
type ShootClientSetKey ¶
type ShootClientSetKey struct {
Namespace, Name string
}
ShootClientSetKey is a ClientSetKey for a Shoot cluster.
func (ShootClientSetKey) Key ¶
func (k ShootClientSetKey) Key() string