Files
Philip Laine 37d48b5ca8 Set best practice defaults for network router deployment (#214)
This change sets some Kubernetes best practices as defaults. Such as
topology spread and pod disruption budget.

It also exposes log level and image settings in the root struct to make
it easier to override commonly configured settings.

Fixes #77 
Fixes #162

Signed-off-by: Philip Laine <philip.laine@gmail.com>
2026-04-28 15:18:15 +02:00

17 KiB

API Reference

Packages

netbird.io/v1alpha1

Package v1alpha1 contains API Schema definitions for the v1alpha1 API group.

Resource Types

ContainerOverride

Appears in:

Field Description Default Validation
image string Image overrides the image used by the client. Optional: {}
env EnvVar array Optional: {}
securityContext SecurityContext Optional: {}

CrossNamespaceReference

Appears in:

Field Description Default Validation
name string Name of the referent. Required: {}
namespace string Namespace of the referent. Required: {}

DNSZoneReference

DNSZoneReference references a Netbird DNS zone by domain name.

Appears in:

Field Description Default Validation
name string Name is the domain name of an existing Netbird DNS zone, e.g. "example.com". Required: {}

Group

Group is the Schema for the groups API.

Field Description Default Validation
apiVersion string netbird.io/v1alpha1
kind string Group
kind string Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Optional: {}
apiVersion string APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
Optional: {}
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec GroupSpec Required: {}
status GroupStatus { observedGeneration:-1 }

GroupReference

Appears in:

Field Description Default Validation
name string Name is the name of the group. Optional: {}
id string ID is the id of the group. Optional: {}
localRef LocalObjectReference LocalReference is a reference to a group in the same namespace. Optional: {}

GroupSpec

GroupSpec defines the desired state of Group.

Appears in:

Field Description Default Validation
name string Name of the group. MinLength: 1

GroupStatus

GroupStatus defines the observed state of Group.

Appears in:

Field Description Default Validation
observedGeneration integer ObservedGeneration is the last reconciled generation. Optional: {}
conditions Condition array Conditions holds the conditions for the Group. Optional: {}
groupID string GroupID is the id of the created group. Optional: {}

InjectionMode

Underlying type: string

InjectionMode defines how the sidecar is injected into the pod.

Validation:

  • Enum: [Sidecar Container]

Appears in:

Field Description
Sidecar InjectionModeSidecar injects the client as a sidecar container.
Container InjectionModeContainer injects the client as a regular container.

NetworkResource

NetworkResource is the Schema for the networkresources API.

Field Description Default Validation
apiVersion string netbird.io/v1alpha1
kind string NetworkResource
kind string Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Optional: {}
apiVersion string APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
Optional: {}
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec NetworkResourceSpec Required: {}
status NetworkResourceStatus { observedGeneration:-1 }

NetworkResourceSpec

NetworkResourceSpec defines the desired state of NetworkResource.

Appears in:

Field Description Default Validation
networkRouterRef CrossNamespaceReference NetworkRouterRef is a reference to the network and router where the resource will be created.
serviceRef LocalObjectReference ServiceRef is a reference to the service to expose in the Network.
groups GroupReference array Groups are references to groups that the resource will be a part of. Optional: {}

NetworkResourceStatus

NetworkResourceStatus defines the observed state of NetworkResource.

Appears in:

Field Description Default Validation
observedGeneration integer ObservedGeneration is the last reconciled generation. Optional: {}
conditions Condition array Conditions holds the conditions for the NetworkResource. Optional: {}
networkID string NetworkID is the id of the network the resource is created in. Optional: {}
resourceID string ResourceID is the id of the created resource. Optional: {}
dnsZoneID string DNSZoneID is the id of the zone the DNS record is created in. Optional: {}
dnsRecordID string DNSRecordID is the id of the created DNS record. Optional: {}

NetworkRouter

NetworkRouter is the Schema for the networkrouters API.

Field Description Default Validation
apiVersion string netbird.io/v1alpha1
kind string NetworkRouter
kind string Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Optional: {}
apiVersion string APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
Optional: {}
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec NetworkRouterSpec Required: {}
status NetworkRouterStatus { observedGeneration:-1 }

NetworkRouterSpec

NetworkRouterSpec defines the desired state of NetworkRouter.

Appears in:

Field Description Default Validation
dnsZoneRef DNSZoneReference DNSZoneRef is a reference to the DNS zone used to create records for resources. Required: {}
image string Netbird client image. Optional: {}
logLevel string Log level for Netbird client. Optional: {}
workloadOverride WorkloadOverride WorkloadOverride contains configuration that will override the default workload. Optional: {}

NetworkRouterStatus

NetworkRouterStatus defines the observed state of NetworkRouter.

Appears in:

Field Description Default Validation
observedGeneration integer ObservedGeneration is the last reconciled generation. Optional: {}
conditions Condition array Conditions holds the conditions for the NetworkRouter. Optional: {}
routingPeerID string RoutingPeerID is the id of the created routing peer. Optional: {}
networkID string NetworkID is the id of the network the routing peer was created in. Optional: {}

SetupKey

SetupKey is the Schema for the setupkeys API.

Field Description Default Validation
apiVersion string netbird.io/v1alpha1
kind string SetupKey
kind string Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Optional: {}
apiVersion string APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
Optional: {}
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec SetupKeySpec Required: {}
status SetupKeyStatus { observedGeneration:-1 }

SetupKeySpec

SetupKeySpec defines the desired state of SetupKey.

Appears in:

Field Description Default Validation
name string Name of the setup key. MinLength: 1
ephemeral boolean Ephemeral decides if peers added with the key are ephemeral or not.
duration Duration Duration sets how long the setup key is valid for. Pattern: ^([0-9]+(\.[0-9]+)?(m|h))+$
Type: string
Optional: {}
autoGroups GroupReference array AutoGroups are groups that will be automatically assigned to peers using setup key. Optional: {}

SetupKeyStatus

SetupKeyStatus defines the observed state of SetupKey.

Appears in:

Field Description Default Validation
observedGeneration integer ObservedGeneration is the last reconciled generation. Optional: {}
conditions Condition array Conditions holds the conditions for the SetupKey. Optional: {}
setupKeyID string SetupKeyID is the id of the created setup key.

SidecarProfile

SidecarProfile is the Schema for the sidecarprofiles API.

Field Description Default Validation
apiVersion string netbird.io/v1alpha1
kind string SidecarProfile
kind string Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Optional: {}
apiVersion string APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
Optional: {}
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec SidecarProfileSpec Required: {}
status SidecarProfileStatus { }

SidecarProfileSpec

SidecarProfileSpec defines the desired state of SidecarProfile.

Appears in:

Field Description Default Validation
setupKeyRef LocalObjectReference SetupKeyRef is the reference to the setup key used in the client. Required: {}
podSelector LabelSelector PodSelector determines which pods the profile should apply to.
An empty slector means the profile will apply to all pods in the namespace.
Optional: {}
injectionMode InjectionMode InjectionMode defines whether the sidecar is injected as a native Kubernetes sidecar container or as a regular container. Sidecar Enum: [Sidecar Container]
Optional: {}
extraDNSLabels string array ExtraDNSLabels assigns additional DNS names to peers beyond their default hostname. Optional: {}
containerOverride ContainerOverride Optional: {}

SidecarProfileStatus

SidecarProfileStatus defines the observed state of SidecarProfile.

Appears in:

Field Description Default Validation
conditions Condition array Conditions holds the conditions for the SidecarProfile. Optional: {}

WorkloadOverride

Appears in:

Field Description Default Validation
labels object (keys:string, values:string) Labels that will be added. Optional: {}
annotations object (keys:string, values:string) Annotations that will be added. Optional: {}
replicas integer Replicas sets the amount of client replicas. 3 Minimum: 1
Optional: {}
podTemplate PodTemplateSpec PodTemplate overrides the pod template. Schemaless: {}
Optional: {}