diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclusters.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclusters.yaml index 5bdd3018..ba648320 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclusters.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclusters.yaml @@ -220,6 +220,17 @@ spec: or GlobalInClusterIPPool rule: self.kind == 'InClusterIPPool' || self.kind == 'GlobalInClusterIPPool' + linkMtu: + description: LinkMTU is the network device Maximum + Transmission Unit. + type: integer + x-kubernetes-validations: + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && self <= + 65520) + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && self <= + 65520) model: default: virtio description: Model is the network device model. @@ -231,12 +242,16 @@ spec: type: string mtu: description: MTU is the network device Maximum - Transmission Unit. Only works with virtio Model. - Set to 1 to inherit the MTU value from the underlying - bridge. - maximum: 65520 - minimum: 1 + Transmission Unit. When set to 1, virtio devices + inherit the MTU value from the underlying bridge. type: integer + x-kubernetes-validations: + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && self <= + 65520) + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && self <= + 65520) name: description: Name is the network device name. Must be unique within the virtual machine and @@ -247,6 +262,65 @@ spec: - message: additional network devices doesn't allow net0 rule: self != 'net0' + routes: + description: Routes are the routes associated + with this interface. + items: + description: RouteSpec describes an IPv4/IPv6 + Route. + properties: + metric: + description: Metric is the priority of the + route in the routing table. + format: int32 + type: integer + table: + description: Table is the routing table + used for this route. + format: int32 + type: integer + to: + description: To is the subnet to be routed. + type: string + via: + description: Via is the gateway to the subnet. + type: string + type: object + minItems: 1 + type: array + routingPolicy: + description: RoutingPolicy is an interface-specific + policy inserted into FIB (forwarding information + base). + items: + description: RoutingPolicySpec is a Linux FIB + rule. + properties: + from: + description: From is the subnet of the source. + type: string + priority: + description: Priority is the position in + the ip rule FIB table. + format: int32 + maximum: 4294967295 + type: integer + x-kubernetes-validations: + - message: Cowardly refusing to insert FIB + rule matching kernel rules + rule: (self > 0 && self < 32765) || (self + > 32766) + table: + description: Table is the routing table + ID. + format: int32 + type: integer + to: + description: To is the subnet of the target. + type: string + type: object + minItems: 1 + type: array vlan: description: VLAN is the network L2 VLAN. maximum: 4094 @@ -286,11 +360,14 @@ spec: type: string mtu: description: MTU is the network device Maximum Transmission - Unit. Only works with virtio Model. Set to 1 to - inherit the MTU value from the underlying bridge. - maximum: 65520 - minimum: 1 + Unit. When set to 1, virtio devices inherit the + MTU value from the underlying bridge. type: integer + x-kubernetes-validations: + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && self <= 65520) + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && self <= 65520) vlan: description: VLAN is the network L2 VLAN. maximum: 4094 @@ -305,93 +382,12 @@ spec: description: VRFDevice defines Virtual Routing Flow devices. properties: - dnsServers: - description: DNSServers contains information about - nameservers to be used for this interface. If - this field is not set, it will use the default - dns servers from the ProxmoxCluster. - items: - type: string - minItems: 1 - type: array interfaces: description: Interfaces is the list of proxmox network devices managed by this virtual device. items: type: string type: array - ipv4PoolRef: - description: IPv4PoolRef is a reference to an - IPAM Pool resource, which exposes IPv4 addresses. - The network device will use an available IP - address from the referenced pool. This can be - combined with `IPv6PoolRef` in order to enable - dual stack. - properties: - apiGroup: - description: APIGroup is the group for the - resource being referenced. If APIGroup is - not specified, the specified Kind must be - in the core API group. For any other third-party - types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - x-kubernetes-validations: - - message: ipv4PoolRef allows only IPAM apiGroup - ipam.cluster.x-k8s.io - rule: self.apiGroup == 'ipam.cluster.x-k8s.io' - - message: ipv4PoolRef allows either InClusterIPPool - or GlobalInClusterIPPool - rule: self.kind == 'InClusterIPPool' || self.kind - == 'GlobalInClusterIPPool' - ipv6PoolRef: - description: IPv6PoolRef is a reference to an - IPAM pool resource, which exposes IPv6 addresses. - The network device will use an available IP - address from the referenced pool. this can be - combined with `IPv4PoolRef` in order to enable - dual stack. - properties: - apiGroup: - description: APIGroup is the group for the - resource being referenced. If APIGroup is - not specified, the specified Kind must be - in the core API group. For any other third-party - types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - x-kubernetes-validations: - - message: ipv6PoolRef allows only IPAM apiGroup - ipam.cluster.x-k8s.io - rule: self.apiGroup == 'ipam.cluster.x-k8s.io' - - message: ipv6PoolRef allows either InClusterIPPool - or GlobalInClusterIPPool - rule: self.kind == 'InClusterIPPool' || self.kind - == 'GlobalInClusterIPPool' name: description: Name is the virtual network device name. Must be unique within the virtual machine. @@ -399,7 +395,7 @@ spec: type: string routes: description: Routes are the routes associated - with the l3mdev policy. + with this interface. items: description: RouteSpec describes an IPv4/IPv6 Route. @@ -424,8 +420,9 @@ spec: minItems: 1 type: array routingPolicy: - description: RoutingPolicy is the l3mdev policy - inserted into FIB. + description: RoutingPolicy is an interface-specific + policy inserted into FIB (forwarding information + base). items: description: RoutingPolicySpec is a Linux FIB rule. @@ -440,7 +437,7 @@ spec: maximum: 4294967295 type: integer x-kubernetes-validations: - - message: Cowardly refusing to insert fib + - message: Cowardly refusing to insert FIB rule matching kernel rules rule: (self > 0 && self < 32765) || (self > 32766) diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclustertemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclustertemplates.yaml index f53dd2f9..44231824 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclustertemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclustertemplates.yaml @@ -243,6 +243,17 @@ spec: or GlobalInClusterIPPool rule: self.kind == 'InClusterIPPool' || self.kind == 'GlobalInClusterIPPool' + linkMtu: + description: LinkMTU is the network device + Maximum Transmission Unit. + type: integer + x-kubernetes-validations: + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && + self <= 65520) + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && + self <= 65520) model: default: virtio description: Model is the network device @@ -255,12 +266,17 @@ spec: type: string mtu: description: MTU is the network device - Maximum Transmission Unit. Only works - with virtio Model. Set to 1 to inherit - the MTU value from the underlying bridge. - maximum: 65520 - minimum: 1 + Maximum Transmission Unit. When set + to 1, virtio devices inherit the MTU + value from the underlying bridge. type: integer + x-kubernetes-validations: + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && + self <= 65520) + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && + self <= 65520) name: description: Name is the network device name. Must be unique within the virtual @@ -272,6 +288,70 @@ spec: - message: additional network devices doesn't allow net0 rule: self != 'net0' + routes: + description: Routes are the routes associated + with this interface. + items: + description: RouteSpec describes an + IPv4/IPv6 Route. + properties: + metric: + description: Metric is the priority + of the route in the routing table. + format: int32 + type: integer + table: + description: Table is the routing + table used for this route. + format: int32 + type: integer + to: + description: To is the subnet to + be routed. + type: string + via: + description: Via is the gateway + to the subnet. + type: string + type: object + minItems: 1 + type: array + routingPolicy: + description: RoutingPolicy is an interface-specific + policy inserted into FIB (forwarding + information base). + items: + description: RoutingPolicySpec is a + Linux FIB rule. + properties: + from: + description: From is the subnet + of the source. + type: string + priority: + description: Priority is the position + in the ip rule FIB table. + format: int32 + maximum: 4294967295 + type: integer + x-kubernetes-validations: + - message: Cowardly refusing to + insert FIB rule matching kernel + rules + rule: (self > 0 && self < 32765) + || (self > 32766) + table: + description: Table is the routing + table ID. + format: int32 + type: integer + to: + description: To is the subnet of + the target. + type: string + type: object + minItems: 1 + type: array vlan: description: VLAN is the network L2 VLAN. maximum: 4094 @@ -313,12 +393,17 @@ spec: type: string mtu: description: MTU is the network device Maximum - Transmission Unit. Only works with virtio - Model. Set to 1 to inherit the MTU value - from the underlying bridge. - maximum: 65520 - minimum: 1 + Transmission Unit. When set to 1, virtio + devices inherit the MTU value from the + underlying bridge. type: integer + x-kubernetes-validations: + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && self + <= 65520) + - message: invalid MTU value + rule: self == 1 || ( self >= 576 && self + <= 65520) vlan: description: VLAN is the network L2 VLAN. maximum: 4094 @@ -333,16 +418,6 @@ spec: description: VRFDevice defines Virtual Routing Flow devices. properties: - dnsServers: - description: DNSServers contains information - about nameservers to be used for this - interface. If this field is not set, - it will use the default dns servers - from the ProxmoxCluster. - items: - type: string - minItems: 1 - type: array interfaces: description: Interfaces is the list of proxmox network devices managed by this @@ -350,82 +425,6 @@ spec: items: type: string type: array - ipv4PoolRef: - description: IPv4PoolRef is a reference - to an IPAM Pool resource, which exposes - IPv4 addresses. The network device will - use an available IP address from the - referenced pool. This can be combined - with `IPv6PoolRef` in order to enable - dual stack. - properties: - apiGroup: - description: APIGroup is the group - for the resource being referenced. - If APIGroup is not specified, the - specified Kind must be in the core - API group. For any other third-party - types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - x-kubernetes-validations: - - message: ipv4PoolRef allows only IPAM - apiGroup ipam.cluster.x-k8s.io - rule: self.apiGroup == 'ipam.cluster.x-k8s.io' - - message: ipv4PoolRef allows either InClusterIPPool - or GlobalInClusterIPPool - rule: self.kind == 'InClusterIPPool' - || self.kind == 'GlobalInClusterIPPool' - ipv6PoolRef: - description: IPv6PoolRef is a reference - to an IPAM pool resource, which exposes - IPv6 addresses. The network device will - use an available IP address from the - referenced pool. this can be combined - with `IPv4PoolRef` in order to enable - dual stack. - properties: - apiGroup: - description: APIGroup is the group - for the resource being referenced. - If APIGroup is not specified, the - specified Kind must be in the core - API group. For any other third-party - types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - x-kubernetes-validations: - - message: ipv6PoolRef allows only IPAM - apiGroup ipam.cluster.x-k8s.io - rule: self.apiGroup == 'ipam.cluster.x-k8s.io' - - message: ipv6PoolRef allows either InClusterIPPool - or GlobalInClusterIPPool - rule: self.kind == 'InClusterIPPool' - || self.kind == 'GlobalInClusterIPPool' name: description: Name is the virtual network device name. Must be unique within the @@ -434,7 +433,7 @@ spec: type: string routes: description: Routes are the routes associated - with the l3mdev policy. + with this interface. items: description: RouteSpec describes an IPv4/IPv6 Route. @@ -461,8 +460,9 @@ spec: minItems: 1 type: array routingPolicy: - description: RoutingPolicy is the l3mdev - policy inserted into FIB. + description: RoutingPolicy is an interface-specific + policy inserted into FIB (forwarding + information base). items: description: RoutingPolicySpec is a Linux FIB rule. @@ -479,7 +479,7 @@ spec: type: integer x-kubernetes-validations: - message: Cowardly refusing to - insert fib rule matching kernel + insert FIB rule matching kernel rules rule: (self > 0 && self < 32765) || (self > 32766)