Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the net.unbounded-cloud.io v1alpha1 API group.
+kubebuilder:object:generate=true +groupName=net.unbounded-cloud.io
Package v1alpha1 contains API Schema definitions for the unboundednet v1alpha1 API group
Index ¶
- Constants
- Variables
- func Resource(resource string) schema.GroupResource
- func SpecEnabled(enabled *bool) bool
- type GatewayNodeInfo
- type GatewayNodePathHop
- type GatewayNodeRoute
- type GatewayNodeSpec
- type GatewayNodeStatus
- type GatewayPool
- type GatewayPoolList
- type GatewayPoolNode
- type GatewayPoolNodeList
- type GatewayPoolPeering
- type GatewayPoolPeeringList
- type GatewayPoolPeeringSpec
- type GatewayPoolRoute
- type GatewayPoolRouteOrigin
- type GatewayPoolSpec
- type GatewayPoolStatus
- type HealthCheckSettings
- type NodeBlockSizes
- type NodeInfo
- type PodCidrAssignment
- type Site
- type SiteGatewayPoolAssignment
- type SiteGatewayPoolAssignmentList
- type SiteGatewayPoolAssignmentSpec
- type SiteList
- type SiteNodeSlice
- type SiteNodeSliceList
- type SitePeering
- type SitePeeringList
- type SitePeeringSpec
- type SitePeeringStatus
- type SiteSpec
- type SiteStatus
- type TunnelProtocol
Constants ¶
const GroupName = "net.unbounded-cloud.io"
GroupName is the group name used in this package
const MaxNodesPerSlice = 500
MaxNodesPerSlice is the maximum number of nodes per SiteNodeSlice
Variables ¶
var ( // GroupVersion is group version used to register these objects. GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} // SchemeGroupVersion is an alias for GroupVersion for backward compatibility. SchemeGroupVersion = GroupVersion // SchemeBuilder is used to add go types to the GroupVersionKind scheme. SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
func SpecEnabled ¶
SpecEnabled reports whether an optional spec.enabled flag is enabled. Nil defaults to true for backward compatibility.
Types ¶
type GatewayNodeInfo ¶
type GatewayNodeInfo struct {
// Name is the node name
Name string `json:"name"`
// SiteName is the name of the site this gateway node belongs to
// +optional
SiteName string `json:"siteName,omitempty"`
// InternalIPs are the node's internal IP addresses (for same-site connections)
// +optional
InternalIPs []string `json:"internalIPs,omitempty"`
// ExternalIPs are the node's external IP addresses (for cross-site connections)
// +optional
ExternalIPs []string `json:"externalIPs,omitempty"`
// HealthEndpoints are health check IP addresses (e.g., 10.0.1.1 or fd00::1)
// +optional
HealthEndpoints []string `json:"healthEndpoints,omitempty"`
// WireGuardPublicKey is the node's WireGuard public key
WireGuardPublicKey string `json:"wireGuardPublicKey"`
// GatewayWireguardPort is the WireGuard listen port assigned to this
// gateway node for gateway-to-gateway peering. Ports are allocated by the
// controller starting at 51821 and are unique across all gateway pools.
// +optional
GatewayWireguardPort int32 `json:"gatewayWireguardPort,omitempty"`
// PodCIDRs are the pod CIDRs assigned to this gateway node
// +optional
PodCIDRs []string `json:"podCIDRs,omitempty"`
}
GatewayNodeInfo contains information about a gateway node +k8s:deepcopy-gen=true
func (*GatewayNodeInfo) DeepCopy ¶
func (in *GatewayNodeInfo) DeepCopy() *GatewayNodeInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayNodeInfo.
func (*GatewayNodeInfo) DeepCopyInto ¶
func (in *GatewayNodeInfo) DeepCopyInto(out *GatewayNodeInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayNodePathHop ¶
type GatewayNodePathHop struct {
// Type is the hop object kind (for example: Site, GatewayPool).
Type string `json:"type"`
// Name is the hop object name.
Name string `json:"name"`
}
GatewayNodePathHop is a single path hop object. +k8s:deepcopy-gen=true
func (*GatewayNodePathHop) DeepCopy ¶
func (in *GatewayNodePathHop) DeepCopy() *GatewayNodePathHop
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayNodePathHop.
func (*GatewayNodePathHop) DeepCopyInto ¶
func (in *GatewayNodePathHop) DeepCopyInto(out *GatewayNodePathHop)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayNodeRoute ¶
type GatewayNodeRoute struct {
// Type identifies the route source type (NodeCidr, PodCidr, RoutedCidr).
Type string `json:"type"`
// Source identifies the originating object for this route.
// +optional
Source *GatewayNodePathHop `json:"source,omitempty"`
// IntermediateHops identifies additional path objects between source and destination.
// +optional
IntermediateHops []GatewayNodePathHop `json:"intermediateHops,omitempty"`
// Paths is a list of full end-to-end paths.
// Each item is one complete ordered hop sequence from origin to local advertiser.
// +optional
// +kubebuilder:validation:MaxItems=100
Paths [][]GatewayNodePathHop `json:"paths,omitempty"`
}
GatewayNodeRoute describes a single advertised route. +k8s:deepcopy-gen=true
func (*GatewayNodeRoute) DeepCopy ¶
func (in *GatewayNodeRoute) DeepCopy() *GatewayNodeRoute
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayNodeRoute.
func (*GatewayNodeRoute) DeepCopyInto ¶
func (in *GatewayNodeRoute) DeepCopyInto(out *GatewayNodeRoute)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayNodeSpec ¶
type GatewayNodeSpec struct {
// NodeName is the Kubernetes node name publishing this GatewayNode.
NodeName string `json:"nodeName"`
// GatewayPool is the owning gateway pool name.
GatewayPool string `json:"gatewayPool"`
// Site is the site label of this gateway node.
// +optional
Site string `json:"site,omitempty"`
}
GatewayNodeSpec defines immutable identity metadata for a GatewayNode. +k8s:deepcopy-gen=true
func (*GatewayNodeSpec) DeepCopy ¶
func (in *GatewayNodeSpec) DeepCopy() *GatewayNodeSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayNodeSpec.
func (*GatewayNodeSpec) DeepCopyInto ¶
func (in *GatewayNodeSpec) DeepCopyInto(out *GatewayNodeSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayNodeStatus ¶
type GatewayNodeStatus struct {
// LastUpdated is the heartbeat timestamp updated by the node agent.
// +optional
LastUpdated metav1.Time `json:"lastUpdated,omitempty"`
// Routes is a map of reachable CIDRs advertised by this gateway node.
// The map key is the CIDR prefix.
// +optional
// +kubebuilder:validation:MaxProperties=1000
Routes map[string]GatewayNodeRoute `json:"routes,omitempty"`
}
GatewayNodeStatus defines the advertised routes and lease heartbeat for a gateway node. +k8s:deepcopy-gen=true
func (*GatewayNodeStatus) DeepCopy ¶
func (in *GatewayNodeStatus) DeepCopy() *GatewayNodeStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayNodeStatus.
func (*GatewayNodeStatus) DeepCopyInto ¶
func (in *GatewayNodeStatus) DeepCopyInto(out *GatewayNodeStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayPool ¶
type GatewayPool struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec GatewayPoolSpec `json:"spec"`
Status GatewayPoolStatus `json:"status,omitempty"`
}
GatewayPool defines a pool of gateway nodes selected by labels
func (*GatewayPool) DeepCopy ¶
func (in *GatewayPool) DeepCopy() *GatewayPool
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPool.
func (*GatewayPool) DeepCopyInto ¶
func (in *GatewayPool) DeepCopyInto(out *GatewayPool)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GatewayPool) DeepCopyObject ¶
func (in *GatewayPool) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type GatewayPoolList ¶
type GatewayPoolList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []GatewayPool `json:"items"`
}
GatewayPoolList contains a list of GatewayPool
func (*GatewayPoolList) DeepCopy ¶
func (in *GatewayPoolList) DeepCopy() *GatewayPoolList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolList.
func (*GatewayPoolList) DeepCopyInto ¶
func (in *GatewayPoolList) DeepCopyInto(out *GatewayPoolList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GatewayPoolList) DeepCopyObject ¶
func (in *GatewayPoolList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type GatewayPoolNode ¶
type GatewayPoolNode struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec GatewayNodeSpec `json:"spec"`
Status GatewayNodeStatus `json:"status,omitempty"`
}
GatewayPoolNode represents route advertisements from a gateway pool node.
func (*GatewayPoolNode) DeepCopy ¶
func (in *GatewayPoolNode) DeepCopy() *GatewayPoolNode
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolNode.
func (*GatewayPoolNode) DeepCopyInto ¶
func (in *GatewayPoolNode) DeepCopyInto(out *GatewayPoolNode)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GatewayPoolNode) DeepCopyObject ¶
func (in *GatewayPoolNode) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type GatewayPoolNodeList ¶
type GatewayPoolNodeList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []GatewayPoolNode `json:"items"`
}
GatewayPoolNodeList contains a list of GatewayPoolNode.
func (*GatewayPoolNodeList) DeepCopy ¶
func (in *GatewayPoolNodeList) DeepCopy() *GatewayPoolNodeList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolNodeList.
func (*GatewayPoolNodeList) DeepCopyInto ¶
func (in *GatewayPoolNodeList) DeepCopyInto(out *GatewayPoolNodeList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GatewayPoolNodeList) DeepCopyObject ¶
func (in *GatewayPoolNodeList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type GatewayPoolPeering ¶
type GatewayPoolPeering struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec GatewayPoolPeeringSpec `json:"spec"`
}
GatewayPoolPeering links gateway pools for routed connectivity.
func (*GatewayPoolPeering) DeepCopy ¶
func (in *GatewayPoolPeering) DeepCopy() *GatewayPoolPeering
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolPeering.
func (*GatewayPoolPeering) DeepCopyInto ¶
func (in *GatewayPoolPeering) DeepCopyInto(out *GatewayPoolPeering)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GatewayPoolPeering) DeepCopyObject ¶
func (in *GatewayPoolPeering) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type GatewayPoolPeeringList ¶
type GatewayPoolPeeringList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []GatewayPoolPeering `json:"items"`
}
GatewayPoolPeeringList contains a list of GatewayPoolPeering.
func (*GatewayPoolPeeringList) DeepCopy ¶
func (in *GatewayPoolPeeringList) DeepCopy() *GatewayPoolPeeringList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolPeeringList.
func (*GatewayPoolPeeringList) DeepCopyInto ¶
func (in *GatewayPoolPeeringList) DeepCopyInto(out *GatewayPoolPeeringList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GatewayPoolPeeringList) DeepCopyObject ¶
func (in *GatewayPoolPeeringList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type GatewayPoolPeeringSpec ¶
type GatewayPoolPeeringSpec struct {
// Enabled controls whether this peering is active.
// Defaults to true.
// +optional
Enabled *bool `json:"enabled,omitempty"`
// GatewayPools is the list of gateway pool names.
// +kubebuilder:validation:MinItems=2
GatewayPools []string `json:"gatewayPools,omitempty"`
// HealthCheckSettings controls health check settings for this pool-to-pool peering.
// +optional
HealthCheckSettings *HealthCheckSettings `json:"healthCheckSettings,omitempty"`
// TunnelProtocol selects the tunnel protocol for this scope.
// Valid values are "WireGuard", "IPIP", "GENEVE", "VXLAN", "None", or "Auto".
// Defaults to "Auto" when unset. When "Auto", links using external IPs
// use WireGuard and links using only internal IPs use GENEVE.
// +kubebuilder:validation:Enum=WireGuard;IPIP;GENEVE;VXLAN;None;Auto
// +optional
TunnelProtocol *TunnelProtocol `json:"tunnelProtocol,omitempty"`
// TunnelMTU is the MTU to set on routes through tunnels for this scope.
// +kubebuilder:validation:Minimum=576
// +kubebuilder:validation:Maximum=9000
// +optional
TunnelMTU *int32 `json:"tunnelMTU,omitempty"`
}
GatewayPoolPeeringSpec defines desired state for gateway-pool peerings. +k8s:deepcopy-gen=true
func (*GatewayPoolPeeringSpec) DeepCopy ¶
func (in *GatewayPoolPeeringSpec) DeepCopy() *GatewayPoolPeeringSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolPeeringSpec.
func (*GatewayPoolPeeringSpec) DeepCopyInto ¶
func (in *GatewayPoolPeeringSpec) DeepCopyInto(out *GatewayPoolPeeringSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayPoolRoute ¶
type GatewayPoolRoute struct {
// CIDR is the reachable route prefix.
CIDR string `json:"cidr"`
// Weight is the aggregate route weight for the path to this CIDR.
Weight int `json:"weight"`
// Type classifies the route source (for example: podCidr, nodeCidr, routedCidr).
// +optional
Type string `json:"type,omitempty"`
// Origin identifies the source site and/or gateway pool for this route.
// +optional
Origin GatewayPoolRouteOrigin `json:"origin,omitempty"`
// Description explains the source of the reachable CIDR.
// +optional
Description string `json:"description,omitempty"`
}
GatewayPoolRoute represents a reachable routed CIDR and its aggregate weight. +k8s:deepcopy-gen=true
func (*GatewayPoolRoute) DeepCopy ¶
func (in *GatewayPoolRoute) DeepCopy() *GatewayPoolRoute
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolRoute.
func (*GatewayPoolRoute) DeepCopyInto ¶
func (in *GatewayPoolRoute) DeepCopyInto(out *GatewayPoolRoute)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayPoolRouteOrigin ¶
type GatewayPoolRouteOrigin struct {
// Site is the originating site name, when applicable.
// +optional
Site string `json:"site,omitempty"`
// GatewayPool is the originating gateway pool name, when applicable.
// +optional
GatewayPool string `json:"gatewayPool,omitempty"`
}
GatewayPoolRouteOrigin describes where a reachable route originated. +k8s:deepcopy-gen=true
func (*GatewayPoolRouteOrigin) DeepCopy ¶
func (in *GatewayPoolRouteOrigin) DeepCopy() *GatewayPoolRouteOrigin
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolRouteOrigin.
func (*GatewayPoolRouteOrigin) DeepCopyInto ¶
func (in *GatewayPoolRouteOrigin) DeepCopyInto(out *GatewayPoolRouteOrigin)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayPoolSpec ¶
type GatewayPoolSpec struct {
// Type controls how gateway nodes are selected and connected.
// Allowed values are "External" or "Internal".
// +kubebuilder:validation:Enum=External;Internal;""
// +optional
Type string `json:"type,omitempty"`
// NodeSelector selects nodes to include in this gateway pool
// Only nodes with external IPs and WireGuard public keys will be included
// +kubebuilder:validation:MinProperties=1
NodeSelector map[string]string `json:"nodeSelector"`
// RoutedCidrs are the CIDR blocks that should be routed through this gateway pool
// +optional
RoutedCidrs []string `json:"routedCidrs,omitempty"`
// HealthCheckSettings controls health check settings for routes to peers in this gateway pool.
// +optional
HealthCheckSettings *HealthCheckSettings `json:"healthCheckSettings,omitempty"`
// TunnelProtocol selects the tunnel protocol for this scope.
// Valid values are "WireGuard", "IPIP", "GENEVE", "VXLAN", "None", or "Auto".
// Defaults to "Auto" when unset. When "Auto", links using external IPs
// use WireGuard and links using only internal IPs use GENEVE.
// +kubebuilder:validation:Enum=WireGuard;IPIP;GENEVE;VXLAN;None;Auto
// +optional
TunnelProtocol *TunnelProtocol `json:"tunnelProtocol,omitempty"`
// TunnelMTU is the MTU to set on routes through tunnels for this scope.
// +kubebuilder:validation:Minimum=576
// +kubebuilder:validation:Maximum=9000
// +optional
TunnelMTU *int32 `json:"tunnelMTU,omitempty"`
}
GatewayPoolSpec defines the desired state of GatewayPool +k8s:deepcopy-gen=true
func (*GatewayPoolSpec) DeepCopy ¶
func (in *GatewayPoolSpec) DeepCopy() *GatewayPoolSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolSpec.
func (*GatewayPoolSpec) DeepCopyInto ¶
func (in *GatewayPoolSpec) DeepCopyInto(out *GatewayPoolSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GatewayPoolStatus ¶
type GatewayPoolStatus struct {
// Nodes contains information about nodes in this gateway pool
// +optional
Nodes []GatewayNodeInfo `json:"nodes,omitempty"`
// NodeCount is the number of nodes in this gateway pool
// +optional
NodeCount int `json:"nodeCount,omitempty"`
// ConnectedSites is the list of sites directly peered to this gateway pool.
// +optional
ConnectedSites []string `json:"connectedSites,omitempty"`
// ReachableSites is the list of sites reachable via this gateway pool.
// +optional
ReachableSites []string `json:"reachableSites,omitempty"`
}
GatewayPoolStatus defines the observed state of GatewayPool +k8s:deepcopy-gen=true
func (*GatewayPoolStatus) DeepCopy ¶
func (in *GatewayPoolStatus) DeepCopy() *GatewayPoolStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayPoolStatus.
func (*GatewayPoolStatus) DeepCopyInto ¶
func (in *GatewayPoolStatus) DeepCopyInto(out *GatewayPoolStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HealthCheckSettings ¶
type HealthCheckSettings struct {
// Enabled controls whether health check is enabled for this scope.
// +optional
Enabled *bool `json:"enabled,omitempty"`
// DetectMultiplier is the multiplier used to determine session down detection.
// Valid range is 1-255.
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=255
// +optional
DetectMultiplier *int32 `json:"detectMultiplier,omitempty"`
// ReceiveInterval is the minimum interval between received health check packets.
// Accepts either a duration string (e.g. "300ms") or an integer interpreted as milliseconds.
// +kubebuilder:validation:XIntOrString
// +optional
ReceiveInterval *intstr.IntOrString `json:"receiveInterval,omitempty"`
// TransmitInterval is the minimum interval between transmitted health check packets.
// Accepts either a duration string (e.g. "300ms") or an integer interpreted as milliseconds.
// +kubebuilder:validation:XIntOrString
// +optional
TransmitInterval *intstr.IntOrString `json:"transmitInterval,omitempty"`
}
HealthCheckSettings configures health check parameters for tunnel-based routing. +k8s:deepcopy-gen=true
func (*HealthCheckSettings) DeepCopy ¶
func (in *HealthCheckSettings) DeepCopy() *HealthCheckSettings
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckSettings.
func (*HealthCheckSettings) DeepCopyInto ¶
func (in *HealthCheckSettings) DeepCopyInto(out *HealthCheckSettings)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NodeBlockSizes ¶
type NodeBlockSizes struct {
// IPv4 is the IPv4 subnet mask size (e.g., 24 for /24).
// +optional
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=32
IPv4 int `json:"ipv4,omitempty"`
// IPv6 is the IPv6 subnet mask size (e.g., 80 for /80).
// +optional
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=128
IPv6 int `json:"ipv6,omitempty"`
}
NodeBlockSizes defines per-node CIDR block sizes. +k8s:deepcopy-gen=true
func (*NodeBlockSizes) DeepCopy ¶
func (in *NodeBlockSizes) DeepCopy() *NodeBlockSizes
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeBlockSizes.
func (*NodeBlockSizes) DeepCopyInto ¶
func (in *NodeBlockSizes) DeepCopyInto(out *NodeBlockSizes)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NodeInfo ¶
type NodeInfo struct {
// Name is the node name
Name string `json:"name"`
// WireGuardPublicKey is the node's WireGuard public key
// +optional
WireGuardPublicKey string `json:"wireGuardPublicKey,omitempty"`
// InternalIPs are the node's internal IP addresses
// +optional
InternalIPs []string `json:"internalIPs,omitempty"`
// PodCIDRs are the pod CIDRs assigned to this node
// +optional
PodCIDRs []string `json:"podCIDRs,omitempty"`
}
NodeInfo contains detailed information about a node in a site +k8s:deepcopy-gen=true
func (*NodeInfo) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeInfo.
func (*NodeInfo) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCidrAssignment ¶
type PodCidrAssignment struct {
// AssignmentEnabled controls whether this assignment is active. Defaults to true.
// +optional
AssignmentEnabled *bool `json:"assignmentEnabled,omitempty"`
// CidrBlocks are the CIDR pools to allocate from.
// +kubebuilder:validation:MinItems=1
CidrBlocks []string `json:"cidrBlocks"`
// NodeBlockSizes define the per-node allocation sizes for IPv4 and IPv6.
// +optional
NodeBlockSizes *NodeBlockSizes `json:"nodeBlockSizes,omitempty"`
// NodeRegex is a list of regex patterns for matching node names. If empty, no regex filtering is applied.
// +optional
// +listType=atomic
// +kubebuilder:validation:items:MaxLength=1024
NodeRegex []string `json:"nodeRegex,omitempty"`
// Priority controls which assignment wins when multiple match. Lower values win.
// Defaults to 100.
// +optional
Priority *int32 `json:"priority,omitempty"`
}
PodCidrAssignment defines a pod CIDR allocation rule for nodes in a site. +k8s:deepcopy-gen=true
func (*PodCidrAssignment) DeepCopy ¶
func (in *PodCidrAssignment) DeepCopy() *PodCidrAssignment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCidrAssignment.
func (*PodCidrAssignment) DeepCopyInto ¶
func (in *PodCidrAssignment) DeepCopyInto(out *PodCidrAssignment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Site ¶
type Site struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec SiteSpec `json:"spec"`
Status SiteStatus `json:"status,omitempty"`
}
Site defines a network location containing nodes
func (*Site) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Site.
func (*Site) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Site) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type SiteGatewayPoolAssignment ¶
type SiteGatewayPoolAssignment struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec SiteGatewayPoolAssignmentSpec `json:"spec"`
}
SiteGatewayPoolAssignment links sites to gateway pools.
func (*SiteGatewayPoolAssignment) DeepCopy ¶
func (in *SiteGatewayPoolAssignment) DeepCopy() *SiteGatewayPoolAssignment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteGatewayPoolAssignment.
func (*SiteGatewayPoolAssignment) DeepCopyInto ¶
func (in *SiteGatewayPoolAssignment) DeepCopyInto(out *SiteGatewayPoolAssignment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SiteGatewayPoolAssignment) DeepCopyObject ¶
func (in *SiteGatewayPoolAssignment) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type SiteGatewayPoolAssignmentList ¶
type SiteGatewayPoolAssignmentList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []SiteGatewayPoolAssignment `json:"items"`
}
SiteGatewayPoolAssignmentList contains a list of SiteGatewayPoolAssignment.
func (*SiteGatewayPoolAssignmentList) DeepCopy ¶
func (in *SiteGatewayPoolAssignmentList) DeepCopy() *SiteGatewayPoolAssignmentList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteGatewayPoolAssignmentList.
func (*SiteGatewayPoolAssignmentList) DeepCopyInto ¶
func (in *SiteGatewayPoolAssignmentList) DeepCopyInto(out *SiteGatewayPoolAssignmentList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SiteGatewayPoolAssignmentList) DeepCopyObject ¶
func (in *SiteGatewayPoolAssignmentList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type SiteGatewayPoolAssignmentSpec ¶
type SiteGatewayPoolAssignmentSpec struct {
// Enabled controls whether this assignment is active.
// Defaults to true.
// +optional
Enabled *bool `json:"enabled,omitempty"`
// Sites is the list of site names.
// +kubebuilder:validation:MinItems=1
Sites []string `json:"sites,omitempty"`
// GatewayPools is the list of gateway pool names.
// +kubebuilder:validation:MinItems=1
GatewayPools []string `json:"gatewayPools,omitempty"`
// HealthCheckSettings controls health check settings for this site-to-pool assignment.
// +optional
HealthCheckSettings *HealthCheckSettings `json:"healthCheckSettings,omitempty"`
// TunnelProtocol selects the tunnel protocol for this scope.
// Valid values are "WireGuard", "IPIP", "GENEVE", "VXLAN", "None", or "Auto".
// Defaults to "Auto" when unset. When "Auto", links using external IPs
// use WireGuard and links using only internal IPs use GENEVE.
// +kubebuilder:validation:Enum=WireGuard;IPIP;GENEVE;VXLAN;None;Auto
// +optional
TunnelProtocol *TunnelProtocol `json:"tunnelProtocol,omitempty"`
// TunnelMTU is the MTU to set on routes through tunnels for this scope.
// +kubebuilder:validation:Minimum=576
// +kubebuilder:validation:Maximum=9000
// +optional
TunnelMTU *int32 `json:"tunnelMTU,omitempty"`
}
SiteGatewayPoolAssignmentSpec defines desired state for site to gateway-pool assignments. +k8s:deepcopy-gen=true
func (*SiteGatewayPoolAssignmentSpec) DeepCopy ¶
func (in *SiteGatewayPoolAssignmentSpec) DeepCopy() *SiteGatewayPoolAssignmentSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteGatewayPoolAssignmentSpec.
func (*SiteGatewayPoolAssignmentSpec) DeepCopyInto ¶
func (in *SiteGatewayPoolAssignmentSpec) DeepCopyInto(out *SiteGatewayPoolAssignmentSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SiteList ¶
type SiteList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Site `json:"items"`
}
SiteList contains a list of Site
func (*SiteList) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteList.
func (*SiteList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SiteList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type SiteNodeSlice ¶
type SiteNodeSlice struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// SiteName is the name of the Site this slice belongs to
SiteName string `json:"siteName"`
// SliceIndex is the index of this slice (0-based)
SliceIndex int `json:"sliceIndex"`
// Nodes contains detailed information about nodes in this slice
Nodes []NodeInfo `json:"nodes,omitempty"`
// NodeCount is the number of nodes in this slice.
// +optional
NodeCount int `json:"nodeCount,omitempty"`
}
SiteNodeSlice contains a slice of nodes belonging to a site Each slice can contain up to 500 nodes to limit object size
func (*SiteNodeSlice) DeepCopy ¶
func (in *SiteNodeSlice) DeepCopy() *SiteNodeSlice
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteNodeSlice.
func (*SiteNodeSlice) DeepCopyInto ¶
func (in *SiteNodeSlice) DeepCopyInto(out *SiteNodeSlice)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SiteNodeSlice) DeepCopyObject ¶
func (in *SiteNodeSlice) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type SiteNodeSliceList ¶
type SiteNodeSliceList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []SiteNodeSlice `json:"items"`
}
SiteNodeSliceList contains a list of SiteNodeSlice
func (*SiteNodeSliceList) DeepCopy ¶
func (in *SiteNodeSliceList) DeepCopy() *SiteNodeSliceList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteNodeSliceList.
func (*SiteNodeSliceList) DeepCopyInto ¶
func (in *SiteNodeSliceList) DeepCopyInto(out *SiteNodeSliceList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SiteNodeSliceList) DeepCopyObject ¶
func (in *SiteNodeSliceList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type SitePeering ¶
type SitePeering struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec SitePeeringSpec `json:"spec"`
Status SitePeeringStatus `json:"status,omitempty"`
}
SitePeering defines direct peering between sites.
func (*SitePeering) DeepCopy ¶
func (in *SitePeering) DeepCopy() *SitePeering
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SitePeering.
func (*SitePeering) DeepCopyInto ¶
func (in *SitePeering) DeepCopyInto(out *SitePeering)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SitePeering) DeepCopyObject ¶
func (in *SitePeering) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type SitePeeringList ¶
type SitePeeringList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []SitePeering `json:"items"`
}
SitePeeringList contains a list of SitePeering.
func (*SitePeeringList) DeepCopy ¶
func (in *SitePeeringList) DeepCopy() *SitePeeringList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SitePeeringList.
func (*SitePeeringList) DeepCopyInto ¶
func (in *SitePeeringList) DeepCopyInto(out *SitePeeringList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SitePeeringList) DeepCopyObject ¶
func (in *SitePeeringList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type SitePeeringSpec ¶
type SitePeeringSpec struct {
// Enabled controls whether this peering is active.
// Defaults to true.
// +optional
Enabled *bool `json:"enabled,omitempty"`
// Sites is the list of site names that should be directly peered.
// +kubebuilder:validation:MinItems=2
Sites []string `json:"sites,omitempty"`
// MeshNodes controls whether nodes in listed sites mesh directly.
// +optional
MeshNodes *bool `json:"meshNodes,omitempty"`
// HealthCheckSettings controls health check settings for inter-site peering.
// +optional
HealthCheckSettings *HealthCheckSettings `json:"healthCheckSettings,omitempty"`
// TunnelProtocol selects the tunnel protocol for this scope.
// Valid values are "WireGuard", "IPIP", "GENEVE", "VXLAN", "None", or "Auto".
// Defaults to "Auto" when unset. When "Auto", links using external IPs
// use WireGuard and links using only internal IPs use GENEVE.
// +kubebuilder:validation:Enum=WireGuard;IPIP;GENEVE;VXLAN;None;Auto
// +optional
TunnelProtocol *TunnelProtocol `json:"tunnelProtocol,omitempty"`
// TunnelMTU is the MTU to set on routes through tunnels for this scope.
// +kubebuilder:validation:Minimum=576
// +kubebuilder:validation:Maximum=9000
// +optional
TunnelMTU *int32 `json:"tunnelMTU,omitempty"`
}
SitePeeringSpec defines desired state of SitePeering. +k8s:deepcopy-gen=true
func (*SitePeeringSpec) DeepCopy ¶
func (in *SitePeeringSpec) DeepCopy() *SitePeeringSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SitePeeringSpec.
func (*SitePeeringSpec) DeepCopyInto ¶
func (in *SitePeeringSpec) DeepCopyInto(out *SitePeeringSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SitePeeringStatus ¶
type SitePeeringStatus struct {
// PeeredSiteCount is the number of sites in this peering that exist.
// +optional
PeeredSiteCount int `json:"peeredSiteCount,omitempty"`
// TotalNodeCount is the total number of nodes across all peered sites.
// +optional
TotalNodeCount int `json:"totalNodeCount,omitempty"`
}
SitePeeringStatus defines the observed state of SitePeering.
func (*SitePeeringStatus) DeepCopy ¶
func (in *SitePeeringStatus) DeepCopy() *SitePeeringStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SitePeeringStatus.
func (*SitePeeringStatus) DeepCopyInto ¶
func (in *SitePeeringStatus) DeepCopyInto(out *SitePeeringStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SiteSpec ¶
type SiteSpec struct {
// NodeCidrs are the CIDRs that contain the internal IPs of nodes at this site
// +kubebuilder:validation:MinItems=1
NodeCidrs []string `json:"nodeCidrs"`
// PodCidrAssignments define how pod CIDRs are allocated to nodes in this site.
// +kubebuilder:validation:MinItems=1
PodCidrAssignments []PodCidrAssignment `json:"podCidrAssignments"`
// ManageCniPlugin controls whether the node agent writes CNI configuration
// and creates tunnel endpoints for same-site nodes. When true (the default),
// CNI config is written and all same-site nodes are tunnel peers.
// When false, only tunnel links to gateway pools for other sites are created,
// allowing an external CNI plugin to manage intra-site networking.
// Pod CIDR assignment is also disabled when manageCniPlugin is false,
// regardless of the assignmentEnabled setting on individual podCidrAssignments
// rules. The podCidrAssignments are still required to define the CIDR ranges
// used for inter-site routing.
// +optional
ManageCniPlugin *bool `json:"manageCniPlugin,omitempty"`
// NonMasqueradeCIDRs are CIDR blocks that should NOT be masqueraded when
// traffic leaves the node via the default gateway. Traffic to these CIDRs
// will use the pod's actual IP address. This is useful for preserving source
// IPs when communicating with external networks (e.g., corporate networks, VPNs).
// If nodes are Azure VMs/VMSS instances, NIC ipForwarding must be enabled
// for this setting to work correctly.
// +optional
NonMasqueradeCIDRs []string `json:"nonMasqueradeCIDRs,omitempty"`
// LocalCIDRs are CIDR blocks that are considered local to this site.
// Traffic to these CIDRs should never be routed via gateway pools.
// +optional
LocalCIDRs []string `json:"localCidrs,omitempty"`
// HealthCheckSettings controls health check settings for inter-site tunnel peers.
// +optional
HealthCheckSettings *HealthCheckSettings `json:"healthCheckSettings,omitempty"`
// TunnelProtocol selects the tunnel protocol for this scope.
// Valid values are "WireGuard", "IPIP", "GENEVE", "VXLAN", "None", or "Auto".
// Defaults to "Auto" when unset. When "Auto", links using external IPs
// use WireGuard and links using only internal IPs use GENEVE.
// +kubebuilder:validation:Enum=WireGuard;IPIP;GENEVE;VXLAN;None;Auto
// +optional
TunnelProtocol *TunnelProtocol `json:"tunnelProtocol,omitempty"`
// TunnelMTU is the MTU to set on routes through tunnels for this scope.
// +kubebuilder:validation:Minimum=576
// +kubebuilder:validation:Maximum=9000
// +optional
TunnelMTU *int32 `json:"tunnelMTU,omitempty"`
}
SiteSpec defines the desired state of Site +k8s:deepcopy-gen=true
func (*SiteSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteSpec.
func (*SiteSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SiteStatus ¶
type SiteStatus struct {
// NodeCount is the number of nodes matched to this site
// +optional
NodeCount int `json:"nodeCount,omitempty"`
// SliceCount is the number of SiteNodeSlice objects for this site
// +optional
SliceCount int `json:"sliceCount,omitempty"`
}
SiteStatus defines the observed state of Site
func (*SiteStatus) DeepCopy ¶
func (in *SiteStatus) DeepCopy() *SiteStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteStatus.
func (*SiteStatus) DeepCopyInto ¶
func (in *SiteStatus) DeepCopyInto(out *SiteStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TunnelProtocol ¶
type TunnelProtocol string
TunnelProtocol specifies the tunnel protocol used for a link scope.
const ( // TunnelProtocolWireGuard selects WireGuard (encrypted) tunneling. TunnelProtocolWireGuard TunnelProtocol = "WireGuard" // TunnelProtocolIPIP selects IPIP (IP-in-IP) tunneling. // IPIP has lower overhead than GENEVE and is preferred for private networks. TunnelProtocolIPIP TunnelProtocol = "IPIP" // TunnelProtocolGENEVE selects GENEVE (unencrypted) tunneling. TunnelProtocolGENEVE TunnelProtocol = "GENEVE" // TunnelProtocolVXLAN selects VXLAN tunneling using a single external/ // flow-based vxlan0 interface with per-route lwt encap ip directives. TunnelProtocolVXLAN TunnelProtocol = "VXLAN" // TunnelProtocolNone selects direct routing with no tunnel encapsulation. // Routes are programmed on the default route interface using the peer's // internal IP as the gateway. Requires L3 reachability between nodes. TunnelProtocolNone TunnelProtocol = "None" // TunnelProtocolAuto lets the system choose based on link characteristics // and the configured preferred encapsulation settings. By default, links // using external/public IPs use WireGuard; links using only internal IPs // use IPIP. TunnelProtocolAuto TunnelProtocol = "Auto" )