×

Specification

Property Type Description

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

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

metadata

ObjectMeta

Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

object

UserDefinedNetworkSpec defines the desired state of UserDefinedNetworkSpec.

status

object

UserDefinedNetworkStatus contains the observed status of the UserDefinedNetwork.

.spec

Description

UserDefinedNetworkSpec defines the desired state of UserDefinedNetworkSpec.

Type

object

Required
  • topology

Property Type Description

layer2

object

Layer2 is the Layer2 topology configuration.

layer3

object

Layer3 is the Layer3 topology configuration.

localNet

object

LocalNet is the LocalNet topology configuration.

topology

string

Topology describes network configuration.

Allowed values are "Layer3", "Layer2", "LocalNet". Layer3 topology creates a layer 2 segment per node, each with a different subnet. Layer 3 routing is used to interconnect node subnets. Layer2 topology creates one logical switch shared by all nodes. LocalNet topology creates a cluster-wide logical switch connected to a physical network.

.spec.layer2

Description

Layer2 is the Layer2 topology configuration.

Type

object

Required
  • role

Property Type Description

ipamLifecycle

string

IPAMLifecycle controls IP addresses management lifecycle.

The only allowed value is Persistent. When set, OVN Kubernetes assigned IP addresses will be persisted in an ipamclaims.k8s.cni.cncf.io object. These IP addresses will be reused by other pods if requested. Only supported when "subnets" are set.

joinSubnets

array (string)

JoinSubnets are used inside the OVN network topology.

Dual-stack clusters may set 2 subnets (one for each IP family), otherwise only 1 subnet is allowed. This field is only allowed for "Primary" network. It is not recommended to set this field without explicit need and understanding of the OVN network topology. When omitted, the platform will choose a reasonable default which is subject to change over time.

mtu

integer

MTU is the maximum transmission unit for a network. MTU is optional, if not provided, the globally configured value in OVN-Kubernetes (defaults to 1400) is used for the network.

role

string

Role describes the network role in the pod.

Allowed value is "Secondary". Secondary network is only assigned to pods that use k8s.v1.cni.cncf.io/networks annotation to select given network.

subnets

array (string)

Subnets are used for the pod network across the cluster. Dual-stack clusters may set 2 subnets (one for each IP family), otherwise only 1 subnet is allowed.

The format should match standard CIDR notation (for example, "10.128.0.0/16"). This field may be omitted. In that case the logical switch implementing the network only provides layer 2 communication, and users must configure IP addresses for the pods. As a consequence, Port security only prevents MAC spoofing.

.spec.layer3

Description

Layer3 is the Layer3 topology configuration.

Type

object

Required
  • role

Property Type Description

joinSubnets

array (string)

JoinSubnets are used inside the OVN network topology.

Dual-stack clusters may set 2 subnets (one for each IP family), otherwise only 1 subnet is allowed. This field is only allowed for "Primary" network. It is not recommended to set this field without explicit need and understanding of the OVN network topology. When omitted, the platform will choose a reasonable default which is subject to change over time.

mtu

integer

MTU is the maximum transmission unit for a network.

MTU is optional, if not provided, the globally configured value in OVN-Kubernetes (defaults to 1400) is used for the network.

role

string

Role describes the network role in the pod.

Allowed values are "Primary" and "Secondary". Primary network is automatically assigned to every pod created in the same namespace. Secondary network is only assigned to pods that use k8s.v1.cni.cncf.io/networks annotation to select given network.

subnets

array

Subnets are used for the pod network across the cluster.

Dual-stack clusters may set 2 subnets (one for each IP family), otherwise only 1 subnet is allowed. Given subnet is split into smaller subnets for every node.

subnets[]

object

.spec.layer3.subnets

Description

Subnets are used for the pod network across the cluster.

Dual-stack clusters may set 2 subnets (one for each IP family), otherwise only 1 subnet is allowed. Given subnet is split into smaller subnets for every node.

Type

array

.spec.layer3.subnets[]

Description
Type

object

Property Type Description

cidr

string

CIDR specifies L3Subnet, which is split into smaller subnets for every node.

hostSubnet

integer

HostSubnet specifies the subnet size for every node.

When not set, it will be assigned automatically.

.spec.localNet

Description

LocalNet is the LocalNet topology configuration.

Type

object

Required
  • role

Property Type Description

excludeSubnets

array (string)

ExcludeSubnets is a list of CIDRs that will be removed from the assignable IP address pool specified by the "Subnets" field.

This field is supported only when "Subnets" field is set.

In case the subject local network provides various services (e.g.: DHCP server, data-base) their addresses can be excluded from the IP addresses pool OVN-Kubernetes will use for the subject network workloads (specified by "Subnets" field).

ipamLifecycle

string

IPAMLifecycle controls IP addresses management lifecycle.

The only allowed value is Persistent. When set, OVN Kubernetes assigned IP addresses will be persisted in an ipamclaims.k8s.cni.cncf.io object. These IP addresses will be reused by other pods if requested. Only supported when "subnets" are set.

mtu

integer

MTU is the maximum transmission unit for a network.

MTU is optional, if not provided, the globally configured value in OVN-Kubernetes (defaults to 1400) is used for the network.

role

string

Role describes the network role in the pod.

Allowed values are "Primary" and "Secondary". Must be set to "Secondary".

subnets

array (string)

Subnets are used for the pod network across the cluster.

