v1alpha1

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 28, 2026 License: MIT Imports: 5 Imported by: 0

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

View Source
const GroupName = "net.unbounded-cloud.io"

GroupName is the group name used in this package

View Source
const MaxNodesPerSlice = 500

MaxNodesPerSlice is the maximum number of nodes per SiteNodeSlice

Variables

View Source
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

func SpecEnabled(enabled *bool) bool

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

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

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

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

func (in *NodeInfo) DeepCopy() *NodeInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeInfo.

func (*NodeInfo) DeepCopyInto

func (in *NodeInfo) DeepCopyInto(out *NodeInfo)

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

func (in *Site) DeepCopy() *Site

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Site.

func (*Site) DeepCopyInto

func (in *Site) DeepCopyInto(out *Site)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Site) DeepCopyObject

func (in *Site) DeepCopyObject() runtime.Object

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteGatewayPoolAssignment.

func (*SiteGatewayPoolAssignment) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteGatewayPoolAssignmentList.

func (*SiteGatewayPoolAssignmentList) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteGatewayPoolAssignmentSpec.

func (*SiteGatewayPoolAssignmentSpec) DeepCopyInto

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

func (in *SiteList) DeepCopy() *SiteList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteList.

func (*SiteList) DeepCopyInto

func (in *SiteList) DeepCopyInto(out *SiteList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SiteList) DeepCopyObject

func (in *SiteList) DeepCopyObject() runtime.Object

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

func (in *SiteSpec) DeepCopy() *SiteSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteSpec.

func (*SiteSpec) DeepCopyInto

func (in *SiteSpec) DeepCopyInto(out *SiteSpec)

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"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL