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
- Variables
- func Resource(resource string) schema.GroupResource
- type EgressGatewaySpec
- type Relay
- func (r *Relay) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)
- func (in *Relay) DeepCopy() *Relay
- func (in *Relay) DeepCopyInto(out *Relay)
- func (in *Relay) DeepCopyObject() runtime.Object
- func (r *Relay) GetGroupVersionResource() schema.GroupVersionResource
- func (r *Relay) GetObjectMeta() *metav1.ObjectMeta
- func (r *Relay) GetSingularName() string
- func (r *Relay) GetStatus() resource.StatusSubResource
- func (r *Relay) IsStorageVersion() bool
- func (r *Relay) NamespaceScoped() bool
- func (r *Relay) New() runtime.Object
- func (r *Relay) NewList() runtime.Object
- type RelayList
- func (rl *RelayList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)
- func (in *RelayList) DeepCopy() *RelayList
- func (in *RelayList) DeepCopyInto(out *RelayList)
- func (in *RelayList) DeepCopyObject() runtime.Object
- func (rl *RelayList) GetListMeta() *metav1.ListMeta
- type RelayRef
- type RelaySpec
- type RelayStatus
- type Tunnel
- func (t *Tunnel) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)
- func (in *Tunnel) DeepCopy() *Tunnel
- func (in *Tunnel) DeepCopyInto(out *Tunnel)
- func (in *Tunnel) DeepCopyObject() runtime.Object
- func (t *Tunnel) GetGroupVersionResource() schema.GroupVersionResource
- func (t *Tunnel) GetObjectMeta() *metav1.ObjectMeta
- func (t *Tunnel) GetSingularName() string
- func (t *Tunnel) GetStatus() resource.StatusSubResource
- func (t *Tunnel) IsStorageVersion() bool
- func (t *Tunnel) NamespaceScoped() bool
- func (t *Tunnel) New() runtime.Object
- func (t *Tunnel) NewList() runtime.Object
- type TunnelList
- func (tl *TunnelList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)
- func (in *TunnelList) DeepCopy() *TunnelList
- func (in *TunnelList) DeepCopyInto(out *TunnelList)
- func (in *TunnelList) DeepCopyObject() runtime.Object
- func (tl *TunnelList) GetListMeta() *metav1.ListMeta
- type TunnelRef
- type TunnelSpec
- type TunnelStatus
- type VPCNetwork
- func (n *VPCNetwork) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)
- func (in *VPCNetwork) DeepCopy() *VPCNetwork
- func (in *VPCNetwork) DeepCopyInto(out *VPCNetwork)
- func (in *VPCNetwork) DeepCopyObject() runtime.Object
- func (n *VPCNetwork) GetGroupVersionResource() schema.GroupVersionResource
- func (n *VPCNetwork) GetObjectMeta() *metav1.ObjectMeta
- func (n *VPCNetwork) GetSingularName() string
- func (n *VPCNetwork) GetStatus() resource.StatusSubResource
- func (n *VPCNetwork) IsStorageVersion() bool
- func (n *VPCNetwork) NamespaceScoped() bool
- func (n *VPCNetwork) New() runtime.Object
- func (n *VPCNetwork) NewList() runtime.Object
- type VPCNetworkCredentials
- type VPCNetworkDNS
- type VPCNetworkList
- func (nl *VPCNetworkList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)
- func (in *VPCNetworkList) DeepCopy() *VPCNetworkList
- func (in *VPCNetworkList) DeepCopyInto(out *VPCNetworkList)
- func (in *VPCNetworkList) DeepCopyObject() runtime.Object
- func (nl *VPCNetworkList) GetListMeta() *metav1.ListMeta
- type VPCNetworkRef
- type VPCNetworkSpec
- type VPCNetworkStatus
- type VPCService
- func (s *VPCService) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)
- func (s *VPCService) DNSHostname() string
- func (in *VPCService) DeepCopy() *VPCService
- func (in *VPCService) DeepCopyInto(out *VPCService)
- func (in *VPCService) DeepCopyObject() runtime.Object
- func (s *VPCService) Default()
- func (s *VPCService) GetGroupVersionResource() schema.GroupVersionResource
- func (s *VPCService) GetObjectMeta() *metav1.ObjectMeta
- func (s *VPCService) GetSingularName() string
- func (s *VPCService) GetStatus() resource.StatusSubResource
- func (s *VPCService) IsStorageVersion() bool
- func (s *VPCService) MemberAddrs() (addrs []netip.Addr, skipped []string)
- func (s *VPCService) NamespaceScoped() bool
- func (s *VPCService) New() runtime.Object
- func (s *VPCService) NewList() runtime.Object
- func (s *VPCService) Validate(ctx context.Context) field.ErrorList
- func (s *VPCService) ValidateUpdate(ctx context.Context, obj runtime.Object) field.ErrorList
- type VPCServiceEndpoint
- type VPCServiceList
- func (sl *VPCServiceList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error)
- func (in *VPCServiceList) DeepCopy() *VPCServiceList
- func (in *VPCServiceList) DeepCopyInto(out *VPCServiceList)
- func (in *VPCServiceList) DeepCopyObject() runtime.Object
- func (sl *VPCServiceList) GetListMeta() *metav1.ListMeta
- type VPCServiceRef
- type VPCServiceSpec
- type VPCServiceStatus
Constants ¶
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" )
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.
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.
const GroupName = "vpc.apoxy.dev"
GroupName specifies the group name used to register the objects.
Variables ¶
var ( // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. SchemeBuilder runtime.SchemeBuilder // Deprecated: use Install instead AddToScheme = localSchemeBuilder.AddToScheme Install = localSchemeBuilder.AddToScheme )
var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1alpha1"}
GroupVersion specifies the group and the version used to register the objects.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Relay.
func (*Relay) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Relay) DeepCopyObject ¶
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 (*Relay) GetStatus ¶
func (r *Relay) GetStatus() resource.StatusSubResource
func (*Relay) IsStorageVersion ¶
func (*Relay) NamespaceScoped ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RelayList.
func (*RelayList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RelayList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*RelayList) GetListMeta ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RelayRef.
func (*RelayRef) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RelaySpec.
func (*RelaySpec) DeepCopyInto ¶
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 (ps *RelayStatus) CopyTo(obj resource.ObjectWithStatusSubResource)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tunnel.
func (*Tunnel) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Tunnel) DeepCopyObject ¶
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 (*Tunnel) GetStatus ¶
func (t *Tunnel) GetStatus() resource.StatusSubResource
func (*Tunnel) IsStorageVersion ¶
func (*Tunnel) NamespaceScoped ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TunnelRef.
func (*TunnelRef) DeepCopyInto ¶
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 (ps *TunnelStatus) CopyTo(obj resource.ObjectWithStatusSubResource)
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 ¶
func (in *VPCNetworkCredentials) DeepCopy() *VPCNetworkCredentials
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 (ps *VPCNetworkStatus) CopyTo(obj resource.ObjectWithStatusSubResource)
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) ValidateUpdate ¶
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 (ps *VPCServiceStatus) CopyTo(obj resource.ObjectWithStatusSubResource)
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