Infra

Overview

Persona

  • Infrastructure provider

  • Network operator

Function

Declares the infrastructure configuration for a CNE instance, defining the IPAM configurations, network attachments, VRFs, networks, static routes, and egress defaults that other resources reference for modular, reusable network design.

This resource centralizes the underlay network configuration for a BIG-IP Next for Kubernetes instance. It also provides the default network configuration for any gateway that doesn’t reference a GatewaySettings resource.

Note

This resource is a singleton. Deploy only one Infra resource in the BIG-IP Next for Kubernetes namespace. Multiple Infra resources aren’t supported.

Names

Singular name

Plural name

Short name

infra

infras

infra

API group and version

gateway.k8s.f5.com/v1alpha1

Scope

Namespace

Specification

spec

Field

Required

Default

Description

ipams
array

Yes

—

IPAM configurations used to allocate addresses. Must contain no more than 256 items.

networkAttachments
array

Yes

—

Named groups of NetworkAttachmentDefinition references used by networks. Must contain no more than 64 items.

networks
array

Yes

—

Network definitions for VLAN and VXLAN connectivity. Must contain no more than 64 items.

vrfs
array

No

—

VRF definitions available for network and route binding. Must contain no more than 64 items.

staticRoutes
array

No

—

Static routes programmed in the selected VRF contexts. Must contain no more than 256 items.

egressDefaults
object

No

—

Defaults for egress tunnel network configuration.

spec.ipams[]

Field

Required

Default

Description

name
string

Yes

—

Unique name of this IPAM configuration. Must be 1 to 255 characters. The name egressvxlan-shared is reserved and can’t be used.

ipPools
array

Yes

—

Address pools that network references can consume. Must contain 1 to 64 items.

infobloxNetview
string

No

default

IPAM network view (an Infoblox concept) that scopes address allocation to a logical partition. Must be 1 to 255 characters.

spec.ipams[].ipPools[]

Set either cidr or both rangeStart and rangeEnd, but not both modes. When you use a range, rangeStart and rangeEnd must be the same IP family.

Field

Required

Default

Description

cidr
string

No

—

CIDR notation for the IP pool from which the system auto-generates addresses through IPAM. Maximum length is 45 characters.

rangeStart
string

No

—

Starting IP address for explicit range mode. Set this with rangeEnd. Can’t be used with cidr. Maximum length is 45 characters.

rangeEnd
string

No

—

Ending IP address for explicit range mode. Set this with rangeStart. Can’t be used with cidr. Maximum length is 45 characters.

availabilityZone
string

No

—

Availability zone for this IP pool, for example us-east-1a. Used for zone-aware address allocation. Maximum length is 255 characters.

Limits: Maximum 256 IPAM entries. Maximum 64 ipPools per IPAM entry.

spec.networkAttachments[]

Field

Required

Default

Description

name
string

Yes

—

Logical name for this network attachment group. Must be 1 to 255 characters.

networkAttachmentDefinitions
array

Yes

—

Kubernetes NetworkAttachmentDefinition references in this group. Must contain at least one item.

spec.networkAttachments[].networkAttachmentDefinitions[]

Field

Required

Default

Description

name
string

Yes

—

Name of the NetworkAttachmentDefinition resource. Must be 1 to 255 characters.

spec.vrfs[]

Field

Required

Default

Description

name
string

Yes

—

Name of the VRF. Must be 1 to 255 characters.

strictIsolation
boolean

No

true

When true, prohibits route leaking and shared interfaces. Accepted values: true, false.

spec.networks[]

For a vlan network type, set vlan only. For a vxlan network type, set vxlan only.

Field

Required

Default

Description

name
string

Yes

—

Unique name of the network entry. Must be 1 to 255 characters.

type
string

Yes

—

Network type that controls whether the system uses VLAN or VXLAN settings. Accepted values: vlan, vxlan.

vlan
object

No

—

VLAN-specific settings. Set this when type is vlan.

vxlan
object

No

—

VXLAN-specific settings. Set this when type is vxlan.

spec.networks[].vlan

Field

Required

Default

Description

networkAttachmentRef
object

Yes

—

Reference to a spec.networkAttachments entry used by this VLAN network.

ipamRefs
array

Yes

—

References to IPAM configurations used for VLAN address allocation. Must contain at least one item.

tag
integer

No

0

802.1Q VLAN tag. 0 or omitted means an untagged VLAN. Accepted values: 0 to 4094. When this value is set to 0, the frames for this VLAN are emitted without an 802.1Q tag on the attached interfaces. Otherwise, the frames for this VLAN will be emitted with an 802.1Q tag.

mtu
integer

No

1500

MTU for the VLAN interface. Accepted values: 576 to 9198.

vrfRef
object

No

—

Reference to a spec.vrfs entry for the VLAN routing context.

spec.networks[].vlan.networkAttachmentRef

Field

Required

Default

Description

name
string

Yes

—

Name of the spec.networkAttachments entry. Must be 1 to 255 characters.

spec.networks[].vlan.ipamRefs[]

Field

Required

Default

Description

name
string

