v1alpha1

package
v0.22.0 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2026 License: AGPL-3.0, Apache-2.0 Imports: 18 Imported by: 0

Documentation

Overview

Package v1alpha1 contains the vpc.apoxy.dev API group: private connectivity domains (VPCNetwork), service-like addressing over tunnel connections (VPCService), relay instance tracking (Relay), and per-connection tracking (Tunnel). All kinds are cluster-scoped. See docs/vpc-binding-relay-network-api.mdx in the apoxy-cloud repository for the design.

Index

Constants

View Source
const (
	// LabelNetwork is stamped by the relay on every Tunnel with the name of
	// the VPCNetwork the connection belongs to. Scopes VPCService selection.
	LabelNetwork = "vpc.apoxy.dev/network"

	// LabelTunnelName is stamped by the relay with the wire connect name
	// (the /v1/tunnel/:name path segment). Migration-minted VPCServices
	// select on it so legacy DNS names keep resolving.
	LabelTunnelName = "tunnel.apoxy.dev/name"

	// LabelAgentInstance is stamped by the relay with the agent process's
	// instance UUID (carried in the connect request), grouping the Tunnels of
	// one agent process across relays.
	LabelAgentInstance = "vpc.apoxy.dev/agent-instance"
)
View Source
const (
	// VPCServiceConditionReconciled reports whether the endpoints view in
	// status reflects current membership. It is about the controller having
	// done its job, not about the service being usable.
	VPCServiceConditionReconciled = "Reconciled"

	// VPCServiceConditionReady reports whether the service has at least one
	// usable endpoint, i.e. whether traffic sent to its DNS name can land
	// anywhere.
	VPCServiceConditionReady = "Ready"
)

VPCService condition types. Reconciled and Ready are deliberately separate: a service whose membership was computed correctly and came back empty is fully reconciled but not usable, and collapsing the two makes an unreachable service indistinguishable from a working one.

View Source
const (
	// VPCServiceReasonEndpointsComputed marks a successful membership
	// recompute (Reconciled).
	VPCServiceReasonEndpointsComputed = "EndpointsComputed"

	// VPCServiceReasonEndpointsAvailable marks a service with at least one
	// usable endpoint (Ready).
	VPCServiceReasonEndpointsAvailable = "EndpointsAvailable"

	// VPCServiceReasonNoEndpoints marks a reconciled service with no usable
	// endpoint: no member Tunnel matched, or the ones that did are not
	// carrying overlay addresses yet.
	VPCServiceReasonNoEndpoints = "NoEndpoints"

	// VPCServiceReasonNetworkNotFound marks a service whose spec.networkRef
	// names a VPCNetwork that does not exist. Admission rejects this at
	// create; it is still reachable by deleting the network afterwards.
	VPCServiceReasonNetworkNotFound = "NetworkNotFound"

	// VPCServiceReasonInvalidSelector marks a service whose spec.selector is
	// missing or cannot be converted to a label selector, so membership
	// cannot be computed at all.
	VPCServiceReasonInvalidSelector = "InvalidSelector"
)

VPCService condition reasons.

View Source
const GroupName = "vpc.apoxy.dev"

GroupName specifies the group name used to register the objects.

Variables

View Source
var (
	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
	SchemeBuilder runtime.SchemeBuilder

	// Deprecated: use Install instead
	AddToScheme = localSchemeBuilder.AddToScheme
	Install     = localSchemeBuilder.AddToScheme
)
View Source
var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1alpha1"}

GroupVersion specifies the group and the version used to register the objects.

View Source
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects Deprecated: use GroupVersion instead.

Functions

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type EgressGatewaySpec

type EgressGatewaySpec struct {
	// Whether the egress gateway is enabled. Default is false.
	// +optional
	Enabled bool `json:"enabled,omitempty"`
}

EgressGatewaySpec configures per-network egress-gateway (exit-node) semantics: agents may advertise default routes and the relay SNATs strictly within this network's routing domain.

NOTE: the current relay implementation is a relay-global boolean, so this field is not honored until per-network routing-domain semantics land in the relay router (APO-729).

func (*EgressGatewaySpec) DeepCopy

func (in *EgressGatewaySpec) DeepCopy() *EgressGatewaySpec

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

func (*EgressGatewaySpec) DeepCopyInto

func (in *EgressGatewaySpec) DeepCopyInto(out *EgressGatewaySpec)

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

type Relay

