cache

package
v1.89.4 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2024 License: Apache-2.0 Imports: 42 Imported by: 2

Documentation

Index

Constants

View Source
const K8sExpGatewayAPIMessage = "k8s experimental Gateway API CRD is needed to be installed"
View Source
const K8sGatewayAPIMessage = "k8s Gateway API CRDs are installed, Kiali needs to be restarted to apply"

Variables

This section is empty.

Functions

func NewKubeCache added in v1.64.0

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

Starts all informers. These run until context is cancelled.

func StripUnusedFields added in v1.89.0

func StripUnusedFields(obj any) (any, error)

StripUnusedFields is the transform function for shared informers, it removes unused fields from objects before they are stored in the cache to save memory.

Types

type KialiCache

type KialiCache interface {
	GetBuildInfo() models.BuildInfo
	// SetBuildInfo is not threadsafe. Expected to just be called once at startup.
	SetBuildInfo(buildInfo models.BuildInfo)

	// GetClusters returns the list of clusters that the cache knows about.
	// This gets set by the mesh service.
	GetClusters() []models.KubeCluster
	GetKubeCaches() map[string]KubeCache
	GetKubeCache(cluster string) (KubeCache, error)

	GetMesh() (*models.Mesh, bool)
	SetMesh(*models.Mesh)

	// GetNamespace returns a namespace from the in memory cache if it exists.
	GetNamespace(cluster string, token string, name string) (models.Namespace, bool)

	// GetNamespaces returns all namespaces for the cluster/token from the in memory cache.
	GetNamespaces(cluster string, token string) ([]models.Namespace, bool)

	// GetZtunnelPods returns a list of ztunnel pods from the ztunnel daemonset
	GetZtunnelPods(cluster string) []v1.Pod

	// GetWaypointList returns a list of waypoint proxies workloads by cluster and namespace
	GetWaypointList() models.Workloads
	SetWaypointList(models.Workloads)
	IsWaypointListExpired() bool

	// IsAmbientEnabled checks if the istio Ambient profile was enabled
	// by checking if the ztunnel daemonset exists on the cluster.
	IsAmbientEnabled(cluster string) bool

	// RefreshTokenNamespaces clears the in memory cache of namespaces.
	RefreshTokenNamespaces(cluster string)

	RegistryStatusCache
	ProxyStatusCache

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

	// SetNamespaces sets the in memory cache of namespaces.
	// We cache all namespaces for cluster + token.
	SetNamespaces(token string, namespaces []models.Namespace)

	// SetNamespace caches a specific namespace by cluster + token.
	SetNamespace(token string, namespace models.Namespace)

	// Stop stops the cache and all its kube caches.
	Stop()
}

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. TODO: Consider removing the interface altogether in favor of just exporting the struct.

func NewKialiCache

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

func NewTestingCache added in v1.78.0

func NewTestingCache(t *testing.T, k8s kubernetes.ClientInterface, conf config.Config) KialiCache

NewTestingCache will create a cache for you from the kube client and will cleanup the cache when the test ends.

func NewTestingCacheWithClients added in v1.87.0

func NewTestingCacheWithClients(t *testing.T, clients map[string]kubernetes.ClientInterface, conf config.Config) KialiCache

NewTestingCacheWithClients allows you to pass in a map of clients instead of creating a client factory. Good for testing multicluster.

func NewTestingCacheWithFactory added in v1.78.0

func NewTestingCacheWithFactory(t *testing.T, cf kubernetes.ClientFactory, conf config.Config) KialiCache

NewTestingCacheWithFactory allows you to pass in a custom client factory. Good for testing multicluster.

type KubeCache added in v1.64.0

