Documentation ¶
Index ¶
- type Allocation
- type Allocator
- func (a *Allocator) Allocate(svcKey string, svc *v1.Service, serviceIPFamily ipfamily.Family, ports []Port, ...) ([]net.IP, error)
- func (a *Allocator) AllocateFromPool(svcKey string, svc *v1.Service, serviceIPFamily ipfamily.Family, ...) ([]net.IP, error)
- func (a *Allocator) AllocateFromPoolForAdditionalFamily(svcKey string, svc *v1.Service, existingIP net.IP, poolName string, ...) (net.IP, error)
- func (a *Allocator) Assign(svcKey string, svc *v1.Service, ips []net.IP, ports []Port, ...) error
- func (a *Allocator) IPs(svc string) []net.IP
- func (a *Allocator) Pool(svc string) string
- func (a *Allocator) PoolForIP(ips []net.IP) *config.Pool
- func (a *Allocator) SetPools(pools *config.Pools)
- func (a *Allocator) Unassign(svc string)
- type Port
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Allocation ¶ added in v0.14.9
Allocation represents a mapping of IP families (IPv4, IPv6, or both) to their respective IP addresses. This type is used to select and organize IPs based on a service's IP family policy. Depending on the family policy, the map may contain: - Just an IPv4 address - Just an IPv6 address - Both IPv4 and IPv6 addresses for dual-stack support.
Key: - ipfamily.IPv4: Corresponds to the IPv4 address allocated for the service. - ipfamily.IPv6: Corresponds to the IPv6 address allocated for the service.
type Allocator ¶
type Allocator struct {
// contains filtered or unexported fields
}
An Allocator tracks IP address pools and allocates addresses from them.
func (*Allocator) Allocate ¶
func (a *Allocator) Allocate( svcKey string, svc *v1.Service, serviceIPFamily ipfamily.Family, ports []Port, sharingKey, backendKey string, ) ([]net.IP, error)
Allocate chooses the most suitable pool and assigns an available IP from that pool to the service.
func (*Allocator) AllocateFromPool ¶
func (a *Allocator) AllocateFromPool( svcKey string, svc *v1.Service, serviceIPFamily ipfamily.Family, poolName string, ports []Port, sharingKey, backendKey string, ) ([]net.IP, error)
AllocateFromPool assigns an available IP from pool to service.
func (*Allocator) AllocateFromPoolForAdditionalFamily ¶ added in v0.14.9
func (a *Allocator) AllocateFromPoolForAdditionalFamily( svcKey string, svc *v1.Service, existingIP net.IP, poolName string, ports []Port, sharingKey, backendKey string, ) (net.IP, error)
AllocateIPFromPoolForAdditionalFamily works specially for the preferDualStack ipfamily policy in case there is only 1 assigned ip. It tries to allocate an additional ip from the missing family while retaining the ip already allocated to the svc.
func (*Allocator) Assign ¶
func (a *Allocator) Assign(svcKey string, svc *v1.Service, ips []net.IP, ports []Port, sharingKey, backendKey string) error
Assign assigns the requested ip to svc, if the assignment is permissible by sharingKey and backendKey.
func (*Allocator) Pool ¶ added in v0.3.0
Pool returns the pool from which service's IP was allocated. If service has no IP allocated, "" is returned.
func (*Allocator) PoolForIP ¶ added in v0.14.0
PoolForIP returns the pool structure associated with an IP.