type Relay struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec is the specification of the relay.
	// +required
	Spec RelaySpec `json:"spec,omitempty"`

	// Status is the status of the relay.
	// +optional
	Status RelayStatus `json:"status,omitempty"`
}

Relay tracks one relay instance serving tunnel connections.

func (*Relay) ConvertToTable

func (r *Relay) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)

ConvertToTable implements rest.TableConvertor that handles table pretty printing.

func (*Relay) DeepCopy

func (in *Relay) DeepCopy() *Relay

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

func (*Relay) DeepCopyInto

func (in *Relay) DeepCopyInto(out *Relay)

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

func (*Relay) DeepCopyObject

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

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Relay) GetGroupVersionResource

func (r *Relay) GetGroupVersionResource() schema.GroupVersionResource

func (*Relay) GetObjectMeta

func (r *Relay) GetObjectMeta() *metav1.ObjectMeta

func (*Relay) GetSingularName

func (r *Relay) GetSingularName() string

func (*Relay) GetStatus

func (r *Relay) GetStatus() resource.StatusSubResource

func (*Relay) IsStorageVersion

func (r *Relay) IsStorageVersion() bool

func (*Relay) NamespaceScoped

func (r *Relay) NamespaceScoped() bool

func (*Relay) New

func (r *Relay) New() runtime.Object

func (*Relay) NewList

func (r *Relay) NewList() runtime.Object

type RelayList

type RelayList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Relay `json:"items"`
}

RelayList contains a list of Relay objects.

func (*RelayList) ConvertToTable

func (rl *RelayList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)

ConvertToTable implements rest.TableConvertor that handles table pretty printing.

func (*RelayList) DeepCopy

func (in *RelayList) DeepCopy() *RelayList

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

func (*RelayList) DeepCopyInto

func (in *RelayList) DeepCopyInto(out *RelayList)

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

func (*RelayList) DeepCopyObject

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

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*RelayList) GetListMeta

func (rl *RelayList) GetListMeta() *metav1.ListMeta

type RelayRef

type RelayRef struct {
	// Name of the Relay. Required.
	// +kubebuilder:validation:MinLength=1
	// +required
	Name string `json:"name"`
}

RelayRef is a reference to a Relay.

func (*RelayRef) DeepCopy

func (in *RelayRef) DeepCopy() *RelayRef

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

func (*RelayRef) DeepCopyInto

func (in *RelayRef) DeepCopyInto(out *RelayRef)

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

type RelaySpec

type RelaySpec struct {
	// Underlay host:port endpoints agents dial (QUIC control and Geneve data
	// share the port).
	// +required
	Addresses []string `json:"addresses"`

	// Scopes which networks this relay serves. Empty selects all networks.
	// +optional
	NetworkSelector *metav1.LabelSelector `json:"networkSelector,omitempty"`
}

RelaySpec is write-once: created by the relay on start (or selector change), deleted on shutdown, never mutated in steady state. Liveness lives in the relay's Lease, not here.

func (*RelaySpec) DeepCopy

func (in *RelaySpec) DeepCopy() *RelaySpec

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

func (*RelaySpec) DeepCopyInto

func (in *RelaySpec) DeepCopyInto(out *RelaySpec)

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

type RelayStatus

type RelayStatus struct {
	// Alive-and-accepting. Flipped by the lease watcher on expiry/renewal
	// transitions (crash) and by the relay itself at drain start. The only
	// liveness signal consumers see; count connections via Tunnels by
	// relayRef.
	// +optional
	Ready bool `json:"ready,omitempty"`

	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty,omitzero"`
}

func (*RelayStatus) CopyTo

func (*RelayStatus) DeepCopy

func (in *RelayStatus) DeepCopy() *RelayStatus

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

func (*RelayStatus) DeepCopyInto

func (in *RelayStatus) DeepCopyInto(out *RelayStatus)

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

func (*RelayStatus) SubResourceName

func (ps *RelayStatus) SubResourceName() string

type Tunnel

type Tunnel struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec is the specification of the connection.
	// +required
	Spec TunnelSpec `json:"spec,omitempty"`

	// Status is the status of the connection.
	// +optional
	Status TunnelStatus `json:"status,omitempty"`
}

Tunnel tracks one live connection - the Endpoints analog to VPCService's Service. Created complete by the owning relay at connect, deleted at disconnect, never patched in steady state, and never user-authored. The name is the connection ID; metadata labels carry the agent-declared labels plus the relay-stamped identity labels (LabelNetwork, LabelTunnelName, LabelAgentInstance).

func (*Tunnel) ConvertToTable

