cache

package
v1.76.1 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2023 License: Apache-2.0 Imports: 36 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewKubeCache added in v1.64.0

func NewKubeCache(kialiClient kubernetes.ClientInterface, cfg config.Config, refreshHandler RegistryRefreshHandler) (*kubeCache, error)

Starts all informers. These run until context is cancelled.

Types

type KialiCache

type KialiCache interface {
	GetKubeCaches() map[string]KubeCache
	GetKubeCache(cluster string) (KubeCache, error)

	// GetClusters returns the list of clusters that the cache knows about.
	// This gets set by the mesh service.
	GetClusters() []kubernetes.Cluster

	// SetClusters sets the list of clusters that the cache knows about.
	SetClusters([]kubernetes.Cluster)

	// Embedded for backward compatibility for business methods that just use one cluster.
	// All business methods should eventually use the multi-cluster cache.
	// Instead of using the interface directly for kube objects, use the GetKubeCache() method.
	KubeCache

	NamespacesCache
	ProxyStatusCache
	RegistryStatusCache
}

KialiCache stores both kube objects and non-kube related data such as pods' proxy status. It is exclusively used by the business layer where it's expected to be a singleton. This business layer cache needs access to all the kiali service account has access to so it uses the kiali service account token instead of a user token. Access to the objects returned by the cache should be filtered/restricted to the user's token access but the cache returns objects without any filtering or restrictions.

func FakeGatewaysKialiCache added in v1.45.0

func FakeGatewaysKialiCache(gws []*networking_v1beta1.Gateway) KialiCache

Fake KialiCache used for Gateway Scenarios It populates the Namespaces, Informers and Gateway information needed

func FakeServicesKialiCache added in v1.46.0

Fake KialiCache used for RegistryServices and All IstioConfigs Scenarios It populates the Namespaces, Informers and Registry information needed

func FakeTlsKialiCache added in v1.45.0

func FakeTlsKialiCache(token string, namespaces []string, pa []*security_v1beta1.PeerAuthentication, dr []*networking_v1beta1.DestinationRule) KialiCache

Fake KialiCache used for TLS Scenarios It populates the Namespaces, Informers and Registry information needed

func NewKialiCache

func NewKialiCache(clientFactory kubernetes.ClientFactory, cfg config.Config) (KialiCache, error)

type KubeCache added in v1.64.0

