You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/user-guide/gateway-add.md
+89-66Lines changed: 89 additions & 66 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ Two types of resources must be created in the running cluster:
25
25
26
26
Additionally, for building the gateway installer:
27
27
28
-
3.**FabNode** - Defines the gateway node at the fabricator level (required for `hhfab build --gateways`)
28
+
3.**FabNode** - Defines the gateway node at the fabricator level (required for `hhfab build --gateways`). See [Install Gateway Node](../install-upgrade/install.md#install-gateway-node) for details on installing the bare metal machine.
29
29
30
30
## Step 1: Gather Configuration Values
31
31
@@ -44,13 +44,14 @@ Example configuration:
44
44
```yaml
45
45
config:
46
46
control:
47
-
managementSubnet: 172.30.30.0/24
48
-
dummySubnet: 172.30.50.0/24
47
+
managementSubnet: 172.30.0.0/21
48
+
controlVIP: 172.30.0.1
49
+
dummySubnet: 172.30.90.0/24
49
50
fabric:
50
-
managementDHCPStart: 172.30.30.10
51
-
protocolSubnet: 172.30.40.0/24
52
-
vtepSubnet: 172.30.41.0/24
53
-
fabricSubnet: 172.30.42.0/24
51
+
managementDHCPStart: 172.30.4.0
52
+
protocolSubnet: 172.30.8.0/24
53
+
vtepSubnet: 172.30.12.0/24
54
+
fabricSubnet: 172.30.128.0/24
54
55
gateway:
55
56
asn: 65534
56
57
```
@@ -92,8 +93,9 @@ Example: If management subnet is 172.30.0.0/21 and DHCP starts at 172.30.4.0, ch
92
93
93
94
### Dummy IP
94
95
95
-
The dummy IP is used for internal K3s cluster communication between control and gateway nodes. Each node requires a unique /31
96
-
subnet from the dummy subnet range. The /31 provides a point-to-point link between the node and the control plane.
96
+
The dummy IP is used for internal K3s cluster communication between control and gateway nodes. We use dummy network devices
97
+
and IPs to ensure K3s has a stable default network route. Each node requires a unique /31 subnet from the dummy subnet range.
98
+
The /31 provides a point-to-point link between the node and the control plane.
97
99
98
100
Verify uniqueness by checking existing allocations:
99
101
@@ -113,23 +115,23 @@ Example: If dummy subnet is 172.30.90.0/24, and control-1 uses 172.30.90.0/31, c
113
115
114
116
### Protocol IP
115
117
116
-
Unique /32 from protocol subnet.
118
+
Unique /32 from protocol subnet (`config.fabric.protocolSubnet`).
117
119
118
-
Example: 172.30.8.3/32
120
+
Example: 172.30.8.3/32 (from 172.30.8.0/24)
119
121
120
122
### VTEP IP
121
123
122
-
Unique /32 from VTEP subnet.
124
+
Unique /32 from VTEP subnet (`config.fabric.vtepSubnet`).
123
125
124
-
Example: 172.30.12.3/32
126
+
Example: 172.30.12.3/32 (from 172.30.12.0/24)
125
127
126
128
### Fabric Link IPs
127
129
128
-
Unique /31 pairs from fabric subnet (one pair per uplink).
130
+
Unique /31 pairs from fabric subnet (`config.fabric.fabricSubnet`, one pair per uplink).
1. Must match `config.gateway.asn` from Fabricator configuration (use `kubectl get fabricator -n fab -o jsonpath='{.items[0].spec.config.gateway.asn}'`)
243
+
2. Allocate a unique /32 from `config.fabric.protocolSubnet` (BGP router ID)
244
+
3. Allocate a unique /32 from `config.fabric.vtepSubnet` (VXLAN tunnel endpoint)
245
+
4. MAC address for VTEP - any valid MAC address (e.g., 02:00:00:00:01:02)
246
+
5. Interface name must match the physical network interface on the gateway hardware and the `gateway.port` in the Connection resource
247
+
6. Must match the `gateway.ip` from the corresponding Connection resource (gateway-connections.yaml line 11)
248
+
7. Interface name for the second uplink
249
+
8. Must match the `gateway.ip` from the corresponding Connection resource (gateway-connections.yaml line 26)
250
+
9. Switch ASN - get from `kubectl get switches -o custom-columns=NAME:.metadata.name,ASN:.spec.asn` for leaf-01
251
+
10. Must match the `switch.ip` from the corresponding Connection resource (gateway-connections.yaml line 10)
252
+
11. Must match the interface name defined above
253
+
12. Switch ASN for the second uplink - get from `kubectl get switches` for leaf-02
254
+
13. Must match the `switch.ip` from the corresponding Connection resource (gateway-connections.yaml line 25)
255
+
14. Must match the interface name for the second uplink
256
+
15. Number of dataplane worker threads (typically 8)
257
+
258
+
Apply the Gateway resource to the cluster:
233
259
234
-
* `asn` - Must match `config.gateway.asn` from Fabricator configuration (typically 65534)
235
-
* `protocolIP` - Unique /32 from protocol subnet for BGP router ID
236
-
* `vtepIP` - Unique /32 from VTEP subnet for VXLAN tunnel endpoint
237
-
* `vtepMAC` - MAC address for VTEP (use format CA:FE:BA:BE:XX:XX with unique last two octets)
238
-
* `interfaces` - Each interface must have IPs matching the gateway side of the Connections
239
-
* `neighbors` - BGP neighbors with switch ASNs and IPs from switch side of Connections
240
-
* `workers` - Number of dataplane worker threads (typically 8)
260
+
```bash
261
+
kubectl apply -f gateway.yaml
262
+
```
241
263
242
-
The interface names (enp2s1, enp2s2) must match physical network interfaces on the gateway hardware. For kernel driver
243
-
(default), use standard Linux interface names. For DPDK driver, configure PCI addresses.
264
+
!!! note
265
+
The interface names (enp2s1, enp2s2) must match physical network interfaces on the gateway hardware. For kernel driver
266
+
(default), use standard Linux interface names. For DPDK driver, configure PCI addresses.
0 commit comments