func (t *Tunnel) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)

ConvertToTable implements rest.TableConvertor that handles table pretty printing.

func (*Tunnel) DeepCopy

func (in *Tunnel) DeepCopy() *Tunnel

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

func (*Tunnel) DeepCopyInto

func (in *Tunnel) DeepCopyInto(out *Tunnel)

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

func (*Tunnel) DeepCopyObject

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

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Tunnel) GetGroupVersionResource

func (t *Tunnel) GetGroupVersionResource() schema.GroupVersionResource

func (*Tunnel) GetObjectMeta

func (t *Tunnel) GetObjectMeta() *metav1.ObjectMeta

func (*Tunnel) GetSingularName

func (t *Tunnel) GetSingularName() string

func (*Tunnel) GetStatus

func (t *Tunnel) GetStatus() resource.StatusSubResource

func (*Tunnel) IsStorageVersion

func (t *Tunnel) IsStorageVersion() bool

func (*Tunnel) NamespaceScoped

func (t *Tunnel) NamespaceScoped() bool

func (*Tunnel) New

func (t *Tunnel) New() runtime.Object

func (*Tunnel) NewList

func (t *Tunnel) NewList() runtime.Object

type TunnelList

type TunnelList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Tunnel `json:"items"`
}

TunnelList contains a list of Tunnel objects.

func (*TunnelList) ConvertToTable

func (tl *TunnelList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)

ConvertToTable implements rest.TableConvertor that handles table pretty printing.

func (*TunnelList) DeepCopy

func (in *TunnelList) DeepCopy() *TunnelList

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

func (*TunnelList) DeepCopyInto

func (in *TunnelList) DeepCopyInto(out *TunnelList)

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

func (*TunnelList) DeepCopyObject

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

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*TunnelList) GetListMeta

func (tl *TunnelList) GetListMeta() *metav1.ListMeta

type TunnelRef

type TunnelRef struct {
	// Name of the Tunnel. Required.
	// +kubebuilder:validation:MinLength=1
	// +required
	Name string `json:"name"`
}

TunnelRef is a reference to a Tunnel.

func (*TunnelRef) DeepCopy

func (in *TunnelRef) DeepCopy() *TunnelRef

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

func (*TunnelRef) DeepCopyInto

func (in *TunnelRef) DeepCopyInto(out *TunnelRef)

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

type TunnelSpec

type TunnelSpec struct {
	// The VPCNetwork the connection belongs to.
	// +required
	NetworkRef VPCNetworkRef `json:"networkRef"`

	// The relay terminating the connection.
	// +required
	RelayRef RelayRef `json:"relayRef"`
}

TunnelSpec carries the connection's immutable joins, stamped by the owning relay at create.

func (*TunnelSpec) DeepCopy

func (in *TunnelSpec) DeepCopy() *TunnelSpec

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

func (*TunnelSpec) DeepCopyInto

func (in *TunnelSpec) DeepCopyInto(out *TunnelSpec)

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

type TunnelStatus

type TunnelStatus struct {
	// Overlay addresses allocated to the connection by the owning relay from
	// its leased blocks. Dual-stack: one IPv6 ULA prefix plus one IPv4 CGNAT
	// address for egress through the connection (ingress never rides v4).
	// +optional
	Addresses []string `json:"addresses,omitempty,omitzero"`

	// Agent-declared prefixes reachable behind this connection, bounded by
	// credential claims and rejected by the relay when out of bounds.
	// +optional
	AdvertisedRoutes []string `json:"advertisedRoutes,omitempty,omitzero"`
}

func (*TunnelStatus) CopyTo

func (*TunnelStatus) DeepCopy

func (in *TunnelStatus) DeepCopy() *TunnelStatus

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

func (*TunnelStatus) DeepCopyInto

func (in *TunnelStatus) DeepCopyInto(out *TunnelStatus)

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

func (*TunnelStatus) SubResourceName

func (ps *TunnelStatus) SubResourceName() string

type VPCNetwork

type VPCNetwork struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec is the specification of the network.
	// +required
	Spec VPCNetworkSpec `json:"spec,omitempty"`

	// Status is the status of the network.
	// +optional
	Status VPCNetworkStatus `json:"status,omitempty"`
}

VPCNetwork is a private connectivity domain: the routing and key domain that Tunnels and compute vpc bindings attach to.

func (*VPCNetwork) ConvertToTable

func (n *VPCNetwork) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)

ConvertToTable implements rest.TableConvertor that handles table pretty printing.

