Documentation
¶
Overview ¶
Package v1 contains API Schema definitions for the v1 API group +kubebuilder:object:generate=true +groupName=cni.webmesh.io
Index ¶
Constants ¶
const ( // PeerContainerFinalizer is the PeerContainer finalizer. PeerContainerFinalizer = "peercontainer.cniv1.webmesh.io" // PeerContainerPodNameLabel is the label for the pod name. PeerContainerPodNameLabel = "webmesh.io/pod-name" // PeerContainerPodNamespaceLabel is the label for the pod namespace. PeerContainerPodNamespaceLabel = "webmesh.io/pod-namespace" )
const ( // RemoteNetworkFinalizer is the RemoteNetwork finalizer. RemoteNetworkFinalizer = "remotenetwork.cniv1.webmesh.io" // KubeconfigKey is the key in the secret containing the kubeconfig // for the remote network. KubeconfigKey = "kubeconfig" // TLSCertificateKey is the key in the secret containing the TLS certificate // for the remote network. TLSCertificateKey = "tls.crt" // TLSPrivateKeyKey is the key in the secret containing the TLS private key // for the remote network. TLSPrivateKeyKey = "tls.key" // TLSCACertificateKey is the key in the secret containing the TLS CA certificate // for the remote network. TLSCACertificateKey = "ca.crt" // for the remote network. PreSharedKeyKey = "pre-shared-key" )
const FieldOwner = "webmesh-cni"
FieldOwner is the field owner for CNI objects.
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "cni.webmesh.io", Version: "v1"} // 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 )
var PeerContainerTypeMeta = metav1.TypeMeta{ APIVersion: GroupVersion.String(), Kind: "PeerContainer", }
PeerContainerTypeMeta is the type meta for the PeerContainer.
var RemoteNetworkTypeMeta = metav1.TypeMeta{ APIVersion: GroupVersion.String(), Kind: "RemoteNetwork", }
RemoteNetworkTypeMeta is the type meta for the RemoteNetwork.
Functions ¶
This section is empty.
Types ¶
type BridgeStatus ¶ added in v0.0.17
type BridgeStatus string
BridgeStatus is the current status of a bridge interface.
const ( // InterfaceStatusCreated is the initial phase of a new peer interface. BridgeStatusCreated BridgeStatus = "Created" // InterfaceStatusStarting is the phase when the interface is starting. BridgeStatusStarting BridgeStatus = "Starting" // InterfaceStatusRunning is the phase when the interface is running. BridgeStatusRunning BridgeStatus = "Running" // InterfaceStatusFailed is the phase when the interface failed to start. BridgeStatusFailed BridgeStatus = "Failed" )
type InterfaceStatus ¶
type InterfaceStatus string
InterfaceStatus is the current status of a container interface.
const ( // InterfaceStatusCreated is the initial phase of a new peer interface. InterfaceStatusCreated InterfaceStatus = "Created" // InterfaceStatusStarting is the phase when the interface is starting. InterfaceStatusStarting InterfaceStatus = "Starting" // InterfaceStatusRunning is the phase when the interface is running. InterfaceStatusRunning InterfaceStatus = "Running" // InterfaceStatusFailed is the phase when the interface failed to start. InterfaceStatusFailed InterfaceStatus = "Failed" )
type NetworkConfig ¶ added in v0.0.17
type NetworkConfig struct { // WireGuardPort is the port to use for WireGuard. One will be // allocated automatically if not provided. WireGuardPort int `json:"wireguardPort,omitempty"` // InterfaceName is the name to give the interface. It will be // automatically chosen from the name of the remote network if // not provided. InterfaceName string `json:"interfaceName,omitempty"` // MTU is the MTU to use for the interface. It will be automatically // chosen if not provided. MTU int `json:"mtu,omitempty"` // ForwardDNS enables forwarding DNS requests from the remote network. // Requires that a MeshDNS server is running on each peered CNI node. ForwardDNS bool `json:"forwardDNS,omitempty"` // DisableIPv4 disables IPv4 forwarding on the interface. DisableIPv4 bool `json:"disableIPv4,omitempty"` // DisableIPv6 disables IPv6 forwarding on the interface. DisableIPv6 bool `json:"disableIPv6,omitempty"` }
NetworkConfig is configuration options for the bridge connection.
func (*NetworkConfig) DeepCopy ¶ added in v0.0.17
func (in *NetworkConfig) DeepCopy() *NetworkConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkConfig.
func (*NetworkConfig) DeepCopyInto ¶ added in v0.0.17
func (in *NetworkConfig) DeepCopyInto(out *NetworkConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Peer ¶ added in v0.0.7
type Peer struct { // ID is the ID of the peer. If provided, the native authentication // will attempt ID based authentication. If not provided, an ID will // be extracted from the public key and used for authentication. ID string `json:"id,omitempty"` // PublicKey is the public key of the peer. This must be provided if no // ID is provided. PublicKey string `json:"publicKey,omitempty"` // Endpoints are the endpoints of the peer. When not performing // authentication and not using peer-discovery, these are remote // wireguard endpoints. When performing authentication without // peer-discovery, these are remote gRPC endpoints. Endpoints []string `json:"endpoints,omitempty"` // Rendezvous is a rendezvous point for the peer. This is used for // peer discovery. Rendezvous string `json:"rendezvous,omitempty"` }
Peer is a CNI node in the remote network.
func (*Peer) DeepCopy ¶ added in v0.0.7
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Peer.
func (*Peer) DeepCopyInto ¶ added in v0.0.7
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PeerContainer ¶
type PeerContainer struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec PeerContainerSpec `json:"spec,omitempty"` Status PeerContainerStatus `json:"status,omitempty"` }
PeerContainer is the Schema for the peercontainers API
func (PeerContainer) AppendToResults ¶
func (p PeerContainer) AppendToResults(result *cniv1.Result) error
AppendToResults appends the network information to the results.
func (*PeerContainer) DeepCopy ¶
func (in *PeerContainer) DeepCopy() *PeerContainer
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PeerContainer.
func (*PeerContainer) DeepCopyInto ¶
func (in *PeerContainer) DeepCopyInto(out *PeerContainer)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PeerContainer) DeepCopyObject ¶
func (in *PeerContainer) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PeerContainerList ¶
type PeerContainerList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []PeerContainer `json:"items"` }
PeerContainerList contains a list of PeerContainer
func (*PeerContainerList) DeepCopy ¶
func (in *PeerContainerList) DeepCopy() *PeerContainerList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PeerContainerList.
func (*PeerContainerList) DeepCopyInto ¶
func (in *PeerContainerList) DeepCopyInto(out *PeerContainerList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PeerContainerList) DeepCopyObject ¶
func (in *PeerContainerList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PeerContainerSpec ¶
type PeerContainerSpec struct { // NodeID is the ID to use for the container. NodeID string `json:"nodeID,omitempty"` // ContainerID is the ID of the container being created. ContainerID string `json:"containerID,omitempty"` // Netns is the network namespace of the container being created. Netns string `json:"netns,omitempty"` // IfName is the name of the interface create. IfName string `json:"ifName,omitempty"` // NodeName is the name of the node the container is running on. NodeName string `json:"nodeName,omitempty"` // MTU is the MTU to set on the interface. MTU int `json:"mtu,omitempty"` // DisableIPv4 is whether to disable IPv4 on the interface. DisableIPv4 bool `json:"disableIPv4,omitempty"` // DisableIPv6 is whether to disable IPv6 on the interface. DisableIPv6 bool `json:"disableIPv6,omitempty"` // LogLevel is the log level for the webmesh interface. LogLevel string `json:"logLevel,omitempty"` }
PeerContainerSpec defines the desired state of PeerContainer
func (*PeerContainerSpec) DeepCopy ¶
func (in *PeerContainerSpec) DeepCopy() *PeerContainerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PeerContainerSpec.
func (*PeerContainerSpec) DeepCopyInto ¶
func (in *PeerContainerSpec) DeepCopyInto(out *PeerContainerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PeerContainerStatus ¶
type PeerContainerStatus struct { // InterfaceStatus is the current status of the interface. InterfaceStatus InterfaceStatus `json:"status,omitempty"` // InterfaceName is the name of the interface. InterfaceName string `json:"interfaceName,omitempty"` // MACAddress is the MAC address of the interface. MACAddress string `json:"macAddress,omitempty"` // IPv4Address is the IPv4 address of the interface. IPv4Address string `json:"ipv4Address,omitempty"` // IPv6Address is the IPv6 address of the interface. IPv6Address string `json:"ipv6Address,omitempty"` // NetworkV4 is the IPv4 network of the interface. NetworkV4 string `json:"networkV4,omitempty"` // NetworkV6 is the IPv6 network of the interface. NetworkV6 string `json:"networkV6,omitempty"` // DNSServers is an optional list of extra DNS servers to use for the interface. DNSServers []string `json:"dnsServers,omitempty"` // Error is any error that occurred while peering the interface. Error string `json:"error,omitempty"` }
PeerContainerStatus defines the observed state of PeerContainer
func (*PeerContainerStatus) DeepCopy ¶
func (in *PeerContainerStatus) DeepCopy() *PeerContainerStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PeerContainerStatus.
func (*PeerContainerStatus) DeepCopyInto ¶
func (in *PeerContainerStatus) DeepCopyInto(out *PeerContainerStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (PeerContainerStatus) HasNetworkInfo ¶
func (p PeerContainerStatus) HasNetworkInfo() bool
HasNetworkInfo returns true if the status has network information.
func (PeerContainerStatus) IsEmpty ¶
func (p PeerContainerStatus) IsEmpty() bool
IsEmpty returns true if the status is empty.
type RemoteAuthMethod ¶ added in v0.0.7
type RemoteAuthMethod string
RemoteAuthMethod is a method for authenticating with a remote network.
const ( // RemoteAuthMethodNone is the no authentication method. RemoteAuthMethodNone RemoteAuthMethod = "none" // RemoteAuthMethodNative is the native gRPC authentication method. // This may or may not require TLS credentials depending on the remote // network configuration. RemoteAuthMethodNative RemoteAuthMethod = "native" // RemoteAuthMethodKubernetes is the Kubernetes authentication method. // This requires a kubeconfig for the remote network where this node // will write its network configuration directly to the cluster. RemoteAuthMethodKubernetes RemoteAuthMethod = "kubernetes" )
type RemoteNetwork ¶ added in v0.0.8
type RemoteNetwork struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec RemoteNetworkSpec `json:"spec,omitempty"` Status RemoteNetworkStatus `json:"status,omitempty"` }
RemoteNetwork is the Schema for the remotenetworks API
func (*RemoteNetwork) DeepCopy ¶ added in v0.0.8
func (in *RemoteNetwork) DeepCopy() *RemoteNetwork
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteNetwork.
func (*RemoteNetwork) DeepCopyInto ¶ added in v0.0.8
func (in *RemoteNetwork) DeepCopyInto(out *RemoteNetwork)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RemoteNetwork) DeepCopyObject ¶ added in v0.0.8
func (in *RemoteNetwork) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RemoteNetworkList ¶ added in v0.0.17
type RemoteNetworkList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []RemoteNetwork `json:"items"` }
RemoteNetworkList contains a list of RemoteNetworks.
func (*RemoteNetworkList) DeepCopy ¶ added in v0.0.17
func (in *RemoteNetworkList) DeepCopy() *RemoteNetworkList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteNetworkList.
func (*RemoteNetworkList) DeepCopyInto ¶ added in v0.0.17
func (in *RemoteNetworkList) DeepCopyInto(out *RemoteNetworkList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RemoteNetworkList) DeepCopyObject ¶ added in v0.0.17
func (in *RemoteNetworkList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RemoteNetworkSpec ¶ added in v0.0.7
type RemoteNetworkSpec struct { // AuthMethod is the authentication method to use for peering with // the remote network. // +kubebuilder:validation:Enum=none;native;kubernetes // +kubebuilder:default=native AuthMethod RemoteAuthMethod `json:"authMethod"` // RemoteNamespace is the remote namespace to use for peer storage // when using the kubernetes authentication method. Defaults to the // storage namespace configured on the host. RemoteNamespace string `json:"remoteNamespace,omitempty"` // Network is the network configuration for the bridge connection. Network NetworkConfig `json:"network,omitempty"` // Peers are one or more peers in the remote network. These are optional // when using kubernetes authentication. Endpoints must be supplied for // one or more peers in the list if not using peer-discovery. Peers []Peer `json:"peers,omitempty"` // Credentials are a reference to a secret containing credentials for the remote // network. It may contain a kubeconfig for kubernetes authentication or TLS // credentials for mTLS authentication. If native authentication is set and no // kubeconfig or TLS credentials are present, ID authentication will be used. Credentials *corev1.ObjectReference `json:"credentials,omitempty"` // CheckInterval is the interval to check on the remote network status when // using native or no authentication. Defaults to 1 minute. Kubernetes authentication // relies on storage subscription events and does not require a check interval. CheckInterval *metav1.Duration `json:"checkInterval,omitempty"` }
RemoteNetworkSpec defines the configuration for peering with another webmesh network.
func (*RemoteNetworkSpec) DeepCopy ¶ added in v0.0.7
func (in *RemoteNetworkSpec) DeepCopy() *RemoteNetworkSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteNetworkSpec.
func (*RemoteNetworkSpec) DeepCopyInto ¶ added in v0.0.7
func (in *RemoteNetworkSpec) DeepCopyInto(out *RemoteNetworkSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RemoteNetworkStatus ¶ added in v0.0.8
type RemoteNetworkStatus struct { // BridgeStatus is the status of the bridge interface. BridgeStatus BridgeStatus `json:"bridgeStatus,omitempty"` // InterfaceName is the name of the interface. InterfaceName string `json:"interfaceName"` // MACAddress is the MAC address of the interface. MACAddress string `json:"macAddress"` // IPv4Address is the IPv4 address of the interface. IPv4Address string `json:"ipv4Address"` // IPv6Address is the IPv6 address of the interface. IPv6Address string `json:"ipv6Address"` // NetworkV4 is the IPv4 network of the interface. NetworkV4 string `json:"networkV4"` // NetworkV6 is the IPv6 network of the interface. NetworkV6 string `json:"networkV6"` // Peers are the peers in the remote network. Peers []Peer `json:"peers,omitempty"` // Error is the last error encountered when peering with the remote network. Error string `json:"error,omitempty"` }
RemoteNetworkStatus will contain the status of the peering with the remote network.
func (*RemoteNetworkStatus) DeepCopy ¶ added in v0.0.8
func (in *RemoteNetworkStatus) DeepCopy() *RemoteNetworkStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteNetworkStatus.
func (*RemoteNetworkStatus) DeepCopyInto ¶ added in v0.0.8
func (in *RemoteNetworkStatus) DeepCopyInto(out *RemoteNetworkStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.