Yes

—

Name of a spec.ipams entry used by this VLAN. Must be 1 to 255 characters.

spec.networks[].vlan.vrfRef

Field

Required

Default

Description

name
string

Yes

—

Name of the VRF. Must be 1 to 255 characters.

spec.networks[].vxlan

Set either networkRef or vtepIpamRefs, but not both.

Field

Required

Default

Description

vni
integer

Yes

—

VXLAN Network Identifier (VNI). Accepted values: 0 to 16777215.

networkRef
object

No

—

Reference to another spec.networks entry for the underlay network context.

ipamRefs
array

No

—

References to IPAM configurations used for VXLAN Self IP address allocation. Must contain at least one item.

vtepIpamRefs
array

No

—

References to IPAM configurations used for VXLAN tunnel IP address allocation. Must contain at least one item.

mtu
integer

No

1450

MTU for VXLAN tunnel traffic. Accepted values: 1280 to 9000.

port
integer

No

4789

UDP destination port used for VXLAN encapsulation. Accepted values: 1 to 65535.

vrfRef
object

No

—

Reference to a spec.vrfs entry for the VXLAN routing context.

spec.networks[].vxlan.networkRef

Field

Required

Default

Description

name
string

Yes

—

Name of the spec.networks entry. Must be 1 to 255 characters.

spec.networks[].vxlan.ipamRefs[]

Field

Required

Default

Description

name
string

Yes

—

Name of a spec.ipams entry used by this VXLAN. Must be 1 to 255 characters.

spec.networks[].vxlan.vtepIpamRefs[]

Field

Required

Default

Description

name
string

Yes

—

Name of a spec.ipams entry used by this VXLAN. Must be 1 to 255 characters.

spec.networks[].vxlan.vrfRef

Field

Required

Default

Description

name
string

Yes

—

Name of the VRF. Must be 1 to 255 characters.

spec.staticRoutes[]

Set exactly one of nextHop or networkRef.

Field

Required

Default

Description

name
string

Yes

—

Unique name of the static route entry. Must be 1 to 255 characters.

destinations
array

Yes

—

Destination prefixes in CIDR notation. Must contain 1 to 255 items.

nextHop
string

No

—

Next-hop IP address. Mutually exclusive with networkRef.

networkRef
object

No

—

Reference to a spec.networks entry for directly connected routes. Mutually exclusive with nextHop.

vrfRef
object

No

—

Reference to a spec.vrfs entry where the system installs this route.

spec.staticRoutes[].networkRef

Field

Required

Default

Description

name
string

Yes

—

Name of the spec.networks entry. Must be 1 to 255 characters.

spec.staticRoutes[].vrfRef

Field

Required

Default

Description

name
string

Yes

—

Name of the VRF. Must be 1 to 255 characters.

spec.egressDefaults

Field

Required

Default

Description

networkRef
object

Yes

—

Reference to a spec.networks entry of type vlan used as the default egress tunnel network context.

subnet
string

No

—

Subnet used for egress tunnels. When omitted, the system assumes an internal default subnet.

port
integer

No

4789

UDP destination port used for VXLAN encapsulation. Accepted values: 1 to 65535.

spec.egressDefaults.networkRef

Field

Required

Default

Description

name
string

Yes

—

Name of a spec.networks entry. Must be 1 to 255 characters.

Example manifest

The following manifest defines IPAM pools, network attachments, two VLAN networks, and a default static route.

apiVersion: gateway.k8s.f5.com/v1alpha1
kind: Infra
metadata:
  name: infra
  namespace: bnk-system
spec:
  ipams:
    - name: client-pool
      infobloxNetview: "default"
      ipPools:
        - cidr: 192.0.2.0/24
    - name: server-pool
      infobloxNetview: "default"
      ipPools:
        - cidr: 198.51.100.0/24
        - cidr: 2001:db8::22:22:22:0/112
    - name: listener-pool
      infobloxNetview: "default"
      ipPools:
        - cidr: 198.51.100.0/24
        - cidr: 2001:db8::22:22:22:0/112
  networkAttachments:
    - name: client-attach
      networkAttachmentDefinitions:
        - name: sriov-client-netattach
    - name: server-attach
      networkAttachmentDefinitions:
        - name: sriov-server-netattach
  networks:
    - name: tmm-client
      type: vlan
      vlan:
        tag: 0
        mtu: 1500
        networkAttachmentRef:
          name: client-attach
        ipamRefs:
          - name: client-pool
    - name: tmm-server
      type: vlan
      vlan:
        tag: 0
        mtu: 1500
        networkAttachmentRef:
          name: server-attach
        ipamRefs:
          - name: server-pool
  staticRoutes:
    - name: default-route
      destinations:
        - 0.0.0.0/0
      nextHop: 198.51.100.1

Delete the resource

After you delete the Infra resource, verify that the system removed both the IPAM and IPAMRange resources from the BIG-IP Next for Kubernetes namespace before you reapply the resource. If you use Infoblox, confirm that the system released the associated IP addresses. A clean state before you reapply the resource prevents unpredictable behavior.