func (*VPCNetwork) DeepCopy

func (in *VPCNetwork) DeepCopy() *VPCNetwork

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

func (*VPCNetwork) DeepCopyInto

func (in *VPCNetwork) DeepCopyInto(out *VPCNetwork)

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

func (*VPCNetwork) DeepCopyObject

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

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*VPCNetwork) GetGroupVersionResource

func (n *VPCNetwork) GetGroupVersionResource() schema.GroupVersionResource

func (*VPCNetwork) GetObjectMeta

func (n *VPCNetwork) GetObjectMeta() *metav1.ObjectMeta

func (*VPCNetwork) GetSingularName

func (n *VPCNetwork) GetSingularName() string

func (*VPCNetwork) GetStatus

func (n *VPCNetwork) GetStatus() resource.StatusSubResource

func (*VPCNetwork) IsStorageVersion

func (n *VPCNetwork) IsStorageVersion() bool

func (*VPCNetwork) NamespaceScoped

func (n *VPCNetwork) NamespaceScoped() bool

func (*VPCNetwork) New

func (n *VPCNetwork) New() runtime.Object

func (*VPCNetwork) NewList

func (n *VPCNetwork) NewList() runtime.Object

type VPCNetworkCredentials

type VPCNetworkCredentials struct {
	// Bearer token for authenticating with the network's relays.
	Token string `json:"token,omitempty"`
}

VPCNetworkCredentials carries the network's connect credential.

func (*VPCNetworkCredentials) DeepCopy

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

func (*VPCNetworkCredentials) DeepCopyInto

func (in *VPCNetworkCredentials) DeepCopyInto(out *VPCNetworkCredentials)

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

type VPCNetworkDNS

type VPCNetworkDNS struct {
	// DNS server addresses.
	// +optional
	Servers []string `json:"servers,omitempty"`

	// DNS search domains.
	// +optional
	SearchDomains []string `json:"searchDomains,omitempty"`

	// The ndots resolver option.
	// +optional
	NDots *int `json:"ndots,omitempty"`
}

VPCNetworkDNS is the DNS configuration pushed to attaching tunnels and vpc-bound sandboxes. Mirrors the wire ConnectResponse.DNS shape.

func (*VPCNetworkDNS) DeepCopy

func (in *VPCNetworkDNS) DeepCopy() *VPCNetworkDNS

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

func (*VPCNetworkDNS) DeepCopyInto

func (in *VPCNetworkDNS) DeepCopyInto(out *VPCNetworkDNS)

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

type VPCNetworkList

type VPCNetworkList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []VPCNetwork `json:"items"`
}

VPCNetworkList contains a list of VPCNetwork objects.

func (*VPCNetworkList) ConvertToTable

func (nl *VPCNetworkList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)

ConvertToTable implements rest.TableConvertor that handles table pretty printing.

func (*VPCNetworkList) DeepCopy

func (in *VPCNetworkList) DeepCopy() *VPCNetworkList

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

func (*VPCNetworkList) DeepCopyInto

func (in *VPCNetworkList) DeepCopyInto(out *VPCNetworkList)

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

func (*VPCNetworkList) DeepCopyObject

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

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*VPCNetworkList) GetListMeta

func (nl *VPCNetworkList) GetListMeta() *metav1.ListMeta

type VPCNetworkRef

type VPCNetworkRef struct {
	// Name of the VPCNetwork. Required.
	// +kubebuilder:validation:MinLength=1
	// +required
	Name string `json:"name"`
}

VPCNetworkRef is a reference to a VPCNetwork.

func (*VPCNetworkRef) DeepCopy

func (in *VPCNetworkRef) DeepCopy() *VPCNetworkRef

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

func (*VPCNetworkRef) DeepCopyInto

func (in *VPCNetworkRef) DeepCopyInto(out *VPCNetworkRef)

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

type VPCNetworkSpec

type VPCNetworkSpec struct {
	// Per-network egress-gateway (exit-node) semantics. Not honored until the
	// relay router implements per-network routing domains (APO-729).
	// +optional
	EgressGateway *EgressGatewaySpec `json:"egressGateway,omitempty"`

	// DNS pushed to attaching tunnels and vpc-bound sandboxes.
	// +optional
	DNS *VPCNetworkDNS `json:"dns,omitempty"`
}

func (*VPCNetworkSpec) DeepCopy

func (in *VPCNetworkSpec) DeepCopy() *VPCNetworkSpec

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