type KubeCache interface {
	// 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

	GetConfigMaps(namespace, labelSelector string) ([]core_v1.ConfigMap, error)
	GetConfigMap(namespace, name string) (*core_v1.ConfigMap, error)
	GetDaemonSets(namespace string) ([]apps_v1.DaemonSet, error)
	GetDaemonSet(namespace, name string) (*apps_v1.DaemonSet, error)
	GetDaemonSetsWithSelector(namespace string, labelSelector map[string]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)
	GetServicesBySelectorLabels(namespace string, selectorLabels map[string]string) ([]core_v1.Service, error)
	GetServices(namespace string, labelSelector 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_v1.DestinationRule, error)
	GetDestinationRules(namespace, labelSelector string) ([]*networking_v1.DestinationRule, error)
	GetEnvoyFilter(namespace, name string) (*networking_v1alpha3.EnvoyFilter, error)
	GetEnvoyFilters(namespace, labelSelector string) ([]*networking_v1alpha3.EnvoyFilter, error)
	GetGateway(namespace, name string) (*networking_v1.Gateway, error)
	GetGateways(namespace, labelSelector string) ([]*networking_v1.Gateway, error)
	GetServiceEntry(namespace, name string) (*networking_v1.ServiceEntry, error)
	GetServiceEntries(namespace, labelSelector string) ([]*networking_v1.ServiceEntry, error)
	GetSidecar(namespace, name string) (*networking_v1.Sidecar, error)
	GetSidecars(namespace, labelSelector string) ([]*networking_v1.Sidecar, error)
	GetVirtualService(namespace, name string) (*networking_v1.VirtualService, error)
	GetVirtualServices(namespace, labelSelector string) ([]*networking_v1.VirtualService, error)
	GetWorkloadEntry(namespace, name string) (*networking_v1.WorkloadEntry, error)
	GetWorkloadEntries(namespace, labelSelector string) ([]*networking_v1.WorkloadEntry, error)
	GetWorkloadGroup(namespace, name string) (*networking_v1.WorkloadGroup, error)
	GetWorkloadGroups(namespace, labelSelector string) ([]*networking_v1.WorkloadGroup, error)
	GetWasmPlugin(namespace, name string) (*extentions_v1alpha1.WasmPlugin, error)
	GetWasmPlugins(namespace, labelSelector string) ([]*extentions_v1alpha1.WasmPlugin, error)
	GetTelemetry(namespace, name string) (*telemetry_v1.Telemetry, error)
	GetTelemetries(namespace, labelSelector string) ([]*telemetry_v1.Telemetry, error)

	GetK8sGateway(namespace, name string) (*gatewayapi_v1.Gateway, error)
	GetK8sGateways(namespace, labelSelector string) ([]*gatewayapi_v1.Gateway, error)
	GetK8sGRPCRoute(namespace, name string) (*gatewayapi_v1.GRPCRoute, error)
	GetK8sGRPCRoutes(namespace, labelSelector string) ([]*gatewayapi_v1.GRPCRoute, error)
	GetK8sHTTPRoute(namespace, name string) (*gatewayapi_v1.HTTPRoute, error)
	GetK8sHTTPRoutes(namespace, labelSelector string) ([]*gatewayapi_v1.HTTPRoute, error)
	GetK8sReferenceGrant(namespace, name string) (*gatewayapi_v1beta1.ReferenceGrant, error)
	GetK8sReferenceGrants(namespace, labelSelector string) ([]*gatewayapi_v1beta1.ReferenceGrant, error)
	GetK8sTCPRoute(namespace, name string) (*gatewayapi_v1alpha2.TCPRoute, error)
	GetK8sTCPRoutes(namespace, labelSelector string) ([]*gatewayapi_v1alpha2.TCPRoute, error)
	GetK8sTLSRoute(namespace, name string) (*gatewayapi_v1alpha2.TLSRoute, error)
	GetK8sTLSRoutes(namespace, labelSelector string) ([]*gatewayapi_v1alpha2.TLSRoute, error)

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

type ProxyStatusCache added in v1.25.0

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

type RegistryStatusCache added in v1.35.0

type RegistryStatusCache interface {
	GetRegistryStatus(cluster string) *kubernetes.RegistryStatus
	SetRegistryStatus(registryStatus map[string]*kubernetes.RegistryStatus)
}

Jump to

Keyboard shortcuts

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