Documentation
¶
Index ¶
- Constants
- func CreateCiliumEndpointLocalPodIndexFunc() cache.IndexFunc
- func CreateCiliumEndpointSliceLocalPodIndexFunc() cache.IndexFunc
- func NewCiliumNodeUpdater(kvStoreNodeUpdater NodeUpdate) *ciliumNodeUpdater
- type EndpointSynchronizer
- type K8sWatcher
- func (k *K8sWatcher) EnableK8sWatcher(ctx context.Context, resources []string) error
- func (k *K8sWatcher) GetAPIGroups() []string
- func (k *K8sWatcher) GetCachedNamespace(namespace string) (*slim_corev1.Namespace, error)
- func (k *K8sWatcher) GetCachedPod(namespace, name string) (*slim_corev1.Pod, error)
- func (k *K8sWatcher) GetIndexer(name string) cache.Indexer
- func (k *K8sWatcher) GetK8sNode(_ context.Context, nodeName string) (*v1.Node, error)
- func (k *K8sWatcher) GetStore(name string) cache.Store
- func (k *K8sWatcher) InitK8sSubsystem(ctx context.Context, cachesSynced chan struct{})
- func (k *K8sWatcher) K8sEventProcessed(scope string, action string, status bool)
- func (k *K8sWatcher) K8sEventReceived(scope string, action string, valid, equal bool)
- func (k *K8sWatcher) NodesInit(k8sClient *k8s.K8sClient)
- func (k *K8sWatcher) RunK8sServiceHandler()
- func (k *K8sWatcher) SetIndexer(name string, indexer cache.Indexer)
- func (k *K8sWatcher) WaitForCRDsToRegister(ctx context.Context) error
- func (k *K8sWatcher) WaitForCacheSync(resourceNames ...string)
- type NodeUpdate
- type WatcherConfiguration
Constants ¶
const ( K8sAPIGroupServiceV1Core = "core/v1::Service" K8sAPIGroupEndpointV1Core = "core/v1::Endpoint" K8sAPIGroupPodV1Core = "core/v1::Pods" K8sAPIGroupEndpointSliceV1Beta1Discovery = "discovery/v1beta1::EndpointSlice" K8sAPIGroupEndpointSliceV1Discovery = "discovery/v1::EndpointSlice" )
Variables ¶
This section is empty.
Functions ¶
func CreateCiliumEndpointLocalPodIndexFunc ¶
CreateCiliumEndpointLocalPodIndexFunc returns an IndexFunc that indexes only local CiliumEndpoints, by their local Node IP.
func CreateCiliumEndpointSliceLocalPodIndexFunc ¶
CreateCiliumEndpointSliceLocalPodIndexFunc returns an IndexFunc that indexes CiliumEndpointSlices by their corresponding Pod, which are running locally on this Node.
func NewCiliumNodeUpdater ¶
func NewCiliumNodeUpdater(kvStoreNodeUpdater NodeUpdate) *ciliumNodeUpdater
Types ¶
type EndpointSynchronizer ¶
type EndpointSynchronizer struct{}
EndpointSynchronizer currently is an empty type, which wraps around syncing of CiliumEndpoint resources.
func (*EndpointSynchronizer) DeleteK8sCiliumEndpointSync ¶
func (epSync *EndpointSynchronizer) DeleteK8sCiliumEndpointSync(e *endpoint.Endpoint)
DeleteK8sCiliumEndpointSync replaces the endpoint controller to remove the CEP from Kubernetes once the endpoint is stopped / removed from the Cilium agent.
func (*EndpointSynchronizer) RunK8sCiliumEndpointSync ¶
func (epSync *EndpointSynchronizer) RunK8sCiliumEndpointSync(e *endpoint.Endpoint, conf endpoint.EndpointStatusConfiguration)
RunK8sCiliumEndpointSync starts a controller that synchronizes the endpoint to the corresponding k8s CiliumEndpoint CRD. It is expected that each CEP has 1 controller that updates it, and a local copy is retained and only updates are pushed up. CiliumEndpoint objects have the same name as the pod they represent.
type K8sWatcher ¶
type K8sWatcher struct { // K8sSvcCache is a cache of all Kubernetes services and endpoints K8sSvcCache k8s.ServiceCache // NodeChain is the root of a notification chain for k8s Node events. // This NodeChain allows registration of subscriber.Node implementations. // On k8s Node events all registered subscriber.Node implementations will // have their event handling methods called in order of registration. NodeChain *subscriber.NodeChain // contains filtered or unexported fields }
func NewK8sWatcher ¶
func NewK8sWatcher( endpointManager endpointManager, nodeDiscoverManager nodeDiscoverManager, policyManager policyManager, policyRepository policyRepository, svcManager svcManager, datapath datapath.Datapath, redirectPolicyManager redirectPolicyManager, bgpSpeakerManager bgpSpeakerManager, egressGatewayManager egressGatewayManager, cfg WatcherConfiguration, ) *K8sWatcher
func (*K8sWatcher) EnableK8sWatcher ¶ added in v1.7.0
func (k *K8sWatcher) EnableK8sWatcher(ctx context.Context, resources []string) error
EnableK8sWatcher watches for policy, services and endpoint changes on the Kubernetes api server defined in the receiver's daemon k8sClient.
func (*K8sWatcher) GetAPIGroups ¶
func (k *K8sWatcher) GetAPIGroups() []string
func (*K8sWatcher) GetCachedNamespace ¶
func (k *K8sWatcher) GetCachedNamespace(namespace string) (*slim_corev1.Namespace, error)
GetCachedNamespace returns a namespace from the local store.
func (*K8sWatcher) GetCachedPod ¶
func (k *K8sWatcher) GetCachedPod(namespace, name string) (*slim_corev1.Pod, error)
GetCachedPod returns a pod from the local store. Depending if the Cilium agent flag `option.Config.K8sEventHandover` this function might only return local pods. If `option.Config.K8sEventHandover` is:
- true: returns only local pods received by the pod watcher.
- false: returns any pod in the cluster received by the pod watcher.
func (*K8sWatcher) GetIndexer ¶
func (k *K8sWatcher) GetIndexer(name string) cache.Indexer
GetIndexer returns an index to a k8s cache store for the given resource name. Objects gotten using returned stores should *not* be mutated as they are references to internal k8s watcher store state.
func (*K8sWatcher) GetK8sNode ¶
GetK8sNode returns the *local Node* from the local store.
func (*K8sWatcher) GetStore ¶
func (k *K8sWatcher) GetStore(name string) cache.Store
GetStore returns the k8s cache store for the given resource name. It's possible for valid resource names to return nil stores if that watcher is not in use. Objects gotten using returned stores should *not* be mutated as they are references to internal k8s watcher store state.
func (*K8sWatcher) InitK8sSubsystem ¶
func (k *K8sWatcher) InitK8sSubsystem(ctx context.Context, cachesSynced chan struct{})
InitK8sSubsystem takes a channel for which it will be closed when all caches essential for daemon are synchronized. To be called after WaitForCRDsToRegister() so that all needed CRDs have already been registered.
func (*K8sWatcher) K8sEventProcessed ¶
func (k *K8sWatcher) K8sEventProcessed(scope string, action string, status bool)
K8sEventProcessed is called to do metrics accounting for each processed Kubernetes event
func (*K8sWatcher) K8sEventReceived ¶
func (k *K8sWatcher) K8sEventReceived(scope string, action string, valid, equal bool)
K8sEventReceived does metric accounting for each received Kubernetes event
func (*K8sWatcher) NodesInit ¶
func (k *K8sWatcher) NodesInit(k8sClient *k8s.K8sClient)
func (*K8sWatcher) RunK8sServiceHandler ¶
func (k *K8sWatcher) RunK8sServiceHandler()
func (*K8sWatcher) SetIndexer ¶
func (k *K8sWatcher) SetIndexer(name string, indexer cache.Indexer)
SetIndexer lets you set a named cache store, only used for testing.
func (*K8sWatcher) WaitForCRDsToRegister ¶
func (k *K8sWatcher) WaitForCRDsToRegister(ctx context.Context) error
WaitForCRDsToRegister will wait for the Cilium Operator to register the CRDs with the apiserver. This step is required before launching the full K8s watcher, as those resource controllers need the resources to be registered with K8s first.
func (*K8sWatcher) WaitForCacheSync ¶
func (k *K8sWatcher) WaitForCacheSync(resourceNames ...string)
type NodeUpdate ¶
type NodeUpdate interface {
UpdateLocalNode()
}
The NodeUpdate interface is used to provide an abstraction for the nodediscovery.NodeDiscovery object logic used to update a node entry in the KVStore and the k8s CiliumNode.
type WatcherConfiguration ¶
type WatcherConfiguration interface { utils.ServiceConfiguration }
WatcherConfiguration is the required configuration for EnableK8sWatcher
Source Files
¶
- cilium_clusterwide_network_policy.go
- cilium_egress_gateway_policy.go
- cilium_endpoint.go
- cilium_endpoint_slice.go
- cilium_endpoint_slice_subscriber.go
- cilium_local_redirect_policy.go
- cilium_network_policy.go
- cilium_node.go
- endpoint.go
- endpoint_slice.go
- endpointsynchronizer.go
- namespace.go
- network_policy.go
- node.go
- pod.go
- service.go
- watcher.go
Directories
¶
Path | Synopsis |
---|---|
Package subscriber implements a mechanism to represent K8s watcher subscribers and allows K8s events to objects / resources to notify their respective subscribers.
|
Package subscriber implements a mechanism to represent K8s watcher subscribers and allows K8s events to objects / resources to notify their respective subscribers. |