Documentation ¶
Index ¶
- Constants
- func NewKubeCache(kialiClient kubernetes.ClientInterface, cfg config.Config) (*kubeCache, error)
- func StripUnusedFields(obj any) (any, error)
- type KialiCache
- func NewKialiCache(clientFactory kubernetes.ClientFactory, cfg config.Config) (KialiCache, error)
- func NewTestingCache(t *testing.T, k8s kubernetes.ClientInterface, conf config.Config) KialiCache
- func NewTestingCacheWithClients(t *testing.T, clients map[string]kubernetes.ClientInterface, ...) KialiCache
- func NewTestingCacheWithFactory(t *testing.T, cf kubernetes.ClientFactory, conf config.Config) KialiCache
- type KubeCache
- type ProxyStatusCache
- type RegistryStatusCache
Constants ¶
const K8sExpGatewayAPIMessage = "k8s experimental Gateway API CRD is needed to be installed"
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
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) }