func (*VPCNetworkSpec) DeepCopyInto

func (in *VPCNetworkSpec) DeepCopyInto(out *VPCNetworkSpec)

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

type VPCNetworkStatus

type VPCNetworkStatus struct {
	// Credentials for authenticating with the network's relays.
	// +optional
	Credentials *VPCNetworkCredentials `json:"credentials,omitempty,omitzero"`

	// The ULA prefix of the network's overlay address space. Relay discovery
	// is a live list of Relay objects, not derived state here.
	// +optional
	OverlayCIDR string `json:"overlayCIDR,omitempty"`

	// Conditions: Ready, InfraProvisioned.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty,omitzero"`
}

func (*VPCNetworkStatus) CopyTo

func (*VPCNetworkStatus) DeepCopy

func (in *VPCNetworkStatus) DeepCopy() *VPCNetworkStatus

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

func (*VPCNetworkStatus) DeepCopyInto

func (in *VPCNetworkStatus) DeepCopyInto(out *VPCNetworkStatus)

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

func (*VPCNetworkStatus) SubResourceName

func (ps *VPCNetworkStatus) SubResourceName() string

type VPCService

type VPCService struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec is the specification of the service.
	// +required
	Spec VPCServiceSpec `json:"spec,omitempty"`

	// Status is the status of the service.
	// +optional
	Status VPCServiceStatus `json:"status,omitempty"`
}

VPCService is service-like addressing over Tunnels, modeled on the Kubernetes Service: a label selector over Tunnel objects (which play Endpoints), a stable DNS name, and the target for DomainRecords and routes. User-authored.

func (*VPCService) ConvertToTable

func (s *VPCService) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)

ConvertToTable implements rest.TableConvertor that handles table pretty printing.

func (*VPCService) DNSHostname

func (s *VPCService) DNSHostname() string

DNSHostname returns the effective DNS label the service is published under: spec.hostname when set, the object name otherwise.

func (*VPCService) DeepCopy

func (in *VPCService) DeepCopy() *VPCService

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

func (*VPCService) DeepCopyInto

func (in *VPCService) DeepCopyInto(out *VPCService)

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

func (*VPCService) DeepCopyObject

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

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*VPCService) Default

func (s *VPCService) Default()

Default materializes spec.hostname from the object name so the published DNS identity is always explicit on the stored object. GenerateName creates are the one gap (no name at decode time); DNSHostname covers those and any client-side decode that skips scheme defaulting.

func (*VPCService) GetGroupVersionResource

func (s *VPCService) GetGroupVersionResource() schema.GroupVersionResource

func (*VPCService) GetObjectMeta

func (s *VPCService) GetObjectMeta() *metav1.ObjectMeta

func (*VPCService) GetSingularName

func (s *VPCService) GetSingularName() string

func (*VPCService) GetStatus

func (s *VPCService) GetStatus() resource.StatusSubResource

func (*VPCService) IsStorageVersion

func (s *VPCService) IsStorageVersion() bool

func (*VPCService) MemberAddrs

func (s *VPCService) MemberAddrs() (addrs []netip.Addr, skipped []string)

MemberAddrs returns the service's member endpoint addresses from status.endpoints. Members may be recorded as plain addresses or as prefixes (overlay /96s); the base address is returned either way. Entries that parse as neither are returned in skipped so callers can log them with their own context. This is the single parser for every DNS plane publishing VPCService members (backplane/Envoy, workerd resident push) — family filtering, when a plane needs it, is applied on the returned addrs.

func (*VPCService) NamespaceScoped

func (s *VPCService) NamespaceScoped() bool

func (*VPCService) New

func (s *VPCService) New() runtime.Object

func (*VPCService) NewList

func (s *VPCService) NewList() runtime.Object

func (*VPCService) Validate

func (s *VPCService) Validate(ctx context.Context) field.ErrorList

func (*VPCService) ValidateUpdate

func (s *VPCService) ValidateUpdate(ctx context.Context, obj runtime.Object) field.ErrorList

type VPCServiceEndpoint

type VPCServiceEndpoint struct {
	// The member Tunnel (one connection).
	TunnelRef TunnelRef `json:"tunnelRef"`

	// The member's overlay addresses. Plural per member (dual-stack); only
	// the IPv6 ULA is published to the shared DNS zone.
	// +optional
	Addresses []string `json:"addresses,omitempty"`
}

VPCServiceEndpoint is one live member of the service.

func (*VPCServiceEndpoint) DeepCopy

