Documentation ¶
Index ¶
Constants ¶
View Source
const ( // MaxAllocatableVlanIds is the maximum number of Vlan Ids that can be allocated per trunk. MaxAllocatableVlanIds = 121 // CoolDownPeriod is the period to wait before deleting the branch ENI for propagation of ip tables rule for deleted pod CoolDownPeriod = time.Second * 30 // MaxDeleteRetries is the maximum number of times the ENI will be retried before being removed from the delete queue MaxDeleteRetries = 3 )
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"` // BranchIp is the primary IP of the branch Network interface IPV4Addr string `json:"privateIp"` // 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"` // 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 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) error // 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.