github.com/cilium/cilium@v1.16.2/operator/k8s/resources.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package k8s 5 6 import ( 7 "github.com/cilium/hive/cell" 8 9 "github.com/cilium/cilium/pkg/k8s" 10 cilium_api_v2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2" 11 cilium_api_v2alpha1 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2alpha1" 12 "github.com/cilium/cilium/pkg/k8s/resource" 13 slim_corev1 "github.com/cilium/cilium/pkg/k8s/slim/k8s/api/core/v1" 14 ) 15 16 const ( 17 CiliumEndpointIndexIdentity = "identity" 18 ) 19 20 var ( 21 // ResourcesCell provides a set of handles to Kubernetes resources used throughout the 22 // operator. Each of the resources share a client-go informer and backing store so we only 23 // have one watch API call for each resource kind and that we maintain only one copy of each object. 24 // 25 // See pkg/k8s/resource/resource.go for documentation on the Resource[T] type. 26 ResourcesCell = cell.Module( 27 "k8s-resources", 28 "Operator Kubernetes resources", 29 30 cell.Config(k8s.DefaultConfig), 31 cell.Provide( 32 k8s.ServiceResource, 33 k8s.EndpointsResource, 34 k8s.LBIPPoolsResource, 35 k8s.CiliumIdentityResource, 36 k8s.CiliumPodIPPoolResource, 37 k8s.CiliumBGPPeeringPolicyResource, 38 CiliumBGPClusterConfigResource, 39 k8s.CiliumBGPAdvertisementResource, 40 k8s.CiliumBGPPeerConfigResource, 41 k8s.CiliumBGPNodeConfigResource, 42 CiliumBGPNodeConfigOverrideResource, 43 CiliumEndpointResource, 44 CiliumEndpointSliceResource, 45 CiliumNodeResource, 46 PodResource, 47 k8s.NamespaceResource, 48 k8s.CiliumNetworkPolicyResource, 49 k8s.CiliumClusterwideNetworkPolicyResource, 50 ), 51 ) 52 ) 53 54 // Resources is a convenience struct to group all the operator k8s resources as cell constructor parameters. 55 type Resources struct { 56 cell.In 57 58 Services resource.Resource[*slim_corev1.Service] 59 Endpoints resource.Resource[*k8s.Endpoints] 60 LBIPPools resource.Resource[*cilium_api_v2alpha1.CiliumLoadBalancerIPPool] 61 Identities resource.Resource[*cilium_api_v2.CiliumIdentity] 62 CiliumPodIPPools resource.Resource[*cilium_api_v2alpha1.CiliumPodIPPool] 63 CiliumEndpoints resource.Resource[*cilium_api_v2.CiliumEndpoint] 64 CiliumEndpointSlices resource.Resource[*cilium_api_v2alpha1.CiliumEndpointSlice] 65 CiliumNodes resource.Resource[*cilium_api_v2.CiliumNode] 66 Pods resource.Resource[*slim_corev1.Pod] 67 Namespaces resource.Resource[*slim_corev1.Namespace] 68 }