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  }