type KubeCache interface {
	// Control methods
	// Check if a namespace is listed to be cached; if yes, creates a cache for that namespace
	CheckNamespace(namespace string) bool

	// Refresh will recreate the necessary cache. If the cache is cluster-scoped the "namespace" argument
	// is ignored and the whole cache is recreated, otherwise only the namespace-specific cache is updated.
	Refresh(namespace string)

	// Stop all caches
	Stop()

	// Client returns the underlying client for the KubeCache.
	// This is useful for when you want to talk directly to the kube API
	// using the Kiali Service Account client.
	Client() kubernetes.ClientInterface

	// UpdateClient will update the client used by the cache.
	// Useful for when the token is refreshed for the client.
	// This causes a full refresh of the cache.
	UpdateClient(client kubernetes.ClientInterface) error

	GetConfigMap(namespace, name string) (*core_v1.ConfigMap, error)
	GetDaemonSets(namespace string) ([]apps_v1.DaemonSet, error)
	GetDaemonSet(namespace, name string) (*apps_v1.DaemonSet, error)
	GetDeployments(namespace string) ([]apps_v1.Deployment, error)
	GetDeploymentsWithSelector(namespace string, labelSelector string) ([]apps_v1.Deployment, error)
	GetDeployment(namespace, name string) (*apps_v1.Deployment, error)
	GetEndpoints(namespace, name string) (*core_v1.Endpoints, error)
	GetStatefulSets(namespace string) ([]apps_v1.StatefulSet, error)
	GetStatefulSet(namespace, name string) (*apps_v1.StatefulSet, error)
	GetServices(namespace string, selectorLabels map[string]string) ([]core_v1.Service, error)
	GetService(namespace string, name string) (*core_v1.Service, error)
	GetPods(namespace, labelSelector string) ([]core_v1.Pod, error)
	GetReplicaSets(namespace string) ([]apps_v1.ReplicaSet, error)

	GetDestinationRule(namespace, name string) (*networking_v1beta1.DestinationRule, error)
	GetDestinationRules(namespace, labelSelector string) ([]*networking_v1beta1.DestinationRule, error)
	GetEnvoyFilter(namespace, name string) (*networking_v1alpha3.EnvoyFilter, error)
	GetEnvoyFilters(namespace, labelSelector string) ([]*networking_v1alpha3.EnvoyFilter, error)
	GetGateway(namespace, name string) (*networking_v1beta1.Gateway, error)
	GetGateways(namespace, labelSelector string) ([]*networking_v1beta1.Gateway, error)
	GetServiceEntry(namespace, name string) (*networking_v1beta1.ServiceEntry, error)
	GetServiceEntries(namespace, labelSelector string) ([]*networking_v1beta1.ServiceEntry, error)
	GetSidecar(namespace, name string) (*networking_v1beta1.Sidecar, error)
	GetSidecars(namespace, labelSelector string) ([]*networking_v1beta1.Sidecar, error)
	GetVirtualService(namespace, name string) (*networking_v1beta1.VirtualService, error)
	GetVirtualServices(namespace, labelSelector string) ([]*networking_v1beta1.VirtualService, error)
	GetWorkloadEntry(namespace, name string) (*networking_v1beta1.WorkloadEntry, error)
	GetWorkloadEntries(namespace, labelSelector string) ([]*networking_v1beta1.WorkloadEntry, error)
	GetWorkloadGroup(namespace, name string) (*networking_v1beta1.WorkloadGroup, error)
	GetWorkloadGroups(namespace, labelSelector string) ([]*networking_v1beta1.WorkloadGroup, error)
	GetWasmPlugin(namespace, name string) (*extentions_v1alpha1.WasmPlugin, error)
	GetWasmPlugins(namespace, labelSelector string) ([]*extentions_v1alpha1.WasmPlugin, error)
	GetTelemetry(namespace, name string) (*v1alpha1.Telemetry, error)
	GetTelemetries(namespace, labelSelector string) ([]*v1alpha1.Telemetry, error)

	GetK8sGateway(namespace, name string) (*gatewayapi_v1beta1.Gateway, error)
	GetK8sGateways(namespace, labelSelector string) ([]*gatewayapi_v1beta1.Gateway, error)
	GetK8sHTTPRoute(namespace, name string) (*gatewayapi_v1beta1.HTTPRoute, error)
	GetK8sHTTPRoutes(namespace, labelSelector string) ([]*gatewayapi_v1beta1.HTTPRoute, error)

	GetAuthorizationPolicy(namespace, name string) (*security_v1beta1.AuthorizationPolicy, error)
	GetAuthorizationPolicies(namespace, labelSelector string) ([]*security_v1beta1.AuthorizationPolicy, error)
	GetPeerAuthentication(namespace, name string) (*security_v1beta1.PeerAuthentication, error)
	GetPeerAuthentications(namespace, labelSelector string) ([]*security_v1beta1.PeerAuthentication, error)
	GetRequestAuthentication(namespace, name string) (*security_v1beta1.RequestAuthentication, error)
	GetRequestAuthentications(namespace, labelSelector string) ([]*security_v1beta1.RequestAuthentication, error)
}

type NamespacesCache

type NamespacesCache interface {
	SetNamespaces(token string, namespaces []models.Namespace)
	GetNamespaces(token string) []models.Namespace
	GetNamespace(token string, namespace string, cluster string) *models.Namespace
	RefreshTokenNamespaces()
}

type ProxyStatusCache added in v1.25.0

type ProxyStatusCache interface {
	GetPodProxyStatus(cluster, namespace, pod string) *kubernetes.ProxyStatus
}

type RegistryRefreshHandler added in v1.44.0

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

func NewRegistryHandler added in v1.44.0

func NewRegistryHandler(refresh func()) RegistryRefreshHandler

func (RegistryRefreshHandler) OnAdd added in v1.44.0

func (sh RegistryRefreshHandler) OnAdd(obj interface{}, isInInitialList bool)

func (RegistryRefreshHandler) OnDelete added in v1.44.0

func (sh RegistryRefreshHandler) OnDelete(obj interface{})

func (RegistryRefreshHandler) OnUpdate added in v1.44.0

func (sh RegistryRefreshHandler) OnUpdate(oldObj, newObj interface{})

type RegistryStatusCache added in v1.35.0

type RegistryStatusCache interface {
	CheckRegistryStatus() bool
	GetRegistryStatus() *kubernetes.RegistryStatus
	SetRegistryStatus(registryStatus *kubernetes.RegistryStatus)
	RefreshRegistryStatus()
}

Jump to

Keyboard shortcuts

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