rings: RingTwoPrefix()
Ring 2 is the service network shared by all kubernetes clusters. Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
@@ -23,6 +23,9 @@ const (
|
|||||||
RingZeroBits = 16
|
RingZeroBits = 16
|
||||||
// RingOneBits indicates the size of the prefix on the ring 1 (lan) network.
|
// RingOneBits indicates the size of the prefix on the ring 1 (lan) network.
|
||||||
RingOneBits = 20
|
RingOneBits = 20
|
||||||
|
// RingTwoBits indicates the size of the prefix on the ring 2 (services) network
|
||||||
|
// of all kubernetes clusters.
|
||||||
|
RingTwoBits = 20
|
||||||
// RingThreeBits indicates the size of the prefix on the ring 3 (pods) network
|
// RingThreeBits indicates the size of the prefix on the ring 3 (pods) network
|
||||||
// of the kubernetes cluster of a region.
|
// of the kubernetes cluster of a region.
|
||||||
RingThreeBits = 12
|
RingThreeBits = 12
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package rings
|
||||||
|
|
||||||
|
import "net/netip"
|
||||||
|
|
||||||
|
// RingTwoPrefix represents the services of a cluster
|
||||||
|
//
|
||||||
|
// Ring 2 subnets are of the form `10.(region_id).0.0/20`,
|
||||||
|
// using the address space that would belong to the ring 3
|
||||||
|
// region_id 0.
|
||||||
|
func RingTwoPrefix(region RegionID) (cidr netip.Prefix, err error) {
|
||||||
|
switch {
|
||||||
|
case !region.Valid():
|
||||||
|
err = ErrOutOfRange(region, "region")
|
||||||
|
default:
|
||||||
|
addr := AddrFrom4(10, uint(region), 0, 0)
|
||||||
|
cidr = netip.PrefixFrom(addr, RingTwoBits)
|
||||||
|
}
|
||||||
|
return cidr, err
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user