Documentation ¶
Index ¶
Constants ¶
View Source
const ( // MaxAllocatableVlanIds is the maximum number of Vlan Ids that can be allocated per trunk. MaxAllocatableVlanIds = 121 // MaxDeleteRetries is the maximum number of times the ENI will be retried before being removed from the delete queue MaxDeleteRetries = 3 SubnetLabel = "subnet" SecurityGroupsLabel = "security_groups" )
Variables ¶
View Source
var ( InterfaceTypeTrunk = "trunk" TrunkEniDescription = "trunk-eni" BranchEniDescription = "branch-eni" )
View Source
var (
ErrCurrentlyAtMaxCapacity = fmt.Errorf("cannot create more branches at this point as used branches plus the " +
"delete queue is at max capacity")
)
Functions ¶
func PrometheusRegister ¶
func PrometheusRegister()
Types ¶
type ENIDetails ¶
type ENIDetails struct { // BranchENId is the network interface id of the branch interface ID string `json:"eniId"` // MacAdd is the MAC address of the network interface MACAdd string `json:"ifAddress"` // IPv4 and/or IPv6 address assigned to the branch Network interface IPV4Addr string `json:"privateIp"` IPV6Addr string `json:"ipv6Addr"` // VlanId is the VlanId of the branch network interface VlanID int `json:"vlanId"` // SubnetCIDR is the CIDR block of the subnet SubnetCIDR string `json:"subnetCidr"` SubnetV6CIDR string `json:"subnetV6Cidr"` // contains filtered or unexported fields }
PodENI is a json convertible structure that stores the Branch ENI details that can be used by the CNI plugin or the component consuming the resource
type IntrospectResponse ¶ added in v1.1.0
type IntrospectResponse struct { TrunkENIID string InstanceID string PodToBranchENI map[string][]ENIDetails DeleteQueue []ENIDetails }
type IntrospectSummaryResponse ¶ added in v1.3.0
type TrunkENI ¶
type TrunkENI interface { // InitTrunk initializes trunk interface InitTrunk(instance ec2.EC2Instance, pods []v1.Pod) error // CreateAndAssociateBranchENIs creates and associate branch interface/s to trunk interface CreateAndAssociateBranchENIs(pod *v1.Pod, securityGroups []string, eniCount int) ([]*ENIDetails, error) // PushBranchENIsToCoolDownQueue pushes the branch interface belonging to the pod to the cool down queue PushBranchENIsToCoolDownQueue(UID string) // DeleteCooledDownENIs deletes the interfaces that have been sitting in the queue for cool down period DeleteCooledDownENIs() // Reconcile compares the cache state with the list of pods to identify events that were missed and clean up the dangling interfaces Reconcile(pods []v1.Pod) bool // PushENIsToFrontOfDeleteQueue pushes the eni network interfaces to the front of the delete queue PushENIsToFrontOfDeleteQueue(*v1.Pod, []*ENIDetails) // DeleteAllBranchENIs deletes all the branch ENI associated with the trunk and also clears the cool down queue DeleteAllBranchENIs() // Introspect returns the state of the Trunk ENI Introspect() IntrospectResponse }
func NewTrunkENI ¶
func NewTrunkENI(logger logr.Logger, instance ec2.EC2Instance, helper api.EC2APIHelper) TrunkENI
NewTrunkENI returns a new Trunk ENI interface.
Click to show internal directories.
Click to hide internal directories.