func (in *VPCServiceEndpoint) DeepCopy() *VPCServiceEndpoint

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

func (*VPCServiceEndpoint) DeepCopyInto

func (in *VPCServiceEndpoint) DeepCopyInto(out *VPCServiceEndpoint)

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

func (VPCServiceEndpoint) HasUsableAddress

func (e VPCServiceEndpoint) HasUsableAddress() bool

HasUsableAddress reports whether the member carries at least one address traffic can actually be sent to. A member with no addresses — or only garbage ones — resolves to nothing, so counting it as an endpoint would report a service as having members it cannot reach.

type VPCServiceList

type VPCServiceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []VPCService `json:"items"`
}

VPCServiceList contains a list of VPCService objects.

func (*VPCServiceList) ConvertToTable

func (sl *VPCServiceList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)

ConvertToTable implements rest.TableConvertor that handles table pretty printing.

func (*VPCServiceList) DeepCopy

func (in *VPCServiceList) DeepCopy() *VPCServiceList

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

func (*VPCServiceList) DeepCopyInto

func (in *VPCServiceList) DeepCopyInto(out *VPCServiceList)

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

func (*VPCServiceList) DeepCopyObject

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

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*VPCServiceList) GetListMeta

func (sl *VPCServiceList) GetListMeta() *metav1.ListMeta

type VPCServiceRef

type VPCServiceRef struct {
	// Name of the VPCService. Required.
	// +kubebuilder:validation:MinLength=1
	// +required
	Name string `json:"name"`
}

VPCServiceRef is a reference to a VPCService.

func (*VPCServiceRef) DeepCopy

func (in *VPCServiceRef) DeepCopy() *VPCServiceRef

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

func (*VPCServiceRef) DeepCopyInto

func (in *VPCServiceRef) DeepCopyInto(out *VPCServiceRef)

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

type VPCServiceSpec

type VPCServiceSpec struct {
	// The VPCNetwork this service belongs to. Selection is scoped to Tunnels
	// of this network.
	// +required
	NetworkRef VPCNetworkRef `json:"networkRef"`

	// The DNS label under which the service is published in the project's
	// vpc zone: <hostname>.<network>.vpc.apoxy.net. Defaults to the object
	// name. Must be a valid DNS label; unique within the VPCNetwork
	// (enforced at admission).
	// +optional
	Hostname string `json:"hostname,omitempty"`

	// Selects member Tunnels by their labels (agents declare labels at
	// connect; the relay stamps them onto Tunnel metadata labels).
	// +required
	Selector *metav1.LabelSelector `json:"selector"`
}

func (*VPCServiceSpec) DeepCopy

func (in *VPCServiceSpec) DeepCopy() *VPCServiceSpec

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

func (*VPCServiceSpec) DeepCopyInto

func (in *VPCServiceSpec) DeepCopyInto(out *VPCServiceSpec)

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

func (*VPCServiceSpec) MembershipSelector

func (s *VPCServiceSpec) MembershipSelector() (labels.Selector, error)

MembershipSelector converts spec.selector into the label selector used to pick member Tunnels, and is the single definition of which selectors are usable as a membership rule.

It rejects the two degenerate shapes that LabelSelectorAsSelector maps to something silently surprising: nil becomes labels.Nothing() (the service can never have endpoints) and empty becomes labels.Everything() (every Tunnel in the network becomes a member). Neither is distinguishable from a spec whose author left the field out. Validation rejects both at admission, but every caller must re-check: update validation is ratcheted, so an object stored before that rule can still carry either shape, and expanding its empty selector into the whole network would publish unrelated members under its name.

type VPCServiceStatus

type VPCServiceStatus struct {
	// Live members and their overlay addresses (the "endpoints view"). Only
	// usable members appear here: a Tunnel with no overlay address yet is
	// not an endpoint traffic can land on, so it is not counted as one.
	// +optional
	Endpoints []VPCServiceEndpoint `json:"endpoints,omitempty,omitzero"`

	// Conditions: Reconciled, Ready.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty,omitzero"`
}

func (*VPCServiceStatus) CopyTo

func (*VPCServiceStatus) DeepCopy

func (in *VPCServiceStatus) DeepCopy() *VPCServiceStatus

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

func (*VPCServiceStatus) DeepCopyInto

func (in *VPCServiceStatus) DeepCopyInto(out *VPCServiceStatus)

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

func (*VPCServiceStatus) SubResourceName

func (ps *VPCServiceStatus) SubResourceName() string

Jump to

Keyboard shortcuts

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