×

To update network settings or change network parameters for a secondary network in OKD, you can modify the configuration for an existing secondary network. Edit the NetworkAttachmentDefinition custom resource to apply your changes.

Modifying a NetworkAttachmentDefinition custom resource

To update network settings or change network parameters for a secondary network in OKD, you can modify the NetworkAttachmentDefinition custom resource. Edit the Cluster Network Operator CR to apply your changes.

Prerequisites
  • You have configured a secondary network for your cluster.

  • Install the OpenShift CLI (oc).

  • Log in as a user with cluster-admin privileges.

Procedure
  1. Edit the Cluster Network Operator (CNO) CR in your default text editor by running the following command:

    $ oc edit networks.operator.openshift.io cluster
  2. In the additionalNetworks collection, update the secondary network with your changes.

  3. Save your changes and quit the text editor to commit your changes.

  4. Optional: Confirm that the CNO updated the NetworkAttachmentDefinition object by running the following command. Replace <network_name> with the name of the secondary network to display. There might be a delay before the CNO updates the NetworkAttachmentDefinition object to reflect your changes.

    $ oc get network-attachment-definitions <network_name> -o yaml

    For example, the following console output displays a NetworkAttachmentDefinition object that is named net1:

    $ oc get network-attachment-definitions net1 -o go-template='{{printf "%s\n" .spec.config}}'
    { "cniVersion": "0.3.1", "type": "macvlan",
    "master": "ens5",
    "mode": "bridge",
    "ipam":       {"type":"static","routes":[{"dst":"0.0.0.0/0","gw":"10.128.2.1"}],"addresses":[{"address":"10.128.2.100/23","gateway":"10.128.2.1"}],"dns":{"nameservers":["172.30.0.10"],"domain":"us-west-2.compute.internal","search":["us-west-2.compute.internal"]}} }

Using an OVN-Kubernetes localnet topology to map VLANs to a secondary interface

You can use OVN-Kubernetes localnet topology in a NetworkAttachmentDefinition (NAD) to map a specific VLAN ID from the physical network to the secondary interface of a pod.

To provide multiple VLANs for cluster workloads in OKD, define additional VLANs in the NetworkAttachmentDefinition custom resource (CR). Configuring trunk ports ensures that the physical network associates correctly with your virtual infrastructure for reliable traffic management.

The example in the procedure demonstrates the following configurations:

  • Physical switch ports connect to OKD nodes by using VLAN trunking. The trunk carries tagged traffic for the VLANs you define in NADs.

  • The br-ex acts as the OVS bridge that connects virtual workloads to the physical workloads.

  • Multiple NADs with specific VLAN tags get created by using the localnet topology. This configuration defines specific VLAN IDs for traffic isolation.

  • Pods or virtual machines (VMs) attach to the NAD CRs for the purposes of improved network connectivity.

Prerequisites
  • You installed the OpenShift CLI (oc).

  • You logged in as a user with cluster-admin privileges.

  • You installed the NMState Operator.

  • You configured the br-ex bridge interface during cluster installation.

Procedure
  1. Create an NetworkAttachmentDefinition CR for each VLAN, such as nad-cvlan100.yaml. OVN-Kubernetes uses the NAD files to tag and untag Ethernet frames for pods or VMs.

    Example configuration
    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: vlan-100
      namespace: default
    spec:
      config: |-
        {
          "cniVersion": "0.4.0",
          "name": "localnet-vlan-100",
          "type": "ovn-k8s-cni-overlay",
          "physicalNetworkName": "physnet",
          "topology": "localnet",
          "vlanID": 100,
          "mtu": 1500,
          "netAttachDefName": "default/vlan-100"
        }
    # ...
  2. Attach pods or VMs to the VLANs by referencing the NAD in the configuration for the pod or VM:

    Example pod configuration
    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/networks: vlan-100
    # ...
    Example VM configuration
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    spec:
        template:
            spec:
            networks:
            - multus:
                networkName: vlan-100
                name: secondary-vlan
    # ...