Dual-stack clusters may set 2 subnets (one for each IP family), otherwise only 1 subnet is allowed. The format should match standard CIDR notation <example>. This field may be omitted. In that case the logical switch implementing the network only provides layer 2 communication, and users must configure IP addresses for the pods. As a consequence, Port security only prevents MAC spoofing.

.status

Description

UserDefinedNetworkStatus contains the observed status of the UserDefinedNetwork.

Type

object

Property Type Description

conditions

array

conditions[]

object

Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example,

type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"

// other fields }

.status.conditions

Description
Type

array

.status.conditions[]

Description

Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example,

type FooStatus struct{
    // Represents the observations of a foo's current state.
    // Known .status.conditions.type are: "Available", "Progressing", and "Degraded"
    // +patchMergeKey=type
    // +patchStrategy=merge
    // +listType=map
    // +listMapKey=type
    Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
    // other fields
}
Type

object

Required
  • lastTransitionTime

  • message

  • reason

  • status

  • type

Property Type Description

lastTransitionTime

string

lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

message

string

message is a human readable message indicating details about the transition. This may be an empty string.

observedGeneration

integer

observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

reason

string

reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

status

string

status of the condition, one of True, False, Unknown.

type

string

type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

API endpoints

The following API endpoints are available:

  • /apis/k8s.ovn.org/v1/userdefinednetworks

    • GET: list objects of kind UserDefinedNetwork

  • /apis/k8s.ovn.org/v1/namespaces/{namespace}/userdefinednetworks

    • DELETE: delete collection of UserDefinedNetwork

    • GET: list objects of kind UserDefinedNetwork

    • POST: create an UserDefinedNetwork

  • /apis/k8s.ovn.org/v1/namespaces/{namespace}/userdefinednetworks/{name}

    • DELETE: delete an UserDefinedNetwork

    • GET: read the specified UserDefinedNetwork

    • PATCH: partially update the specified UserDefinedNetwork

    • PUT: replace the specified UserDefinedNetwork

  • /apis/k8s.ovn.org/v1/namespaces/{namespace}/userdefinednetworks/{name}/status

    • GET: read status of the specified UserDefinedNetwork

    • PATCH: partially update status of the specified UserDefinedNetwork

    • PUT: replace status of the specified UserDefinedNetwork

/apis/k8s.ovn.org/v1/userdefinednetworks

HTTP method

GET

Description

list objects of kind UserDefinedNetwork

Table 1. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetworkList schema

401 - Unauthorized

Empty

/apis/k8s.ovn.org/v1/namespaces/{namespace}/userdefinednetworks

HTTP method

DELETE

Description

delete collection of UserDefinedNetwork

Table 2. HTTP responses
HTTP code Reponse body

200 - OK

Status schema

401 - Unauthorized

Empty

HTTP method

GET

Description

list objects of kind UserDefinedNetwork

Table 3. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetworkList schema

401 - Unauthorized

Empty

HTTP method

POST

Description

create an UserDefinedNetwork

Table 4. Query parameters
Parameter Type Description

dryRun

string

When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed

fieldValidation

string

fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.

Table 5. Body parameters
Parameter Type Description

body

UserDefinedNetwork schema

Table 6. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetwork schema

201 - Created

UserDefinedNetwork schema

202 - Accepted

UserDefinedNetwork schema

401 - Unauthorized

Empty

/apis/k8s.ovn.org/v1/namespaces/{namespace}/userdefinednetworks/{name}

Table 7. Global path parameters
Parameter Type Description

name

string

name of the UserDefinedNetwork

HTTP method

DELETE

Description

delete an UserDefinedNetwork

Table 8. Query parameters
Parameter Type Description

dryRun

string

When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed

Table 9. HTTP responses
HTTP code Reponse body

200 - OK

Status schema

202 - Accepted

Status schema

401 - Unauthorized

Empty

HTTP method

GET

Description

read the specified UserDefinedNetwork

Table 10. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetwork schema

401 - Unauthorized

Empty

HTTP method

PATCH

Description

partially update the specified UserDefinedNetwork

Table 11. Query parameters
Parameter Type Description

dryRun

string

When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed

fieldValidation

string

fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.

Table 12. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetwork schema

401 - Unauthorized

Empty

HTTP method

PUT

Description

replace the specified UserDefinedNetwork

Table 13. Query parameters
Parameter Type Description

dryRun

string

When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed

fieldValidation

string

fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.

Table 14. Body parameters
Parameter Type Description

body

UserDefinedNetwork schema

Table 15. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetwork schema

201 - Created

UserDefinedNetwork schema

401 - Unauthorized

Empty

/apis/k8s.ovn.org/v1/namespaces/{namespace}/userdefinednetworks/{name}/status

Table 16. Global path parameters
Parameter Type Description

name

string

name of the UserDefinedNetwork

HTTP method

GET

Description

read status of the specified UserDefinedNetwork

Table 17. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetwork schema

401 - Unauthorized

Empty

HTTP method

PATCH

Description

partially update status of the specified UserDefinedNetwork

Table 18. Query parameters
Parameter Type Description

dryRun

string

When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed

fieldValidation

string

fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.

Table 19. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetwork schema

401 - Unauthorized

Empty

HTTP method

PUT

Description

replace status of the specified UserDefinedNetwork

Table 20. Query parameters
Parameter Type Description

dryRun

string

When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed

fieldValidation

string

fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.

Table 21. Body parameters
Parameter Type Description

body

UserDefinedNetwork schema

Table 22. HTTP responses
HTTP code Reponse body

200 - OK

UserDefinedNetwork schema

201 - Created

UserDefinedNetwork schema

401 - Unauthorized

Empty